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: 
  [<AutoOpen>]
  module internal Helpers =
      let erasedType<'T> assemblyName rootNamespace typeName = 
          ProvidedTypeDefinition(assemblyName, rootNamespace, typeName, Some(typeof<'T>), HideObjectMethods = true)
  
  
negative.code:         | _ -> false
  
      /// Returns all the S3 objects in the specified S3 bucket
      let getObjects (client : Amazon.S3.IAmazonS3) (bucket : Amazon.S3.Model.S3Bucket) (Prefix prefix) =
          let rec loop marker = seq {
              let req = new Amazon.S3.Model.ListObjectsRequest()
              req.BucketName <- bucket.BucketName
              req.Prefix     <- prefix
              req.Delimiter  <- "/"
              if not <| String.IsNullOrWhiteSpace marker then req.Marker <- marker
  
              let response = client.ListObjects(req)
              yield! response.CommonPrefixes |> Seq.map (fun folderName -> Folder(Prefix prefix, FolderName folderName))
              yield! response.S3Objects |> Seq.map S3Object
          
              if not <| String.IsNullOrWhiteSpace response.NextMarker then yield! loop response.NextMarker
          }
  