boolean isBefore()

in model/src/main/java/jetbrains/jetpad/model/composite/Composites.java [264:284]


  boolean isBefore(CompositeT c1, CompositeT c2) {
    if (c1 == c2) return false;

    List<CompositeT> c1a = reverseAncestors(c1);
    List<CompositeT> c2a = reverseAncestors(c2);

    if (c1a.get(0) != c2a.get(0)) {
      throw new IllegalArgumentException("Items are in different trees");
    }

    int commonLength = Math.min(c1a.size(), c2a.size());
    for (int i = 1; i < commonLength; i++) {
      CompositeT first = c1a.get(i);
      CompositeT second = c2a.get(i);
      if (first != second) {
        return deltaBetween(first, second) > 0;
      }
    }

    throw new IllegalArgumentException("One parameter is an ancestor of the other");
  }