EmptyTraverser implements Traverser<T>, Traverser.Admin<T> { public static <R> EmptyTraverser<R> instance() { return INSTANCE; } private  EmptyTraverser(); static EmptyTraverser<R> instance(); @Override void addLabels(final Set<String> labels); @Override void keepLabels(final Set<String> labels); @Override void dropLabels(final Set<String> labels); @Override void dropPath(); @Override void set(final T t); @Override void initialiseLoops(final String stepLabel, final String loopNam); @Override void incrLoops(); @Override void resetLoops(); @Override String getStepId(); @Override void setStepId(final String stepId); @Override void setBulk(final long count); @Override Admin<R> split(final R r, final Step<T, R> step); @Override Admin<T> split(); @Override Admin<T> detach(); @Override T attach(final Function<Attachable<T>, T> method); @Override void setSideEffects(final TraversalSideEffects sideEffects); @Override T get(); @Override S sack(); @Override void sack(final S object); @Override void merge(final Traverser.Admin<?> other); @Override Path path(); @Override int loops(); @Override int loops(final String loopName); @Override long bulk(); @Override TraversalSideEffects getSideEffects(); @Override Set<String> getTags(); @Override int hashCode(); @Override boolean equals(final Object object); @Override @SuppressWarnings("CloneDoesntCallSuperClone") EmptyTraverser<T> clone();  }
@Test public void shouldHaveSameInstance() { assertSame(EmptyTraverser.instance(), EmptyTraverser.instance()); }