public boolean hasNonCompleteNodeTokenParent() {
   for (ProcessTreeNode currentParent : parents) {
     if (currentParent != null
         && currentParent.getToken() != null
         && !currentParent.getToken().isComplete()) {
       return true;
     }
   }
   return false;
 }
  public NodeToken getParentToken() {
    ProcessTreeNode current = parent;

    while (current != null) {
      if (current.getToken() == null) {
        current = current.getParent();
      } else {
        return current.getToken();
      }
    }

    return token;
  }
  public boolean hasLowerParent(ProcessTreeNode selectedParent) {
    for (ProcessTreeNode currentParent : parents) {
      if (currentParent == selectedParent || currentParent == this) {
        continue;
      }

      if ((currentParent.getDepth() > selectedParent.getDepth() || currentParent.getDepth() == -1)
          && !isAncestor(currentParent)) {
        return true;
      }
    }
    return false;
  }