docs: 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;
    }