WindowedEvaluationFunction implements EvaluationFunction<T> { @Override public void eval(EvaluationContext<T> context) { if(recordWindow.inWindow(context.get())){ lastWindowOpen = true; extractor.apply(context.get()); } else { if (!lastWindowOpen) { return; } SimpleEvaluationContext simpleContext = new SimpleEvaluationContext(context.get()); extractor.finish(simpleContext); collectResults(context, simpleContext.getEvents()); makeLocalInstances(); lastWindowOpen = false; } } private  WindowedEvaluationFunction(
            RecordWindow recordWindow,
            WindowExtractor<T> extractor,
            EventFilter<T> filter
    ); static Builder<B> builder(); @Override void eval(EvaluationContext<T> context); @Override Set<String> getChannelIdentifiers();  }
@Test public void eval() { evalTest(function); evalTest(clone); }