def METHOD_NAME(cls, op):
    x, y = op.x, op.y
    if len(x.chunks) == 1 and len(y.chunks) == 1:
        return cls._tile_one_chunk(op)
    if x.issparse() or y.issparse():
        assert op.sum_over_features
        return cls._tile_chunks(op, x, y)
    elif op.sum_over_features:
        # if x, y are not sparse and `sum_over_features` is True
        # just use cdist
        return [(yield from recursive_tile(cdist(x, y, "cityblock")))]
    else:
        d = x[:, np.newaxis, :] - y[np.newaxis, :, :]
        d = mt_abs(d)
        d = d.reshape((-1, x.shape[1]))
        return [(yield from recursive_tile(d))]