static ImmutableTreeVector<T> slice(ImmutableTreeVector<T>& in, boost::python::slice s) { int32_t start = boost::python::extract<int32_t>(s.start()); if (start < 0) start = in.size() - start; int32_t stop = boost::python::extract<int32_t>(s.stop()); if (stop < 0) stop = in.size() - stop; return in.slice(start, stop); }