anchor.diff:          let argTypes = ctorInfo.GetParameters() |> Array.map (fun p -> p.ParameterType)
           let arity = argTypes.Length
           let argumentType =
  -            if arity = 0 then typeof<unit>
  -            else FSharpType.MakeTupleType argTypes
  +            match arity with
  +            | 0 -> typeof<unit>
  +            | 1 -> argTypes.[0]
  +            | _ -> FSharpType.MakeTupleType argTypes
   
           Activator.CreateInstanceGeneric<ShapeConstructor<_,_>>([|typeof<'Record>; argumentType|], [|box ctorInfo; box arity|])
           :?> IShapeConstructor<'Record>
  
positive.code: 
      /// Creates an instance of declaring type with supplied constructor args
      member __.InvokeExpr(args : Expr<'CtorArgs>) : Expr<'DeclaringType> =
          let exprArgs = [for i in 0 .. arity - 1 -> Expr.TupleGet(args, i)]
          Expr.Cast<'DeclaringType>(Expr.NewObject(ctorInfo, exprArgs))
  
      interface IShapeConstructor<'DeclaringType> with
  
negative.code: /// Identifies a constructor implementation shape
  and ShapeConstructor<'DeclaringType, 'CtorArgs> private (ctorInfo : ConstructorInfo, arity : int) =
      let valueReader = 
          match arity with
          | 0 -> fun _ -> [||]
          | 1 -> fun x -> [|x|]
          |_ -> FSharpValue.PreComputeTupleReader typeof<'CtorArgs>
  
      /// Creates an instance of declaring type with supplied constructor args
      member __.Invoke(args : 'CtorArgs) =
  