docs: private static boolean isNotReparentable(
              NodeInfo ni, Element compViewParent, Element positionSet) {
  
          // This one is easy -- can't re-parent a node with dlm:moveAllowed=false
          if (ni.getNode().getAttribute(Constants.ATT_MOVE_ALLOWED).equals("false")) {
              return true;
          }
  
          try {
              /*
               *  Annoying to do in Java, but we need to find our own placeholder
               *  element in the positionSet
               */
              final XPathFactory xpathFactory = XPathFactory.newInstance();
              final XPath xpath = xpathFactory.newXPath();
              final String findPlaceholderXpath =
                      ".//*[local-name()='position' and @name='" + ni.getId() + "']";
              final XPathExpression findPlaceholder = xpath.compile(findPlaceholderXpath);
              final NodeList findPlaceholderList =
                      (NodeList) findPlaceholder.evaluate(positionSet, XPathConstants.NODESET);
              switch (findPlaceholderList.getLength()) {
                  case 0:
                      LOG.warn(
                              "Node not found for XPathExpression=\""
                                      + findPlaceholderXpath
                                      + "\" in positionSet="
                                      + XmlUtilitiesImpl.toString(positionSet));
                      return true;
                  case 1:
                      // This is healthy
                      break;
                  default:
                      LOG.warn(
                              "More than one node found for XPathExpression=\""
                                      + findPlaceholderXpath
                                      + "\" in positionSet="
                                      + XmlUtilitiesImpl.toString(positionSet));
                      return true;
              }
              final Element placeholder = (Element) findPlaceholderList.item(0); // At last
  
              for (Element nextPlaceholder =
                              (Element)
                                      placeholder
                                              .getNextSibling(); // Start with the next dlm:position
                      // element after placeholder
                      nextPlaceholder != null; // As long as we have a placeholder to look at
                      nextPlaceholder =
                              (Element)
                                      nextPlaceholder
                                              .getNextSibling()) { // Advance to the next placeholder
  
                  if (LOG.isDebugEnabled()) {
                      LOG.debug(
                              "Considering whether node ''"
                                      + ni.getId()
                                      + "' is Reparentable;  subsequent sibling is:  "
                                      + nextPlaceholder.getAttribute("name"));
                  }
  
                  /*
                   * Next task:  we have to find the non-placeholder representation of
                   * the nextSiblingPlaceholder within the compViewParent
                   */
                  final String unmaskPlaceholderXpath =
                          ".//*[@ID='" + nextPlaceholder.getAttribute("name") + "']";
                  final XPathExpression unmaskPlaceholder = xpath.compile(unmaskPlaceholderXpath);
                  final NodeList unmaskPlaceholderList =
                          (NodeList)
                                  unmaskPlaceholder.evaluate(compViewParent, XPathConstants.NODESET);
                  switch (unmaskPlaceholderList.getLength()) {
                      case 0:
                          // Not a problem;  the nextSiblingPlaceholder also refers
                          // to a node that has been moved to this context (afaik)
                          continue;
                      case 1:
                          final Element nextSibling = (Element) unmaskPlaceholderList.item(0);
                          if (LOG.isDebugEnabled()) {
                              LOG.debug(
                                      "Considering whether node ''"
                                              + ni.getId()
                                              + "' is Reparentable;  subsequent sibling '"
                                              + nextSibling.getAttribute("ID")
                                              + "' has dlm:moveAllowed="
                                              + !nextSibling
                                                      .getAttribute(Constants.ATT_MOVE_ALLOWED)
                                                      .equals("false"));
                          }
  
                          // Need to perform some checks...
                          if (nextSibling.getAttribute(Constants.ATT_MOVE_ALLOWED).equals("false")) {
  
                              /*
                               *  The following check is a bit strange;  it seems to verify
                               *  that the current NodeInfo and the nextSibling come from the
                               *  same fragment.  If they don't, the re-parenting is allowable.
                               *  I believe this check could only be unsatisfied in the case
                               *  of tabs.
                               */
                              Precedence p =
                                      Precedence.newInstance(
                                              nextSibling.getAttribute(Constants.ATT_FRAGMENT));
                              if (ni.getPrecedence().isEqualTo(p)) {
                                  return true;
                              }
                          }
                          break;
                      default:
                          LOG.warn(
                                  "More than one node found for XPathExpression=\""
                                          + unmaskPlaceholderXpath
                                          + "\" in compViewParent");
                          return true;
                  }
              }
          } catch (XPathExpressionException xpe) {
              throw new RuntimeException("Failed to evaluate XPATH", xpe);
          }
  
          return false; // Re-parenting is "not disallowed" (double-negative less readable)
      }