anchor.diff:              p.Pickable |> Mod.map Pickable.bounds
   
       type PickTree(objects : aset<PickObject>) =
  +        
  +        let objects =
  +            objects |> ASet.filterM (fun o ->
  +                PickObject.bounds o |> Mod.map (fun b -> b.IsValid)
  +            )
  +
  +        //let objects =
  +        //    objects |> ASet.chooseM (fun o ->
  +        //        PickObject.bounds o |> Mod.map (fun b ->
  +        //            if b.IsInvalid then None
  +        //            else Some (b.EnlargedBy(1E-8), o)
  +        //        )
  +        //    )
  +
           let bvh = 
               BvhTree.ofASet (fun a -> PickObject.bounds a |> Mod.map ( fun b -> b.EnlargedBy(1E-8))) objects
   
  
positive.code:     [<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
      module Pickable =
  
          let ofShape (shape : PickShape) =
              { trafo = Trafo3d.Identity; shape = shape }
  
  
negative.code:             { p with trafo = p.trafo * t }
  
          let bounds (p : Pickable) =
              PickShape.bounds(p.shape) |> transformBounds p.trafo
  
          let private intersectTriangle (part : RayPart) (tri : Triangle3d) =
              match RayPart.Intersects(part, tri) with
  