def create_from_discriminator_value(parse_node: ParseNode) -> IpRange:
        """
        Creates a new instance of the appropriate class based on discriminator value
        param parse_node: The parse node to use to read the discriminator value and create the object
        Returns: IpRange
        """
        if parse_node is None:
            raise TypeError("parse_node cannot be null.")
        try:
            child_node = parse_node.get_child_node("@odata.type")
            mapping_value = child_node.get_str_value() if child_node else None
        except AttributeError:
            mapping_value = None
        if mapping_value and mapping_value.casefold() == "#microsoft.graph.iPv4CidrRange".casefold():
            from .i_pv4_cidr_range import IPv4CidrRange

            return IPv4CidrRange()
        if mapping_value and mapping_value.casefold() == "#microsoft.graph.iPv4Range".casefold():
            from .i_pv4_range import IPv4Range

            return IPv4Range()
        if mapping_value and mapping_value.casefold() == "#microsoft.graph.iPv6CidrRange".casefold():
            from .i_pv6_cidr_range import IPv6CidrRange

            return IPv6CidrRange()
        if mapping_value and mapping_value.casefold() == "#microsoft.graph.iPv6Range".casefold():
            from .i_pv6_range import IPv6Range

            return IPv6Range()
        return IpRange()

        Creates a new instance of the appropriate class based on discriminator value
        param parse_node: The parse node to use to read the discriminator value and create the object
        Returns: IpRange
        
msgraph/generated/models/ip_range.py