private CustomInternalN4JSParser collectFollowElements(TokenSource tokens,boolean strict,Set<FollowElement> result){
  CustomInternalN4JSParser parser=createParser();
  parser.setStrict(strict);
  try {
    ObservableXtextTokenStream tokenStream=new ObservableXtextTokenStream(tokens,parser);
    result.addAll(doGetFollowElements(parser,tokenStream));
  }
 catch (  InfiniteRecursion infinite) {
    result.addAll(parser.getFollowElements());
  }
  return parser;
}

private CustomInternalN4JSParser collectFollowElements ( TokenSource tokens , boolean strict , Set < FollowElement > result ) { CustomInternalN4JSParser parser = createParser ( ) ; parser . setStrict ( strict ) ; try { ObservableXtextTokenStream tokenStream = new ObservableXtextTokenStream ( tokens , parser ) ; result . addAll ( doGetFollowElements ( parser , tokenStream ) ) ; } catch ( InfiniteRecursion infinite ) { result . addAll ( parser . getFollowElements ( ) ) ; } return parser ; }
first pass . use the tokens that have been computed from the production parser ' s result and collect the follow elements from those .
