public boolean addRightmostStep(Production p) {
   SymbolString current = createResult();
   for (int i = current.size() - 1; i >= 0; i--) {
     if (Grammar.isVariable(current.get(i))) {
       return this.addStep(p, i);
     }
   }
   return false;
 }