docs: public SpecNode getClosestSpecNodeByTargetId(final String targetId, final SpecNode callerNode, final boolean checkParentNode) {
          /*
           * Check this level to see if the topic exists
           */
          final List<Node> children = getChildNodes();
          for (final Node childNode : children) {
              if (childNode instanceof SpecNode) {
                  final SpecNode specNode = (SpecNode) childNode;
                  if (specNode.getTargetId() != null && specNode.getTargetId().equals(targetId)) {
                      return specNode;
                  }
              }
          }
  
          /*
           * If we get to this stage, then the topic wasn't directly at this level. So we should try this levels, child levels
           * first.
           */
          final List<Level> childLevels = getChildLevels();
          for (final Level childLevel : childLevels) {
              if (childLevel == callerNode) {
                  continue;
              } else {
                  final SpecNode childLevelNode = childLevel.getClosestSpecNodeByTargetId(targetId, callerNode, false);
                  if (childLevelNode != null) {
                      return childLevelNode;
                  }
              }
          }
  
          /*
           * If we still haven't found the closest node then check this nodes parents.
           */
          if (getParent() != null && checkParentNode) {
              return getParent().getClosestSpecNodeByTargetId(targetId, this, checkParentNode);
          }
  
          return null;
      }