in src/main/java/org/apache/commons/collections4/map/Flat3Map.java [1059:1199]
public V remove(final Object key) {
if (delegateMap != null) {
return delegateMap.remove(key);
}
if (size == 0) {
return null;
}
if (key == null) {
switch (size) { // drop through
case 3:
if (key3 == null) {
final V old = value3;
hash3 = 0;
key3 = null;
value3 = null;
size = 2;
return old;
}
if (key2 == null) {
final V old = value2;
hash2 = hash3;
key2 = key3;
value2 = value3;
hash3 = 0;
key3 = null;
value3 = null;
size = 2;
return old;
}
if (key1 == null) {
final V old = value1;
hash1 = hash3;
key1 = key3;
value1 = value3;
hash3 = 0;
key3 = null;
value3 = null;
size = 2;
return old;
}
return null;
case 2:
if (key2 == null) {
final V old = value2;
hash2 = 0;
key2 = null;
value2 = null;
size = 1;
return old;
}
if (key1 == null) {
final V old = value1;
hash1 = hash2;
key1 = key2;
value1 = value2;
hash2 = 0;
key2 = null;
value2 = null;
size = 1;
return old;
}
return null;
case 1:
if (key1 == null) {
final V old = value1;
hash1 = 0;
key1 = null;
value1 = null;
size = 0;
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;
hash3 = 0;
key3 = null;
value3 = null;
size = 2;
return old;
}
if (hash2 == hashCode && key.equals(key2)) {
final V old = value2;
hash2 = hash3;
key2 = key3;
value2 = value3;
hash3 = 0;
key3 = null;
value3 = null;
size = 2;
return old;
}
if (hash1 == hashCode && key.equals(key1)) {
final V old = value1;
hash1 = hash3;
key1 = key3;
value1 = value3;
hash3 = 0;
key3 = null;
value3 = null;
size = 2;
return old;
}
return null;
case 2:
if (hash2 == hashCode && key.equals(key2)) {
final V old = value2;
hash2 = 0;
key2 = null;
value2 = null;
size = 1;
return old;
}
if (hash1 == hashCode && key.equals(key1)) {
final V old = value1;
hash1 = hash2;
key1 = key2;
value1 = value2;
hash2 = 0;
key2 = null;
value2 = null;
size = 1;
return old;
}
return null;
case 1:
if (hash1 == hashCode && key.equals(key1)) {
final V old = value1;
hash1 = 0;
key1 = null;
value1 = null;
size = 0;
return old;
}
}
}
return null;
}