anchor.diff:    Object + Support objects
     =======================================================*)
   
  -    (*==== Class representing an objects hidden class ====*)
  -and [<AllowNullLiteral>] Class =
  -  val mutable ClassId : int
  -  val mutable SubClasses : Map<string, Class>
  -  val mutable Variables : Map<string, int>
  -
  -  new(classId, variables:Map<string, int>) = {
  -    ClassId = classId
  -    Variables = variables
  -    SubClasses = Map.empty
  -  }
  -
  -  member x.GetSubClass (name:string, newId:int) =
  -    match Map.tryFind name x.SubClasses with
  -    | Some(cls) -> cls
  -    | None ->
  -      x.SubClasses <- (
  -        Map.add name (
  -          new Class(newId, 
  -            Map.add name x.Variables.Count x.Variables
  -          )
  -        ) x.SubClasses
  -      )
  -      x.SubClasses.[name]
  -
  -  member x.GetIndex varName =
  -    Map.tryFind varName x.Variables
  -
       (*==== A plain javascript object ====*)
   and [<AllowNullLiteral>] Object =
     //Array
  
positive.code:   static member New(name:string) =
      let cache = Dlr.Expr.constant (new SetCache(name))
      cache, 
      Expr.field cache "ClassId", 
      Expr.field cache "Index", 
      Expr.field cache "Crawler"
      
      (*==== Inline cache for object creation ====*)
  and NewCache =
    val mutable Class : Class
    val mutable ClassId : int
    val mutable InitSize : int
    val mutable LastCreated : Object
  
    new(class') = {
      Class = class'
      ClassId = class'.ClassId
      InitSize = 1
      LastCreated = null
    }
  
negative.code:     env.AstMap <- Map.empty
      env.GetCrawlers <- Map.empty
      env.SetCrawlers <- Map.empty
      env.PropertyMaps <- Map.empty
  
      //Base classes
      env.ObjectClass   <- new Class(env.NextClassId, Map.empty)
  