code: Node findParentNode(String fqn, StringHolder child_name, boolean create_if_not_exists) {
          Node curr=root, node;
          StringTokenizer tok;
          String name;
          StringBuilder sb=null;
  
          if(fqn == null || fqn.equals(SEPARATOR) || fqn != null && fqn.isEmpty())
              return curr;
  
          sb=new StringBuilder();
          tok=new StringTokenizer(fqn, SEPARATOR);
          while(tok.countTokens() > 1) {
              name=tok.nextToken();
              sb.append(SEPARATOR).append(name);
              node=curr.getChild(name);
              if(node == null && create_if_not_exists)
                  node=curr.createChild(name, sb.toString(), null, null);
              if(node == null)
                  return null;
              else
                  curr=node;
          }
  
          if(tok.countTokens() > 0 && child_name != null)
              child_name.setValue(tok.nextToken());
          return curr;
      }
docs: Find the node just <em>above</em> the one indicated by {@code fqn}. This is needed in many cases,
  e.g. to add a new node or remove an existing node.
  @param fqn The fully qualified name of the node.
  @param child_name Will be filled with the name of the child when this method returns. The child name
  is the last relative name of the {@code fqn}, e.g. in "/a/b/c" it would be "c".
  @param create_if_not_exists Create parent nodes along the way if they don't exist. Otherwise, this method
  will return when a node cannot be found.