def METHOD_NAME(sensors=None, x=None, z=None):
    """
    Create crosshole scheme assuming two boreholes with equal sensor numbers.
    Parameters
    ----------
    sensors : array (Nx2)
        Array with position of sensors. Alternatively, specify x and z
    x : iterable [M]
        horizontal positions of boreholes
    z : iterable [M]
        vertical positions of sensors in each borehole
    Returns
    -------
    scheme : DataContainer
        Data container with `sensors` predefined sensor indices 's' and 'g'
        for shot and receiver numbers.
    """
    from itertools import product
    if sensors is None:
        if x is None or z is None:
            raise Exception("Both x and z must be given")
        sensors = np.array([(xi, zi) for zi in z for xi in x])
    if len(sensors) % 2 > 0:
        pg.error("createCrossholeData is only defined for an equal number of"
                 " sensors in two boreholes.")
    n = len(sensors) // 2
    numbers = np.arange(n)
    rays = np.array(list(product(numbers, numbers + n)))
    # Empty container
    scheme = pg.DataContainer()
    # Add sensors
    for sen in sensors:
        scheme.createSensor(sen)
    # Add measurements
    scheme.resize(len(rays))
    scheme["s"] = rays[:, 0]
    scheme["g"] = rays[:, 1]
    scheme["valid"] = np.ones(len(rays))
    scheme.registerSensorIndex("s")
    scheme.registerSensorIndex("g")
    return scheme