def METHOD_NAME(lat=None, lon=None, alt=None, time=None):
    """Generates every combination of stacked and unstacked coordinates podpac expects to handle
    Parameters
    -----------
    lat: podpac.core.coordinates.Coordinates1d, optional
        1D coordinate object used to create the Coordinate objects that contain the latitude dimension. By default uses:
        UniformCoord(start=0, stop=2, size=3)
    lon: podpac.core.coordinates.Coordinates1d, optional
        Same as above but for longitude. By default uses:
        UniformCoord(start=2, stop=6, size=3)
    alt: podpac.core.coordinates.Coordinates1d, optional
        Same as above but for longitude. By default uses:
        UniformCoord(start=6, stop=12, size=3)
    time: podpac.core.coordinates.Coordinates1d, optional
        Same as above but for longitude. By default uses:
        UniformCoord(start='2018-01-01T00:00:00', stop='2018-03-01T00:00:00', size=3)
    Returns
    -------
    OrderedDict:
        Dictionary of all the podpac.Core.Coordinate objects podpac expects to handle. The dictionary keys is a tuple of
        coordinate dimensions, and the values are the actual Coordinate objects.
    Notes
    ------
    When custom lat, lon, alt, and time 1D coordinates are given, only those with the same number of coordinates are
    stacked together. For example, if lat, lon, alt, and time have sizes 3, 4, 5, and 6, respectively, no stacked
    coordinates are created. Also, no exception or warning is thrown for this case.
    """
    # make the 1D coordinates
    if lat is None:
        lat = ArrayCoordinates1d([0, 1, 2], name="lat")
    if lon is None:
        lon = ArrayCoordinates1d([2, 4, 6], name="lon")
    if alt is None:
        alt = ArrayCoordinates1d([6, 9, 12], name="alt")
    if time is None:
        time = ArrayCoordinates1d(["2018-01-01", "2018-02-01", "2018-03-01"], name="time")
    d = dict([("lat", lat), ("lon", lon), ("alt", alt), ("tim", time)])
    dims_list = get_dims_list()
    # make the stacked coordinates
    for dim in [dim for dims in dims_list for dim in dims if "_" in dim]:
        cs = [d[k] for k in dim.split("_")]
        if any(c.size != cs[0].size for c in cs):
            continue  # can't stack these
        d[dim] = StackedCoordinates(cs)
    # make the ND coordinates
    coord_collection = OrderedDict()
    for dims in dims_list:
        if any(dim not in d for dim in dims):
            continue
        coord_collection[dims] = Coordinates([d[dim] for dim in dims])
    return coord_collection