@SuppressWarnings("unchecked") @Override public <E extends Entry<K, V>> E put(E entry) { if (entry.getKey() == null) { return updateNullEntry(entry); } if (entry.getValue() == null) { return remove(entry.getKey()); } Object result = root.put(conf, entry); if (result == null) { this.size++; return null; } if (result instanceof Split) { Split<K, V> split = (Split<K, V>) result; this.root = new InnerNode<K, V>(conf, root, split.getKey(), split.getGreater()); this.size++; return null; } else { return (E) result; } }