docs: private static <T> Comparator<List<Optional<LocalProperty<T>>>> matchedLayoutPreference()
      {
          return (matchLayout1, matchLayout2) -> {
              Iterator<Optional<LocalProperty<T>>> match1Iterator = matchLayout1.iterator();
              Iterator<Optional<LocalProperty<T>>> match2Iterator = matchLayout2.iterator();
              while (match1Iterator.hasNext() && match2Iterator.hasNext()) {
                  Optional<LocalProperty<T>> match1 = match1Iterator.next();
                  Optional<LocalProperty<T>> match2 = match2Iterator.next();
                  if (match1.isPresent() && match2.isPresent()) {
                      return Integer.compare(match1.get().getColumns().size(), match2.get().getColumns().size());
                  }
                  else if (match1.isPresent()) {
                      return 1;
                  }
                  else if (match2.isPresent()) {
                      return -1;
                  }
              }
              checkState(!match1Iterator.hasNext() && !match2Iterator.hasNext()); // Should be the same size
              return 0;
          };
      }