public void addOp(T o) { TraceElement<T> op = new TraceElement<T>(o); if (lastElement == null) { lastElement = op; } else { assert lastElement.stateId == 0; op.prevElement = lastElement; lastElement = op; } }
@Override public Trace clone() { TraceElement<T> e0 = null, eLast = null; for (TraceElement<T> e = lastElement; e != null; e = e.prevElement) { TraceElement<T> ec = e.clone(); if (eLast != null) { eLast.prevElement = ec; eLast = ec; } else { e0 = eLast = ec; } } Trace<T> t = new Trace<T>(); t.lastElement = e0; return t; }