def METHOD_NAME(self, tensor_splits, split_as_arg, gc, dc):
    axis, split_info, splits = tensor_splits
    split_as_arg = True
    if split_as_arg:
        input_names = ['input']
        input_tensors = [np.concatenate(splits, axis=axis)]
        kwargs = dict(axis=axis, split=split_info)
    else:
        input_names = ['input', 'split']
        input_tensors = [np.concatenate(splits, axis=axis), split_info]
        kwargs = dict(axis=axis)
    op = core.CreateOperator(
        "Split",
        input_names,
        ['X_{}'.format(i) for i in range(len(split_info))],
        **kwargs
    )
    def split_ref(input, split=split_info):
        s = np.cumsum([0] + list(split))
        return [
            np.array(input.take(np.arange(s[i], s[i + 1]), axis=axis))
            for i in range(len(split))
        ]
    outputs_with_grad = range(len(split_info))
    self.assertDeviceChecks(dc, op, input_tensors, outputs_with_grad)
    self.assertGradientChecks(gc, op, input_tensors, 0, outputs_with_grad)