code: @Override
    public VType putOrAdd(KType key, VType putValue, VType incrementValue) {
      assert assigned < mask + 1;
  
      int keyIndex = indexOf(key);
      if (indexExists(keyIndex)) {
        putValue = Intrinsics.<VType> add(Intrinsics.<VType> cast(values[keyIndex]), incrementValue);
        indexReplace(keyIndex, putValue);
      } else {
        indexInsert(keyIndex, key, putValue);
      }
      return putValue;
    }
docs: If <code>key</code> exists, <code>putValue</code> is inserted into the map,
  otherwise any existing value is incremented by <code>additionValue</code>.
  
  @param key
  The key of the value to adjust.
  @param putValue
  The value to put if <code>key</code> does not exist.
  @param incrementValue
  The value to add to the existing value if <code>key</code> exists.
  @return Returns the current value associated with <code>key</code> (after
  changes).