def METHOD_NAME():
    required_data_stream = get_consumed_data_stream_id()
    required_data_stream_major = int(required_data_stream.split('.', 1)[0])
    # The assets are collected according to why are they considered incompatible, so that a single report is created
    # for every class
    IncompatibleAssetsByType = namedtuple('IncompatibleAssets', ('outdated', 'too_new', 'malformed', 'unknown'))
    incompatible_assets = IncompatibleAssetsByType(outdated=[], too_new=[], malformed=[], unknown=[])
    datastream_version_re = re.compile(r'\d+\.\d+$')
    for consumed_asset in api.consume(ConsumedDataAsset):
        if consumed_asset.provided_data_streams is None:  # There is no provided_data_streams field
            # Most likely an old file that predates the introduction of versioning to data assets
            incompatible_assets.outdated.append(consumed_asset)
            continue
        # Ignore minor stream numbers and search only for a stream matching the same major number
        if all((datastream_version_re.match(stream) for stream in consumed_asset.provided_data_streams)):
            provided_major_data_streams = sorted(
                int(stream.split('.', 1)[0]) for stream in consumed_asset.provided_data_streams
            )
        else:
            incompatible_assets.malformed.append(consumed_asset)
            continue
        if required_data_stream_major in provided_major_data_streams:
            continue
        if not provided_major_data_streams:
            # The field contained [], or something that was not a list, but it was corrected to [] to satisfy model
            incompatible_assets.malformed.append(consumed_asset)
            continue
        if required_data_stream_major > max(provided_major_data_streams):
            incompatible_assets.outdated.append(consumed_asset)
        elif required_data_stream_major < min(provided_major_data_streams):
            incompatible_assets.too_new.append(consumed_asset)
        else:
            # Since the `provided_data_vers` is a list of values, it is possible that the asset provide, e.g., 4.0
            # and 6.0,  but the leapp consumes 5.0, thus we need to be careful when to say that an asset is too
            # new/outdated/none.
            incompatible_assets.unknown.append(consumed_asset)
    report_incompatible_assets(incompatible_assets)
    report_malformed_assets(incompatible_assets.malformed)