def METHOD_NAME(n_cube: int, with_mesh: bool):
    """
    Generate an LFRIc cubesphere-like cube for a given cubesphere size,
    *or* a simpler structured (UM-like) cube of equivalent size.
    All the cube data, coords and mesh content are LAZY, and produced without
    allocating large real arrays (to allow peak-memory testing).
    NOTE: the actual cube generation is done in a stable Iris environment via
    benchmarks.remote_data_generation, so it is all channeled via cached netcdf
    files in our common testdata directory.
    """
    identifying_filename = (
        f"cube_like_2d_cubesphere_C{n_cube}_Mesh={with_mesh}.nc"
    )
    filepath = BENCHMARK_DATA / identifying_filename
    if not filepath.exists():
        # Create the required testfile, by running the generation code remotely
        #  in a 'fixed' python environment.
        run_function_elsewhere(
            generate_cube_like_2d_cubesphere,
            n_cube,
            with_mesh=with_mesh,
            output_path=str(filepath),
        )
    # File now *should* definitely exist: content is simply the desired cube.
    with PARSE_UGRID_ON_LOAD.context():
        cube = iris_loadcube(str(filepath))
    # Ensure correct laziness.
    _ = cube.data
    for coord in cube.coords(mesh_coords=False):
        assert not coord.has_lazy_points()
        assert not coord.has_lazy_bounds()
    if cube.mesh:
        for coord in cube.mesh.coords():
            assert coord.has_lazy_points()
        for conn in cube.mesh.connectivities():
            assert conn.has_lazy_indices()
    return cube