anchor.diff:        box
   
       static member Box(value:obj) =
  -      let mutable box = BV()
  -      box.Clr <- value
  -      box.Tag <- TypeTags.Clr
  -      box
  +      match value with
  +        | :? double as d -> BV.Box(d)
  +        | :? int as i -> BV.Box(double i)
  +        | :? bool as b -> BV.Box(b)
  +        | :? string as s -> BV.Box(s)
  +        | :? SuffixString as s -> BV.Box(s)
  +        | :? FO as f -> BV.Box(f)
  +        | :? CO as o -> BV.Box(o)
  +        | _ ->
  +          let mutable box = BV()
  +          box.Clr <- value
  +          box.Tag <- TypeTags.Clr
  +          box
   
       static member Box(value:obj, tag:uint32) =
         let mutable box = BV()
  
positive.code:   override x.TrySetMember(binder:SetMemberBinder, value:obj) : bool =
      x.Put(binder.Name, value)
      true
  
    abstract ClassName : string with get
    default x.ClassName = "Object"
  
negative.code:       box.Tag <- TypeTags.SuffixString
        box
  
      static member Box(value:double) =
        let mutable box = BV()
        box.Number <- value
  