Implement optimized isEmpty()
Make private field and methods protected
Use our own implementation of Map.Entry instead of AbstractMap.SimpleEntry

This allow read through of the value of an entry.