docs: @Override
  	public Iterator<Entry<K, V>> iterator() {
  		return new Iterator<Entry<K, V>>() {
  
  			private final Entry<K, V>[] tab = KeyMap.this.table;
  
  			private Entry<K, V> nextEntry;
  
  			private int nextPos = 0;
  
  			@Override
  			public boolean hasNext() {
  				if (nextEntry != null) {
  					return true;
  				}
  				else {
  					while (nextPos < tab.length) {
  						Entry<K, V> e = tab[nextPos++];
  						if (e != null) {
  							nextEntry = e;
  							return true;
  						}
  					}
  					return false;
  				}
  			}
  
  			@Override
  			public Entry<K, V> next() {
  				if (nextEntry != null || hasNext()) {
  					Entry<K, V> e = nextEntry;
  					nextEntry = nextEntry.next;
  					return e;
  				}
  				else {
  					throw new NoSuchElementException();
  				}
  			}
  
  			@Override
  			public void remove() {
  				throw new UnsupportedOperationException();
  			}
  		};
  	}