code: static void applyNoHopping(List<NodeInfo> order) {
          if (isIllegalHoppingSpecified(order) == true) {
              ArrayList<NodeInfo> cvpNodeInfos = new ArrayList<>();
  
              // pull those out of the position list from the CVP
              for (int i = order.size() - 1; i >= 0; i--)
                  if (order.get(i).getIndexInCVP() != -1) cvpNodeInfos.add(order.remove(i));
  
              // what is left is coming from other parents. Now push them back in
              // in the order specified in the CVP
  
              NodeInfo[] nodeInfos = cvpNodeInfos.toArray(new NodeInfo[cvpNodeInfos.size()]);
              Arrays.sort(nodeInfos, new NodeInfoComparator());
              List<NodeInfo> list = Arrays.asList(nodeInfos);
              order.addAll(0, list);
          }
      }
docs: This method is responsible for preventing nodes with identical precedence in the same parent
  from hopping over each other so that a layout fragment can lock two tabs that are next to
  each other and they can only be separated by tabs with higher precedence.
  
  <p>If this situation is detected then the positioning of all nodes currently in the
  compViewParent is left as they are found in the CVP with any nodes brought in from other
  parents appended at the end with their relative order preserved.