anchor.diff:  
   type IShapePoco =
       abstract IsStruct : bool
  +    abstract Constructors : IShapeConstructor[]
       abstract Fields : IShapeMember[]
       abstract Properties : IShapeMember[]
       abstract Accept : IPocoVisitor<'R> -> 'R
   
   and ShapePoco<'Poco> private () =
       let isStruct = typeof<'Poco>.IsValueType
  +    let ctors =
  +        typeof<'Poco>.GetConstructors(allInstanceMembers)
  +        |> Array.map (fun c -> mkCtorUntyped<'Poco> c)
  +
       let fields = 
           typeof<'Poco>.GetFields(allInstanceMembers)
           |> Array.map (fun f -> mkWriteMemberUntyped<'Poco> f.Name f [|f|])
  
positive.code:         match mkMemberUntyped<'Record> label memberInfo path with
          | :? IShapeWriteMember<'Record> as wm -> wm
          | _ -> invalidOp <| sprintf "TypeShape internal error: Member '%O' is not writable" memberInfo
  
  // Generic Tuple Shape
  
  
negative.code:     | Array of element:Type * rank:int
      | Generic of definition:Type * args:Type []
  
  /// Used to extract the type variable contained in a specific shape
  type ITypeShapeVisitor<'R> =
      abstract Visit<'T> : unit -> 'R
  
  /// Encapsulates a type variable that can be accessed using type shape visitors
  [<AbstractClass>]
  type TypeShape =
      [<CompilerMessage("TypeShape constructor should not be consumed.", 4224)>]
  