public Iterator iterateHashCode(final int hash) {
		// /#ifdef JDK12
		cleanUp();
		// /#endif
		return new Iterator() {
			private int known = modCount;
			private Bucket nextBucket = buckets[Math.abs(hash % buckets.length)];
			private Object nextVal;

			{
				internalNext();
			}

			private void internalNext() {
				while (nextBucket != null) {
					if (nextBucket.hash == hash) {
						nextVal = nextBucket.get();
						if (nextVal != null)
							return;
					}

					nextBucket = nextBucket.next;
				}
			}

			public boolean hasNext() {
				return nextBucket != null;
			}

			public Object next() {
				if (known != modCount)
					throw new ConcurrentModificationException();
				if (nextBucket == null)
					throw new NoSuchElementException();
				Object result = nextVal;
				nextBucket = nextBucket.next;
				internalNext();
				return result;
			}

			public void remove() {
				throw new UnsupportedOperationException();
			}
		};
	}