IndexRange reverse(IndexRange arg) { if (arg.empty()) { return arg; } else { if (arg.start() < arg.end()) { return IndexRange::between(arg.end() - 1, arg.start() - 1); } else { return IndexRange::between(arg.end() + 1, arg.start() + 1); } } }