code: public <T> boolean remove(Key<T> key, T value) {
      Preconditions.checkNotNull(key, "key");
      Preconditions.checkNotNull(value, "value");
      for (int i = 0; i < size; i++) {
        if (!bytesEqual(key.asciiName(), name(i))) {
          continue;
        }
        @SuppressWarnings("unchecked")
        T stored = key.parseBytes(value(i));
        if (!value.equals(stored)) {
          continue;
        }
        int writeIdx = i * 2;
        int readIdx = (i + 1) * 2;
        int readLen = len() - readIdx;
        System.arraycopy(namesAndValues, readIdx, namesAndValues, writeIdx, readLen);
        size -= 1;
        name(size, null);
        value(size, null);
        return true;
      }
      return false;
    }
docs: Removes the first occurrence of {@code value} for {@code key}.
  
  @param key key for value
  @param value value
  @return {@code true} if {@code value} removed; {@code false} if {@code value} was not present
  @throws NullPointerException if {@code key} or {@code value} is null