code: def _supported_types_for_metadata(metadata):
      
      numtypes = set()
      for numtype in PhoneNumberType.values():
          if numtype in (PhoneNumberType.FIXED_LINE_OR_MOBILE, PhoneNumberType.UNKNOWN):
              # Never return FIXED_LINE_OR_MOBILE (it is a convenience type, and represents that a
              # particular number type can't be determined) or UNKNOWN (the non-type).
              continue
          if _desc_has_data(_number_desc_by_type(metadata, numtype)):
              numtypes.add(numtype)
      return numtypes
docs: Returns the types we have metadata for based on the PhoneMetadata object passed in, which must be non-None.