title: Dataflow .elementCountAtLeast(1) with .pastEndOfWindow() guarantees
body: <p>If I have a window like this:</p>
  
  <pre><code>.apply(Window
      .&lt;String&gt;into(Sessions
          .withGapDuration(Duration.standardSeconds(10)))
      .triggering(AfterWatermark
          .pastEndOfWindow()
          .withEarlyFirings(AfterPane.elementCountAtLeast(1))
          .withLateFirings(AfterPane.elementCountAtLeast(1))));
  </code></pre>
  
  <p>And it receives 3 elements from Pub/Sub.</p>
  
  <p>Is it guaranteed that the window will trigger exactly 4 times?</p>
  
  <p>Is it guaranteed that there will be:</p>
  
  <ul>
  <li>exactly one ON_TIME pane (triggered by watermark passing end of window)?</li>
  <li>exactly 3 other panes (EARLY or LATE), exactly 1 per element?</li>
  </ul>
  
  <p>I am looking at <a href="https://cloud.google.com/dataflow/java-sdk/JavaDoc/com/google/cloud/dataflow/sdk/transforms/windowing/PaneInfo.Timing" rel="nofollow"><code>Timing</code></a> and it says:</p>
  
  <blockquote>
    <p>An ON_TIME pane may contain locally late elements. It may even contain only locally late elements. Provided a locally late element finds its way into an ON_TIME pane its lateness becomes unobservable.</p>
  </blockquote>
  
  <p>So ok, the ON_TIME pane can contain LATE elements, but would another pane be fired by .withLateFirings(AfterPane.elementCountAtLeast(1)) for each of those LATE elements in the ON_TIME pane, or those elements would not trigger because they were part of the ON_TIME pane?</p>