anchor.diff:                  | 6 -> activate typedefof<ShapeTuple<_,_,_,_,_,_>> gas
                   | 7 -> activate typedefof<ShapeTuple<_,_,_,_,_,_,_>> gas
                   | 8 -> activate typedefof<ShapeTuple<_,_,_,_,_,_,_,_>> gas
  -                | _ -> invalidOp "invalid tuple type"
  +                | _ -> raise UnSupportedShape
   
               elif FSharpType.IsUnion(t, allMembers) then
                   match t with
  
positive.code:                     | 2 -> activate1 typedefof<ShapeArray2D<_>> et
                      | 3 -> activate1 typedefof<ShapeArray3D<_>> et
                      | 4 -> activate1 typedefof<ShapeArray4D<_>> et
                      | rk -> invalidOp <| sprintf "unsupported array rank '%d'" rk
  
                  elif typeof<Delegate>.IsAssignableFrom t then
                      activate1 typedefof<ShapeDelegate<_>> t
  
negative.code:                     | 5 -> activate typedefof<ShapeChoice<_,_,_,_,_>> args
                      | 6 -> activate typedefof<ShapeChoice<_,_,_,_,_,_>> args
                      | 7 -> activate typedefof<ShapeChoice<_,_,_,_,_,_,_>> args
                      | _ -> raise UnSupportedShape
  
              elif FSharpType.IsRecord(t, allMembers) then
                  if t.IsGenericType && t.GetGenericTypeDefinition () = typedefof<_ ref> then
  