in src/main/java/org/apache/commons/collections4/map/Flat3Map.java [931:1005]
public V put(final K key, final V value) {
if (delegateMap != null) {
return delegateMap.put(key, value);
}
// change existing mapping
if (key == null) {
switch (size) { // drop through
case 3:
if (key3 == null) {
final V old = value3;
value3 = value;
return old;
}
case 2:
if (key2 == null) {
final V old = value2;
value2 = value;
return old;
}
case 1:
if (key1 == null) {
final V old = value1;
value1 = value;
return old;
}
}
} else if (size > 0) {
final int hashCode = key.hashCode();
switch (size) { // drop through
case 3:
if (hash3 == hashCode && key.equals(key3)) {
final V old = value3;
value3 = value;
return old;
}
case 2:
if (hash2 == hashCode && key.equals(key2)) {
final V old = value2;
value2 = value;
return old;
}
case 1:
if (hash1 == hashCode && key.equals(key1)) {
final V old = value1;
value1 = value;
return old;
}
}
}
// add new mapping
switch (size) {
case 2:
hash3 = key == null ? 0 : key.hashCode();
key3 = key;
value3 = value;
break;
case 1:
hash2 = key == null ? 0 : key.hashCode();
key2 = key;
value2 = value;
break;
case 0:
hash1 = key == null ? 0 : key.hashCode();
key1 = key;
value1 = value;
break;
default:
convertToMap();
delegateMap.put(key, value);
return null;
}
size++;
return null;
}