| toString() |  | 0% |  | 0% | 2 | 2 | 1 | 1 | 1 | 1 |
| _childrenOf(Object) |   | 57% |   | 62% | 3 | 5 | 6 | 13 | 0 | 1 |
| getChild(Object, int) |   | 51% |   | 50% | 2 | 3 | 1 | 4 | 0 | 1 |
| _warnAboutIdType(Object, Class) |  | 0% |  | 0% | 2 | 2 | 6 | 6 | 1 | 1 |
| idType() |   | 70% |   | 41% | 6 | 7 | 8 | 18 | 0 | 1 |
| valueForPathChanged(TreePath, Object) |   | 86% |   | 66% | 4 | 7 | 5 | 26 | 0 | 1 |
| idTupleOf(TreePath, Class) |   | 83% |   | 75% | 2 | 5 | 3 | 13 | 0 | 1 |
| applyNewValue(Object) |   | 83% |   | 87% | 1 | 5 | 4 | 19 | 0 | 1 |
| _announceSettledSelection() |   | 69% |  | 100% | 0 | 2 | 2 | 6 | 0 | 1 |
| removeTreeModelListener(TreeModelListener) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| getIndexOfChild(Object, Object) |   | 92% |   | 70% | 3 | 6 | 2 | 12 | 0 | 1 |
| _syncNode(TreeNodeRef, Object, Object, List) |   | 91% |   | 70% | 3 | 6 | 2 | 12 | 0 | 1 |
| _isExpanded(TreeNodeRef) |   | 80% |   | 66% | 2 | 4 | 2 | 6 | 0 | 1 |
| _canonicalChild(TreeNodeRef, Object, int) |   | 94% |   | 83% | 1 | 4 | 1 | 12 | 0 | 1 |
| valueOf(Object) |   | 85% |   | 75% | 1 | 3 | 0 | 4 | 0 | 1 |
| pathForIds(Object[]) |   | 97% |   | 93% | 1 | 9 | 1 | 20 | 0 | 1 |
| _syncChildren(TreeNodeRef, Tuple, Tuple, List) |   | 96% |   | 91% | 1 | 7 | 1 | 14 | 0 | 1 |
| _captureExpandedIdPaths(JTree) |   | 95% |   | 70% | 3 | 6 | 1 | 14 | 0 | 1 |
| _captureSelectedIdPaths(JTree) |   | 95% |   | 75% | 2 | 5 | 1 | 11 | 0 | 1 |
| _sameIdPaths(List, List) |   | 93% |   | 83% | 1 | 4 | 1 | 6 | 0 | 1 |
| pathForIdTuple(Tuple) |   | 92% |   | 75% | 1 | 3 | 1 | 6 | 0 | 1 |
| propertyFor(Object[], Object) |   | 90% |   | 50% | 2 | 3 | 1 | 4 | 0 | 1 |
| _treeOrNull() |   | 81% |   | 50% | 1 | 2 | 0 | 2 | 0 | 1 |
| _rebuildEverything() |   | 98% |   | 83% | 1 | 4 | 0 | 18 | 0 | 1 |
| _warnAboutDuplicateSiblingIds(Object, int, int) |   | 97% |   | 50% | 1 | 2 | 1 | 6 | 0 | 1 |
| _fireStructureChanged(TreePath) |   | 97% |   | 75% | 1 | 3 | 1 | 6 | 0 | 1 |
| _restoreExpanded(JTree, List) |   | 95% |   | 83% | 1 | 4 | 1 | 8 | 0 | 1 |
| PropertyTreeModel(Val, TreeRoots, TreeConf, boolean, EventProcessor) |  | 100% |   | 66% | 2 | 4 | 0 | 15 | 0 | 1 |
| _fireNodeChanged(TreeNodeRef) |  | 100% |  | 100% | 0 | 3 | 0 | 8 | 0 | 1 |
| isLeaf(Object) |  | 100% |  | 100% | 0 | 7 | 0 | 12 | 0 | 1 |
| _restoreSelection(JTree, List) |  | 100% |   | 90% | 1 | 6 | 0 | 11 | 0 | 1 |
| _syncTopLevel(TreeNodeRef, Object, Object, List) |  | 100% |   | 87% | 1 | 5 | 0 | 7 | 0 | 1 |
| _newRootRef() |  | 100% |  | 100% | 0 | 3 | 0 | 9 | 0 | 1 |
| _isForestHandle(Object) |  | 100% |   | 75% | 1 | 3 | 0 | 1 | 0 | 1 |
| onAfterRestructure(Runnable) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| lambda$valueForPathChanged$1(Var, TreePathLens, Object) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| attachTo(JTree) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| isWritable() |  | 100% |  | 100% | 0 | 2 | 0 | 1 | 0 | 1 |
| ruleOf(Object) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| _rootNodes() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| addTreeModelListener(TreeModelListener) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| getChildCount(Object) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$valueForPathChanged$0(TreePathLens, Object, Object) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| isForest() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| static {...} |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| conf() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getRoot() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| isRestructuring() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$_captureExpandedIdPaths$2(Object[]) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |