anchor.diff:                     else sprintf "%s (%A)" s3ObjectVersion.VersionId s3ObjectVersion.LastModified
               | _ -> s3Object.Key
           let typedS3Object = runtimeType<obj> typeName
  -        typedS3Object.AddXmlDocDelayed(fun () -> sprintf "A strongly typed interface to S3 object %s which is %d bytes in size" s3Object.Key s3Object.Size)
  +        typedS3Object.AddXmlDoc(sprintf "A strongly typed interface to S3 object %s which is %d bytes in size" s3Object.Key s3Object.Size)
       
           let key, etag, size, lastModified, ownerId, ownerName = 
               s3Object.Key, s3Object.ETag, s3Object.Size, s3Object.LastModified.ToString(), s3Object.Owner.Id, s3Object.Owner.DisplayName
  
positive.code:             match parameterValues with
              | [| :? string as awsKey; :? string as awsSecret |] ->
                  let typedS3Account = erasedType<obj> thisAssembly rootNamespace typeName
                  typedS3Account.AddXmlDocDelayed(fun () -> sprintf "A strongly typed interface to S3 account with key [%s] and secret [%s]" awsKey awsSecret)
  
                  let client  = Amazon.AWSClientFactory.CreateAmazonS3Client(awsKey, awsSecret, Amazon.RegionEndpoint.USEast1)
  
  
negative.code: 
  [<AutoOpen>]
  module internal Helpers =
      type Prefix     = Prefix of string
      type FolderName = FolderName of string
  
      type S3Entry =
          | Folder    of Prefix * FolderName
          | S3Object  of Amazon.S3.Model.S3Object
  
      let erasedType<'T> assemblyName rootNamespace typeName = 
          ProvidedTypeDefinition(assemblyName, rootNamespace, typeName, Some(typeof<'T>), HideObjectMethods = true)
  
  