package org.sterling.source.syntax; import org.sterling.SterlingException; import org.sterling.util.VisitorState; public abstract class AbstractSourceVisitor<R, S extends VisitorState> implements SourceVisitor<R, S> { @Override public R visit(SourceNode node, S state) throws SterlingException { state.beginVisit(node); R value = node.accept(this, state); state.endVisit(node); return value; } }