code: public Iterator<Writable> iterator() {
      final TupleWritable t = this;
      return new Iterator<Writable>() {
        long i = written;
        long last = 0L;
        public boolean hasNext() {
          return 0L != i;
        }
        public Writable next() {
          last = Long.lowestOneBit(i);
          if (0 == last)
            throw new NoSuchElementException();
          i ^= last;
          // numberOfTrailingZeros rtn 64 if lsb set
          return t.get(Long.numberOfTrailingZeros(last) % 64);
        }
        public void remove() {
          t.written ^= last;
          if (t.has(Long.numberOfTrailingZeros(last))) {
            throw new IllegalStateException("Attempt to remove non-existent val");
          }
        }
      };
    }
docs: Return an iterator over the elements in this tuple.
  Note that this doesn't flatten the tuple; one may receive tuples
  from this iterator.