anchor.diff:      if x.ClassId <> obj.ClassId then
         let found, classIds = obj.PrototypeGet(x, env)
         if found then
  -
           let cache = Expr.paramT<GetCache> "~cache"
           let object' = Expr.paramT<Object> "~object"
           let env' = Expr.paramT<Environment> "~env"
  
positive.code:       cache.ClassId <- -1
        cache.Index   <- -1
        env.UndefinedBox
        
    member x.PrototypeGet (cache:GetCache, env:Environment) =
      let mutable found = false
      let mutable result = new Box()
      let mutable classIds = []
      let mutable prototype = x.Prototype
  
      while not found && prototype <> null do
        result    <- prototype.Get(cache, env)
        classIds  <- prototype.ClassId :: classIds
        if cache.ClassId = prototype.ClassId 
          then found      <- true
          else prototype  <- prototype.Prototype
  
      found, classIds
  
    interface System.Dynamic.IDynamicMetaObjectProvider with
      member self.GetMetaObject expr = new ObjectMeta(expr, self) :> MetaObj
  
negative.code:           )
  
          x.Crawler <- lambda.Compile()
          x.ClassId <- -1 //This makes sure we will hit the crawler next time
          x.Crawler.Invoke(x, obj, env)
        else
          env.UndefinedBox
  