'Imitate CompiledObject.obj behavior and return a ``builtin.slice()``
object.'

@property
def obj(self):

    def get(element):
        if (element is None):
            return None
        result = self._context.eval_node(element)
        if (len(result) != 1):
            raise IndexError
        try:
            return list(result)[0].obj
        except AttributeError:
            return None
    try:
        return slice(get(self._start), get(self._stop), get(self._step))
    except IndexError:
        return slice(None, None, None)
