package org.overture.interpreter.traces.util; import java.util.Iterator; import org.overture.interpreter.traces.CallSequence; import org.overture.interpreter.traces.IIterableTraceNode; import org.overture.interpreter.traces.TestSequence; public class LazyTestSequence extends TestSequence { /** * serial */ private static final long serialVersionUID = 1L; private IIterableTraceNode node; public LazyTestSequence(IIterableTraceNode node) { this.node = node; } @Override public synchronized int size() { return this.node.size(); } @Override public synchronized boolean isEmpty() { return !iterator().hasNext(); } @Override public synchronized CallSequence get(int index) { return this.node.get(index); } @Override public synchronized Iterator<CallSequence> iterator() { return new Iterator<CallSequence>() { int index = 0; @Override public boolean hasNext() { return index < LazyTestSequence.this.size(); } @Override public CallSequence next() { CallSequence test = LazyTestSequence.this.get(index++); markFiltered(test); return test; } @Override public void remove() { } }; } }