code: private static void translate(Syntax syntax,
              int modifier, Definition source, List<Definition> targets, int[] moves, IntBitSet[] stoppers) throws GenericException {
          Path path;
          int count;
  
          path = new Path(syntax.getGrammar(), modifier, source, targets, moves, stoppers);
          count = path.translate();
          if (count == 0 && source.getAttribute().symbol != syntax.getGrammar().getStart()) {
              // TODO: improved error message
              throw new GenericException("dead-end path for attribute " + source.getName());
          }
      }
docs: The method actually doing the work