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