Trigger implements Serializable { @Override public String toString() { String simpleName = getClass().getSimpleName(); if (getClass().getEnclosingClass() != null) { simpleName = getClass().getEnclosingClass().getSimpleName() + "." + simpleName; } if (subTriggers == null || subTriggers.isEmpty()) { return simpleName; } else { return simpleName + "(" + Joiner.on(", ").join(subTriggers) + ")"; } } protected  Trigger(List<Trigger> subTriggers); protected  Trigger(); List<Trigger> subTriggers(); Trigger getContinuationTrigger(); @Internal abstract Instant getWatermarkThatGuaranteesFiring(BoundedWindow window); @Internal abstract boolean mayFinish(); @Internal boolean isCompatible(Trigger other); @Override String toString(); @Override boolean equals(@Nullable Object obj); @Override int hashCode(); OrFinallyTrigger orFinally(OnceTrigger until);  }
@Test public void testTriggerToString() throws Exception { assertEquals("AfterWatermark.pastEndOfWindow()", AfterWatermark.pastEndOfWindow().toString()); assertEquals( "Repeatedly.forever(AfterWatermark.pastEndOfWindow())", Repeatedly.forever(AfterWatermark.pastEndOfWindow()).toString()); }