docs: public void order(Orderer orderer) throws InvalidOrderingException {
          childrenLock.lock();
          try {
              List<T> children = getFilteredChildren();
              // In theory, we could have duplicate Descriptions. De-dup them before ordering,
              // and add them back at the end.
              Map<Description, List<T>> childMap = new LinkedHashMap<Description, List<T>>(
                      children.size());
              for (T child : children) {
                  Description description = describeChild(child);
                  List<T> childrenWithDescription = childMap.get(description);
                  if (childrenWithDescription == null) {
                      childrenWithDescription = new ArrayList<T>(1);
                      childMap.put(description, childrenWithDescription);
                  }
                  childrenWithDescription.add(child);
                  orderer.apply(child);
              }
  
              List<Description> inOrder = orderer.order(childMap.keySet());
  
              children = new ArrayList<T>(children.size());
              for (Description description : inOrder) {
                  children.addAll(childMap.get(description));
              }
              filteredChildren = Collections.unmodifiableList(children);
          } finally {
              childrenLock.unlock();
          }
      }