| doRedBlackDeleteFixup(TreeBidiMap.Node, TreeBidiMap.DataElement) |  | 0% |  | 0% | 12 | 12 | 47 | 47 | 1 | 1 |
| swapPosition(TreeBidiMap.Node, TreeBidiMap.Node, TreeBidiMap.DataElement) |  | 0% |  | 0% | 19 | 19 | 52 | 52 | 1 | 1 |
| doRedBlackInsert(TreeBidiMap.Node, TreeBidiMap.DataElement) |  | 0% |  | 0% | 11 | 11 | 36 | 36 | 1 | 1 |
| doRedBlackDelete(TreeBidiMap.Node) |  | 0% |  | 0% | 13 | 13 | 27 | 27 | 1 | 1 |
| doPut(Comparable, Comparable) |   | 31% |   | 10% | 5 | 6 | 23 | 34 | 0 | 1 |
| insertValue(TreeBidiMap.Node) |  | 0% |  | 0% | 5 | 5 | 20 | 20 | 1 | 1 |
| doToString(TreeBidiMap.DataElement) |  | 0% |  | 0% | 6 | 6 | 18 | 18 | 1 | 1 |
| rotateLeft(TreeBidiMap.Node, TreeBidiMap.DataElement) |  | 0% |  | 0% | 4 | 4 | 13 | 13 | 1 | 1 |
| rotateRight(TreeBidiMap.Node, TreeBidiMap.DataElement) |  | 0% |  | 0% | 4 | 4 | 13 | 13 | 1 | 1 |
| doEquals(Object, TreeBidiMap.DataElement) |  | 0% |  | 0% | 7 | 7 | 18 | 18 | 1 | 1 |
| nextGreater(TreeBidiMap.Node, TreeBidiMap.DataElement) |  | 0% |  | 0% | 5 | 5 | 11 | 11 | 1 | 1 |
| nextSmaller(TreeBidiMap.Node, TreeBidiMap.DataElement) |  | 0% |  | 0% | 5 | 5 | 11 | 11 | 1 | 1 |
| readObject(ObjectInputStream) |  | 0% |  | 0% | 2 | 2 | 8 | 8 | 1 | 1 |
| doHashCode(TreeBidiMap.DataElement) |  | 0% |  | 0% | 3 | 3 | 8 | 8 | 1 | 1 |
| writeObject(ObjectOutputStream) |  | 0% |  | 0% | 2 | 2 | 7 | 7 | 1 | 1 |
| lookup(Object, TreeBidiMap.DataElement) |   | 33% |   | 16% | 3 | 4 | 6 | 10 | 0 | 1 |
| putAll(Map) |  | 0% |  | 0% | 2 | 2 | 4 | 4 | 1 | 1 |
| getMapIterator(TreeBidiMap.DataElement) |  | 0% |  | 0% | 3 | 3 | 4 | 4 | 1 | 1 |
| clear() |  | 0% | | n/a | 1 | 1 | 5 | 5 | 1 | 1 |
| firstKey() |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| lastKey() |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| nextKey(Comparable) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| previousKey(Comparable) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| greatestNode(TreeBidiMap.Node, TreeBidiMap.DataElement) |  | 0% |  | 0% | 3 | 3 | 5 | 5 | 1 | 1 |
| leastNode(TreeBidiMap.Node, TreeBidiMap.DataElement) |  | 0% |  | 0% | 3 | 3 | 5 | 5 | 1 | 1 |
| copyColor(TreeBidiMap.Node, TreeBidiMap.Node, TreeBidiMap.DataElement) |  | 0% |  | 0% | 3 | 3 | 5 | 5 | 1 | 1 |
| keySet() |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| values() |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| checkNonNullComparable(Object, TreeBidiMap.DataElement) |   | 42% |   | 50% | 1 | 2 | 1 | 4 | 0 | 1 |
| entrySet() |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| mapIterator() |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| isBlack(TreeBidiMap.Node, TreeBidiMap.DataElement) |  | 0% |  | 0% | 3 | 3 | 1 | 1 | 1 | 1 |
| isRed(TreeBidiMap.Node, TreeBidiMap.DataElement) |  | 0% |  | 0% | 3 | 3 | 1 | 1 | 1 | 1 |
| containsKey(Object) |  | 0% |  | 0% | 2 | 2 | 2 | 2 | 1 | 1 |
| containsValue(Object) |  | 0% |  | 0% | 2 | 2 | 2 | 2 | 1 | 1 |
| shrink() |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| getGrandParent(TreeBidiMap.Node, TreeBidiMap.DataElement) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getLeftChild(TreeBidiMap.Node, TreeBidiMap.DataElement) |  | 0% |  | 0% | 2 | 2 | 1 | 1 | 1 | 1 |
| getParent(TreeBidiMap.Node, TreeBidiMap.DataElement) |  | 0% |  | 0% | 2 | 2 | 1 | 1 | 1 | 1 |
| getRightChild(TreeBidiMap.Node, TreeBidiMap.DataElement) |  | 0% |  | 0% | 2 | 2 | 1 | 1 | 1 | 1 |
| isEmpty() |  | 0% |  | 0% | 2 | 2 | 1 | 1 | 1 | 1 |
| doRemoveKey(Object) |   | 57% |   | 50% | 1 | 2 | 2 | 5 | 0 | 1 |
| doRemoveValue(Object) |   | 57% |   | 50% | 1 | 2 | 2 | 5 | 0 | 1 |
| makeBlack(TreeBidiMap.Node, TreeBidiMap.DataElement) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| makeRed(TreeBidiMap.Node, TreeBidiMap.DataElement) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| TreeBidiMap(Map) |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| equals(Object) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| compare(Comparable, Comparable) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| hashCode() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| remove(Object) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| toString() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| size() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| get(Object) |  | 84% |   | 50% | 1 | 2 | 0 | 3 | 0 | 1 |
| getKey(Object) |  | 84% |   | 50% | 1 | 2 | 0 | 3 | 0 | 1 |
| inverseBidiMap() |  | 100% |   | 50% | 1 | 2 | 0 | 3 | 0 | 1 |
| put(Comparable, Comparable) |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| grow() |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| TreeBidiMap() |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| modify() |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| checkKeyAndValue(Object, Object) |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| lookupKey(Object) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lookupValue(Object) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| checkKey(Object) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| checkValue(Object) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| removeValue(Object) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |