public synchronized V[] remove(K key, V value) {
    V[] newValues = myKey2Values.computeIfPresent(key, (k, vs) -> {
      V[] removed = ArrayUtil.remove(vs, value, arrayFactory());
      if (removed.length == 0) return null;
      return removed;
    });
    myValue2Keys.remove(value);
    return newValues;
  }
public synchronized V[] remove(K key, V value)