anchor.diff:  } with
     member x.DebugView = sprintf "index:%i/local:%b/level:%i" x.Index x.IsLocalInParent x.DefinedInScopeLevel
     static member New = {
  -    Index = -1
  -    IsLocalInParent = false
  +    Index               = -1
  +    IsLocalInParent     = false
       DefinedInScopeLevel = -1
     }
   
  -type LocalMap = Map<string, Local>
  +type LocalMap   = Map<string, Local>
   type ClosureMap = Map<string, Closure>
   
   type Scope = {
  
positive.code:   HasDynamicScopes: bool
  } with
    static member New = { 
      Locals = Map.empty
      Closure = Map.empty
      Arguments = false
      DynamicScopeLevel = 0
      HasDynamicScopes = false
      ScopeLevel = 0
    }
    static member Global = Scope.New
  
  type ParserState = { 
    GlobalDynamicScopeLevel: int
    ScopeChain: Scope list
  } with
    member x.InDynamicScope = x.GlobalDynamicScopeLevel > 0
    static member New = {
      GlobalDynamicScopeLevel = 0
      ScopeChain = []
    }
  
  type Node =
  
negative.code:     @"access:%A/index:%i/undefined:%b/as:%A/with:%A, %A" 
      x.ClosureAccess x.ParamIndex x.InitUndefined x.UsedAs x.UsedWith x.UsedWithClosure)
    static member New = {
      Expr            = null
      UsedAs          = JsTypes.Nothing
      UsedWith        = Set.empty
      ParamIndex      = -1
      InitUndefined   = false
      ClosureAccess   = ClosureAccess.Nothing
      UsedWithClosure = Set.empty
    }
    
  [<DebuggerDisplay("{DebugView}")>]
  