def METHOD_NAME(self, slc, stop=None, step=None):
    # We need to accept and handle in make_node inputs the node
    # inputs to allow redoing a new op elsewhere in the graph by
    # optimization.
    if isinstance(slc, slice):
        assert stop is None
        assert step is None
        inp = [slc.start, slc.stop, slc.step]
    else:
        inp = [slc, stop, step]
    return Apply(self, list(map(as_int_none_variable, inp)), [slicetype()])