code: static TransitionHistory of(
          ZonalOffset initialOffset,
          List<ZonalTransition> transitions,
          List<DaylightSavingRule> rules,
          boolean create,
          boolean sanityCheck
      ) {
  
          List<ZonalTransition> t;
          List<DaylightSavingRule> r;
  
          if (create) {
              t = new ArrayList<>(transitions);
              r = new ArrayList<>(rules);
              Collections.sort(t);
              r.sort(RuleComparator.INSTANCE);
          } else {
              t = transitions;
              r = rules;
          }
  
          int n = t.size();
  
          if (n == 0) {
              if (r.isEmpty()) {
                  return new EmptyTransitionModel(initialOffset);
              } else {
                  return new RuleBasedTransitionModel(
                      initialOffset,
                      r,
                      false);
              }
          }
  
          ZonalOffset first =
              ZonalOffset.ofTotalSeconds(t.get(0).getPreviousOffset());
  
          if (sanityCheck && !initialOffset.equals(first)) {
              throw new IllegalArgumentException(
                  "Initial offset " + initialOffset + " not equal "
                  + "to previous offset of first transition: " + first);
          }
  
          if (r.isEmpty()) {
              return new ArrayTransitionModel(t, false, sanityCheck);
          }
  
          ZonalTransition last = t.get(n - 1);
          long t1 = last.getPosixTime() + 1;
          long t2 = getFutureMoment(1);
  
          if (t1 < t2) {
              t.addAll( // enhance array part
                  RuleBasedTransitionModel.getTransitions(last, r, t1, t2));
          }
  
          return new CompositeTransitionModel(n, t, r, false, sanityCheck);
  
      }
docs: Hauptmethode