private List<TimeBasedTrigger> getTimeBasedTriggers(Trigger rootTrigger) {
    List<TimeBasedTrigger> timeBasedTriggers = new ArrayList<>();
    // traverse all triggers in the graph starting at the root trigger
    if (rootTrigger instanceof TimeBasedTrigger) {
      timeBasedTriggers.add((TimeBasedTrigger) rootTrigger);
    } else if (rootTrigger instanceof RepeatingTrigger) {
      // recurse on the underlying trigger
      timeBasedTriggers.addAll(getTimeBasedTriggers(((RepeatingTrigger) rootTrigger).getTrigger()));
    } else if (rootTrigger instanceof AnyTrigger) {
      List<Trigger> subTriggers = ((AnyTrigger) rootTrigger).getTriggers();

      for (Trigger subTrigger: subTriggers) {
        // recurse on each sub-trigger
        timeBasedTriggers.addAll(getTimeBasedTriggers(subTrigger));
      }
    }
    return timeBasedTriggers;
  }
Get the default triggering interval for this {@link WindowOperatorSpec}

This is defined as the GCD of all triggering intervals across all {@link TimeBasedTrigger}s configured for
this {@link WindowOperatorSpec}.

@return the default triggering interval
samza-core/src/main/java/org/apache/samza/operators/spec/WindowOperatorSpec.java