MethodTreeNode(MethodExecutionHistoryTreeNode parent, MethodExecutionInput executionInput) {
   super(
       parent,
       getNodeType(executionInput.getMethodRef().getMethodObjectType()),
       getMethodName(executionInput));
   this.executionInput = executionInput;
 }
 MethodTreeNode getMethodNode(MethodExecutionInput executionInput) {
   String methodName = executionInput.getMethodRef().getMethodName();
   if (!isLeaf())
     for (TreeNode node : getChildren()) {
       MethodTreeNode methodNode = (MethodTreeNode) node;
       if (methodNode.getName().equalsIgnoreCase(methodName)) {
         return methodNode;
       }
     }
   return new MethodTreeNode(this, executionInput);
 }
 SchemaTreeNode getSchemaNode(MethodExecutionInput executionInput) {
   if (!isLeaf())
     for (TreeNode node : getChildren()) {
       SchemaTreeNode schemaNode = (SchemaTreeNode) node;
       if (schemaNode
           .getName()
           .equalsIgnoreCase(executionInput.getMethodRef().getSchemaName())) {
         return schemaNode;
       }
     }
   return new SchemaTreeNode(this, executionInput);
 }
 ProgramTreeNode getProgramNode(MethodExecutionInput executionInput) {
   String programName = executionInput.getMethodRef().getProgramName();
   if (!isLeaf())
     for (TreeNode node : getChildren()) {
       if (node instanceof ProgramTreeNode) {
         ProgramTreeNode programNode = (ProgramTreeNode) node;
         if (programNode.getName().equalsIgnoreCase(programName)) {
           return programNode;
         }
       }
     }
   return new ProgramTreeNode(this, executionInput);
 }
    ConnectionTreeNode getConnectionNode(MethodExecutionInput executionInput) {
      if (!isLeaf())
        for (TreeNode node : getChildren()) {
          ConnectionTreeNode connectionNode = (ConnectionTreeNode) node;
          if (connectionNode
              .getConnectionHandler()
              .getId()
              .equals(executionInput.getMethodRef().getConnectionId())) {
            return connectionNode;
          }
        }

      return new ConnectionTreeNode(this, executionInput);
    }
 SchemaTreeNode(MethodExecutionHistoryTreeNode parent, MethodExecutionInput executionInput) {
   super(parent, NODE_TYPE_SCHEMA, executionInput.getMethodRef().getSchemaName());
 }
 ConnectionTreeNode(MethodExecutionHistoryTreeNode parent, MethodExecutionInput executionInput) {
   super(parent, NODE_TYPE_CONNECTION, null);
   this.connectionHandler = executionInput.getConnectionHandler();
 }
 @Override
 public boolean isValid() {
   return !executionInput.isObsolete();
 }
 int getOverload() {
   return executionInput.getMethodRef().getOverload();
 }
 ProgramTreeNode(MethodExecutionHistoryTreeNode parent, MethodExecutionInput executionInput) {
   super(
       parent,
       getNodeType(executionInput.getMethodRef().getProgramObjectType()),
       executionInput.getMethodRef().getProgramName());
 }