public Iterator<IntPair> iterator() {
      final Iterator<IntPair> parentIter = parent.iterator();
      return new Iterator<IntPair>() {
        public boolean hasNext() {
          return parentIter.hasNext();
        }

        public IntPair next() {
          IntPair parentPair = parentIter.next();
          return new IntPair(parentPair.target, parentPair.source);
        }

        public void remove() {
          parentIter.remove();
        }
      };
    }