code: public synchronized final Object associateValue(Object key, Object value)
      {
          if (value == null) throw new IllegalArgumentException();
          Map<Object,Object> h = associatedValues;
          if (h == null) {
              h = new HashMap<Object,Object>();
              associatedValues = h;
          }
          return Kit.initHash(h, key, value);
      }
docs: Associate arbitrary application-specific value with this object.
  Value can only be associated with the given object and key only once.
  The method ignores any subsequent attempts to change the already
  associated value.
  <p> The associated values are not serialized.
  @param key key object to select particular value.
  @param value the value to associate
  @return the passed value if the method is called first time for the
  given key or old value for any subsequent calls.
  @see #getAssociatedValue(Object key)