code: public Object put(Object key, Object value) {
      // Make sure the value is not null
      if (value == null) {
        throw new NullPointerException();
      }
  
      // Makes sure the key is not already in the hashtable.
      FastHashtableEntry tab[] = table;
      int hash = key.hashCode();
      int index = (hash & 0x7FFFFFFF) % tab.length;
      for (FastHashtableEntry e = tab[index] ; e != null ; e = e.next) {
        if ((e.hash == hash) && e.key.equals(key)) {
          Object old = e.value;
          e.value = value;
          return old;
        }
      }
  
      if (count >= threshold) {
        // Rehash the table if the threshold is exceeded
        rehash();
        return put(key, value);
      }
  
      // Creates the new entry.
      FastHashtableEntry e = new FastHashtableEntry();
      e.hash = hash;
      e.key = key;
      e.value = value;
      e.next = tab[index];
      tab[index] = e;
      count++;
      return null;
    }
docs: Maps the specified <code>key</code> to the specified
  <code>value</code> in this hashtable. Neither the key nor the
  value can be <code>null</code>.
  <p>
  The value can be retrieved by calling the <code>get</code> method
  with a key that is equal to the original key.
  
  @param      key     the hashtable key.
  @param      value   the value.
  @return     the previous value of the specified key in this hashtable,
  or <code>null</code> if it did not have one.
  @exception  NullPointerException  if the key or value is
  <code>null</code>.
  @see     java.lang.Object#equals(java.lang.Object)
  @see     java.util.Hashtable#get(java.lang.Object)
  @since   JDK1.0