/** * Removes the provided node from either the tree it exists in, or, * if this node is a root - from the parent parameter. */ private void removeTree(MemberInvolvementTree tree, List<Parameter> parameters, MethodExpression expression) { if (tree.hasParent()) { tree.cutSelf(); } else { //to restore the original order. Stack<Name> stack = new Stack<>(); stackExpressionElements(stack, expression); //find the relevant parameter. Parameter parameter = getParameter(stack.pop(), parameters); parameter.removeMemeberInvolvementTree(tree.getName()); } }