async def METHOD_NAME(args: FreqCalcArgs) -> FreqCalcResult:
    data, cache_path = await find_cached_result(args)
    if data is None:
        data: FreqCalcResult = await func(args)
        async with aiofiles.open(cache_path, 'w') as fw:
            common_md = CommonMetadata(num_blocks=len(data.freqs), conc_size=data.conc_size)
            await fw.write(json.dumps(common_md.to_dict()) + '\n')
            for freq in data.freqs:
                block_md = BlockMetadata(
                    head=[_Head(**x) for x in freq.Head],
                    skipped_empty=freq.SkippedEmpty,
                    no_rel_sorting=freq.NoRelSorting,
                    size=len(freq.Items))
                await fw.write(json.dumps(block_md.to_dict()) + '\n')
                for item in freq.Items:
                    await fw.write(json.dumps(item.to_dict()) + '\n')
    return data