V (Object key, V defaultValue) { if (key == null) return defaultValue; @SuppressWarnings("unchecked") K typedKey = (K)key; if (k1 != null) { if (strategy.equals(k1, typedKey)) { return v1; } if (k2 != null) { if (strategy.equals(k2, typedKey)) { return v2; } if (k3 != null) { if (strategy.equals(k3, typedKey)) { return v3; } } } } if (data.length == 0) return defaultValue; int pos = tablePos(strategy, data, typedKey); @SuppressWarnings("unchecked") V v = pos < 0 ? defaultValue : (V)data[pos + 1]; return v; }