code: function subParse(parser, pos, extensions,parens) {
      var p = new parser.constructor(parser.options, parser.input, pos);
      if (extensions)
          for (var k in extensions)
              p[k] = extensions[k] ;
  
      var src = parser ;
      var dest = p ;
      ['inFunction','inAsyncFunction','inAsync','inGenerator','inModule'].forEach(function(k){
          if (k in src)
              dest[k] = src[k] ;
      }) ;
      if (parens)
          p.options.preserveParens = true ;
      p.nextToken();
      return p;
  }
docs: /* Create a new parser derived from the specified parser, so that in the
  event of an error we can back out and try again