(@Nullable K key, @Nullable V value, boolean force)
| 130 | } |
| 131 | |
| 132 | private V putInBothMaps(@Nullable K key, @Nullable V value, boolean force) { |
| 133 | checkKey(key); |
| 134 | checkValue(value); |
| 135 | boolean containedKey = containsKey(key); |
| 136 | if (containedKey && Objects.equal(value, get(key))) { |
| 137 | return value; |
| 138 | } |
| 139 | if (force) { |
| 140 | inverse().remove(value); |
| 141 | } else { |
| 142 | checkArgument(!containsValue(value), "value already present: %s", value); |
| 143 | } |
| 144 | V oldValue = delegate.put(key, value); |
| 145 | updateInverseMap(key, containedKey, oldValue, value); |
| 146 | return oldValue; |
| 147 | } |
| 148 | |
| 149 | private void updateInverseMap(K key, boolean containedKey, V oldValue, V newValue) { |
| 150 | if (containedKey) { |
no test coverage detected