anchor.diff:  open IronJS.Compiler.Lexer
   
   module Parser =
  +  #if ONEPASS
     type private Dict<'k, 'v> = System.Collections.Generic.Dictionary<'k, 'v>
     type private List<'a> = System.Collections.Generic.List<'a>
  +  #endif
   
     type State = {
       Env : Env
  
positive.code:     // Build the current scope
      let scope = p |> buildScope
  
      // Add a contained scopes lists for the just constructed scope
      p.ContainedScopes.[scope.Value.Id] <- new List<Scope ref>()
  
      // Add the current scope to it's parent
      // scopes contained scopes list, this is
      // used for resolving closures to variables
      // that are defined after a function itself
      // 
      // In the below example, foo should return
      // the value of bar ("hello world") even
      // though it's defined before bar
      //
      // var foo = function () { print(bar); };
      // var bar = "hello world!";
      // foo();
  
      for s in !(p |> schain) do
        p.ContainedScopes.[s.Value.Id].Add(scope)
  
      // Parse the body within it's enclosing scope chain
      p |> schain |> AnalyzersFastUtils.ScopeChain.push scope
      let body = p |> block
  
negative.code:   let parse (source:string) (env:Env) =
      let lexer = source |> Lexer.create
      let globalScope = ref {Ast.Scope.NewGlobal with GlobalLevel = 0}
      let globalAst = 
        {parserDefinition with 
          Env = env
  