A composite Trigger that executes its sub-triggers in order.
Only one sub-trigger is executing at a time,
and any time it fires the AfterEach fires. When the currently executing
sub-trigger finishes, the AfterEach starts executing the next sub-trigger.

AfterEach.inOrder(t1, t2, ...) finishes when all of the sub-triggers have finished.

onMerge

Leaf triggers should update their state by inspecting their status and any state
in the merging windows. Composite triggers should update their state by calling
ExecutableTrigger.invokeOnMerge(com.google.cloud.dataflow.sdk.transforms.windowing.Trigger<W>.OnMergeContext) on their sub-triggers, and applying appropriate logic.

getWatermarkThatGuaranteesFiring

Returns a bound in watermark time by which this trigger would have fired at least once
for a given window had there been input data. This is a static property of a trigger
that does not depend on its state.