anchor.diff:                  | Some t -> 
                       let pt = part.Ray.Ray.GetPointOnRay t
                       Some (RayHit(t, (p, pt)))
  -                | None -> None
  +                | None -> 
  +                    None
                   
           member x.Dispose() =
               bvh.Dispose()
  
positive.code:                 | None -> None
  
          let intersect (part : RayPart) (p : Pickable) =
              let part = RayPart(part.Ray.Ray.Transformed(p.trafo.Backward) |> FastRay3d, part.TMin, part.TMax)
  
              match p.shape with
                  | Box b -> RayPart.Intersects(part, b)
                  | Sphere s -> RayPart.Intersects(part, s)
                  | Cylinder c -> RayPart.Intersects(part, c)
                  | Triangle t -> RayPart.Intersects(part, t)
                  | Triangles kdtree ->
                      match KdTree.intersect intersectTriangle part kdtree with
                          | Some hit -> Some hit.T
                          | None -> None
                  | TriangleArray arr -> 
                      match arr |> Array.choose ( fun t -> RayPart.Intersects(part, t) ) with
                      | [||] -> None
                      | ts -> ts |> Array.min |> Some
                  | Custom(_,intersect) -> intersect part 
  
      type PickObject(scope : Ag.Scope, pickable : IMod<Pickable>) =
          member x.Scope = scope
  
negative.code:     [<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
      module Pickable =
  
          let private transformBounds (trafo : Trafo3d) (bounds : Box3d) =
              if bounds.IsInvalid then
                  Box3d.Invalid
              else
                  bounds.ComputeCorners() 
                  |> Array.map (fun p -> trafo.Forward.TransformPosProj p)
                  |> Box3d
  
          let private transformRay (trafo : Trafo3d) (ray : Ray3d) =
              let o = trafo.Forward.TransformPosProj ray.Origin
              let d = trafo.Forward.TransformPosProj (ray.Origin + ray.Direction) - o
              Ray3d(o, d)
  
  
          let ofShape (shape : PickShape) =
              { trafo = Trafo3d.Identity; shape = shape }
  
  