| traverseObjectPatternComputedProperty(Node, Scope) |  | 0% |  | 0% | 11 | 11 | 32 | 32 | 1 | 1 |
| traverseObjectPatternStringKey(Node, Scope) |  | 0% |  | 0% | 11 | 11 | 28 | 28 | 1 | 1 |
| traverseObjectDefinePropertiesCall(Node, Scope) |  | 0% |  | 0% | 6 | 6 | 18 | 18 | 1 | 1 |
| traverseClassDeclaration(Node, Scope) |  | 0% |  | 0% | 3 | 3 | 19 | 19 | 1 | 1 |
| traverseDefaultValue(Node, Scope) |  | 0% |  | 0% | 4 | 4 | 20 | 20 | 1 | 1 |
| traverseEnhancedFor(Node, Scope) |  | 0% |  | 0% | 5 | 5 | 20 | 20 | 1 | 1 |
| traverseCall(Node, Scope) |   | 43% |   | 50% | 9 | 14 | 11 | 27 | 0 | 1 |
| traverseVanillaForNameDeclarations(Node, Scope) |  | 0% |  | 0% | 5 | 5 | 16 | 16 | 1 | 1 |
| traverseAssign(Node, Scope) |   | 72% |   | 70% | 5 | 13 | 15 | 59 | 0 | 1 |
| traverseObjectDefinePropertiesLiteral(Node, Scope) |  | 0% |  | 0% | 5 | 5 | 16 | 16 | 1 | 1 |
| traverseNode(Node, Scope) |   | 73% |   | 62% | 14 | 31 | 17 | 62 | 0 | 1 |
| traverseArrayPattern(Node, Scope) |  | 0% |  | 0% | 5 | 5 | 10 | 10 | 1 | 1 |
| traverseClassMembers(Node, Scope) |  | 0% |  | 0% | 5 | 5 | 11 | 11 | 1 | 1 |
| maybeRemoveUnusedTrailingParameters(Node, Scope) |  | 0% |  | 0% | 8 | 8 | 18 | 18 | 1 | 1 |
| traverseIncrementOrDecrementOp(Node, Scope) |   | 54% |   | 62% | 4 | 9 | 11 | 26 | 0 | 1 |
| traverseGetProp(Node, Scope) |   | 49% |   | 50% | 3 | 6 | 11 | 24 | 0 | 1 |
| traverseVar(Var) |   | 21% |   | 16% | 6 | 7 | 12 | 15 | 0 | 1 |
| traversePrototypeLiteral(Node, Scope) |  | 0% |  | 0% | 5 | 5 | 12 | 12 | 1 | 1 |
| markUnusedParameters(Node, Scope) |  | 0% |  | 0% | 7 | 7 | 14 | 14 | 1 | 1 |
| traverseClassExpression(Node, Scope) |  | 0% |  | 0% | 2 | 2 | 11 | 11 | 1 | 1 |
| traverseRest(Node, Scope) |  | 0% |  | 0% | 4 | 4 | 9 | 9 | 1 | 1 |
| removeUnreferencedFunctionArgs(Scope) |   | 14% |   | 25% | 2 | 3 | 8 | 10 | 0 | 1 |
| traverseObjectPattern(Node, Scope) |  | 0% |  | 0% | 3 | 3 | 7 | 7 | 1 | 1 |
| canRemoveParameters(Node) |  | 0% |  | 0% | 3 | 3 | 3 | 3 | 1 | 1 |
| traverseClass(Node, Scope) |  | 0% |  | 0% | 2 | 2 | 5 | 5 | 1 | 1 |
| isIndependentlyRemovable(RemoveUnusedCode.Removable) |   | 50% |   | 25% | 8 | 9 | 0 | 4 | 0 | 1 |
| removeUnreferencedVars() |   | 85% |   | 55% | 6 | 11 | 1 | 21 | 0 | 1 |
| isDotPrototypeDotProperty(Node) |  | 0% |  | 0% | 3 | 3 | 1 | 1 | 1 | 1 |
| getVarInfo(Var) |   | 87% |   | 70% | 6 | 11 | 3 | 19 | 0 | 1 |
| traverseObjectLiteral(Node, Scope) |   | 64% |   | 50% | 2 | 3 | 2 | 7 | 0 | 1 |
| removeIndependentlyRemovableProperties() |   | 50% |   | 50% | 1 | 2 | 2 | 4 | 0 | 1 |
| considerForIndependentRemoval(RemoveUnusedCode.Removable) |   | 82% |   | 75% | 2 | 5 | 1 | 12 | 0 | 1 |
| markPropertyNameReferenced(String) |   | 68% |   | 75% | 1 | 3 | 2 | 5 | 0 | 1 |
| isObjectDefinePropertiesSecondArgument(Node) |   | 57% |   | 25% | 2 | 3 | 0 | 2 | 0 | 1 |
| traverseDeclarationStatement(Node, Scope) |   | 91% |   | 83% | 1 | 4 | 1 | 15 | 0 | 1 |
| traverseVanillaFor(Node, Scope) |   | 88% |   | 50% | 1 | 2 | 1 | 12 | 0 | 1 |
| traverseNonPrototypeObjectLiteral(Node, Scope) |   | 85% |   | 75% | 1 | 3 | 1 | 8 | 0 | 1 |
| traverseFunction(Node, Scope) |  | 97% |   | 62% | 3 | 5 | 0 | 14 | 0 | 1 |
| isNameDotPrototype(Node) |  | 88% |   | 83% | 1 | 4 | 0 | 3 | 0 | 1 |
| isDotPrototype(Node) |  | 84% |   | 75% | 1 | 3 | 0 | 1 | 0 | 1 |
| isAssignmentToPrototype(Node) |  | 81% |   | 75% | 1 | 3 | 0 | 1 | 0 | 1 |
| removeExpressionCompletely(Node) |  | 97% |   | 87% | 1 | 5 | 0 | 12 | 0 | 1 |
| isThisDotProperty(Node) |  | 90% |   | 50% | 2 | 3 | 0 | 1 | 0 | 1 |
| RemoveUnusedCode(RemoveUnusedCode.Builder) |  | 100% | | n/a | 0 | 1 | 0 | 21 | 0 | 1 |
| traverseAndRemoveUnusedReferences(Node) |  | 100% |   | 83% | 1 | 4 | 0 | 14 | 0 | 1 |
| traverseCompoundAssign(Node, Scope) |  | 100% |  | 100% | 0 | 4 | 0 | 13 | 0 | 1 |
| traverseInstanceof(Node, Scope) |  | 100% |  | 100% | 0 | 2 | 0 | 11 | 0 | 1 |
| traverseRemovableAssignValue(Node, RemoveUnusedCode.RemovableBuilder, Scope) |  | 100% |  | 100% | 0 | 3 | 0 | 5 | 0 | 1 |
| process(Node, Node) |  | 100% |   | 50% | 1 | 2 | 0 | 5 | 0 | 1 |
| traverseCatch(Node, Scope) |  | 100% | | n/a | 0 | 1 | 0 | 6 | 0 | 1 |
| isLocalDefaultValueAssignment(Node, Node) |  | 100% |  | 100% | 0 | 5 | 0 | 4 | 0 | 1 |
| alreadyRemoved(Node) |  | 100% |  | 100% | 0 | 3 | 0 | 6 | 0 | 1 |
| traverseChildren(Node, Scope) |  | 100% |  | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
| replaceNodeWith(Node, Node) |  | 100% | | n/a | 0 | 1 | 0 | 4 | 0 | 1 |
| getVarForNameNode(Node, Scope) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| traverseNameNode(Node, Scope) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| static {...} |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |