code: @Override
      public int compare(
          ChronoInterval<T> o1,
          ChronoInterval<T> o2
      ) {
  
          Boundary<T> bs1 = o1.getStart();
          Boundary<T> bs2 = o2.getStart();
  
          if (bs1.isInfinite()) {
              if (bs2.isInfinite()) {
                  return this.compareEnd(o1, o2);
              } else {
                  return -1;
              }
          } else if (bs2.isInfinite()) {
              return 1;
          }
  
          T start1 = bs1.getTemporal();
          T start2 = bs2.getTemporal();
  
          if (bs1.isOpen()) {
              start1 = this.axis.stepForward(start1);
          }
          if (bs2.isOpen()) {
              start2 = this.axis.stepForward(start2);
          }
  
          // open max condition (rare edge case)
          if (start1 == null) {
              if (start2 == null) {
                  return 0;
              } else {
                  return 1;
              }
          } else if (start2 == null) {
              return -1;
          }
  
          int delta = this.axis.compare(start1, start2);
  
          if (delta == 0) {
              delta = this.compareEnd(o1, o2);
          }
  
          return delta;
  
      }
docs: ~ Methoden ----------------------------------------------------------