code: public boolean add(Object obj) {
          if (obj == null) {
              obj = NULL;
          }
  
          Entry tab[] = mTable;
          int hash = hashCode(obj);
          int index = (hash & 0x7FFFFFFF) % tab.length;
  
          for (Entry e = tab[index], prev = null; e != null; e = e.mNext) {
              Object iobj = e.get();
              if (iobj == null) {
                  // Clean up after a cleared Reference.
                  if (prev != null) {
                      prev.mNext = e.mNext;
                  }
                  else {
                      tab[index] = e.mNext;
                  }
                  mCount--;
              }
              else if (e.mHash == hash &&
                       obj.getClass() == iobj.getClass() &&
                       equals(obj, iobj)) {
                  // Already in set.
                  return false;
              }
              else {
                  prev = e;
              }
          }
  
          if (mCount >= mThreshold) {
              // Cleanup the table if the threshold is exceeded.
              cleanup();
          }
  
          if (mCount >= mThreshold) {
              // Rehash the table if the threshold is still exceeded.
              rehash();
              tab = mTable;
              index = (hash & 0x7FFFFFFF) % tab.length;
          }
  
          // Create a new entry.
          tab[index] = new Entry((obj == NULL ? new Null() : obj), hash, tab[index]);
          mCount++;
          return true;
      }
docs: Adds the specified element to this set if it is not already
  present.
  
  @param obj element to be added to this set.
  @return <tt>true</tt> if the set did not already contain the specified
  element.