anchor.diff:          
       /// use reflection to bootstrap a shape instance
       let resolveTypeShape (addOnResolver : Type -> TypeShape option) (t : Type) : TypeShape =
  -        match addOnResolver t with
  -        | Some ts -> ts
  -        | None ->
  -
           if t.IsGenericTypeDefinition then raise <| UnsupportedShape t
           elif t.IsGenericParameter then raise <| UnsupportedShape t
           elif t = canon then raise <| UnsupportedShape t
  -        elif t.IsEnum then 
  -            activate2 (getGenericEnumType()) t <| Enum.GetUnderlyingType t
  +        elif t.IsByRef || t.IsPointer then raise <| UnsupportedShape t
  +
  +        match addOnResolver t with
  +        | Some ts when ts.Type = t -> ts
  +        | Some ts -> sprintf "Resolved shape for type '%O' was '%O'." t ts.Type |> invalidOp
  +        | None ->
  +
  +        if t.IsEnum then 
  +            activate2 (getGenericEnumType()) t (Enum.GetUnderlyingType t)
   
           elif t.IsArray then
               let et = t.GetElementType()
  
positive.code:         elif FSharpType.IsFunction t then
              let d,c = FSharpType.GetFunctionElements t
              activate2 typedefof<ShapeFSharpFunc<_,_>> d c
  
  
          elif FSharpType.IsRecord(t, allMembers) then
              let genTy = 
  
negative.code: 
  open System
  open System.Collections.Generic
  open System.Collections.Concurrent
  open System.Reflection
  open Microsoft.FSharp.Reflection
  
  