code: public long keyOf(final Object value) {
  	final long[] foundKey = new long[1];
  	boolean notFound = forEachPair(
  		new LongObjectProcedure() {
  			public boolean apply(long iterKey, Object iterValue) {
  				boolean found = value == iterValue;
  				if (found) foundKey[0] = iterKey;
  				return !found;
  			}
  		}
  	);
  	if (notFound) return Long.MIN_VALUE;
  	return foundKey[0];
  }
docs: Returns the first key the given value is associated with.
  It is often a good idea to first check with {@link #containsValue(Object)} whether there exists an association from a key to this value.
  Search order is guaranteed to be <i>identical</i> to the order used by method {@link #forEachKey(LongProcedure)}.
  
  @param value the value to search for.
  @return the first key for which holds <tt>get(key) == value</tt>;
  returns <tt>Long.MIN_VALUE</tt> if no such key exists.