public Object applyOnce(Object t, fptr whichRule) {
if ( t==null ) return null;
try {
// share TreeParser object but not parsing-related state
state = new RecognizerSharedState();
input = new CommonTreeNodeStream(originalAdaptor, t);
((CommonTreeNodeStream)input).setTokenStream(originalTokenStream);
setBacktrackingLevel(1);
TreeRuleReturnScope r = (TreeRuleReturnScope)whichRule.rule();
setBacktrackingLevel(0);