namespace Invercargill { private class PositionQuery : BaseQuery> { public PositionQuery(Enumerable input) { this.input = input; } public override Tracker> get_tracker() { return new PositionTracker(input); } private class PositionTracker : Tracker> { private Tracker base_tracker; private int position; public PositionTracker(Enumerable input) { base_tracker = input.get_tracker(); position = -1; } public override bool has_next() { return base_tracker.has_next(); } public override PositionItemPair get_next() { return new PositionItemPair(++position, base_tracker.get_next()); } } } }