anchor.diff:  // ## Example
   //
   //      type S3  = S3Provider.Account<"AWS Key", "AWS Secret">
  -//      let etag = S3.``my.bucket``.``2013-12-13/My file.txt``.ETag
  -//      let utf8 = S3.``my.bucket``.``2013-12-13/My file.txt``.Content.UTF8
  -//      let raw  = S3.``my.bucket``.``2013-12-13/My image.png``.Content.Raw
  -//      let lastModified = S3.``my.bucket``.``2013-12-13/My image.png``.LastModified
  +//      type bucket = S3.``my.bucket``
  +//      type folder = bucket.``2013-12-13/``
  +//      let etag = folder.``My file.txt``.ETag
  +//      let utf8 = folder.``My file.txt``.Content.UTF8
  +//      let raw  = folder.``My image.png``.Content.Raw
  +//      let lastModified = folder.``My image.png``.LastModified
  +//      type search = bucket.Search<"2013-12-">
  +//      let searchResultContent = search.``2013-12-13``.``My file.txt``.Content.Raw
   //
   namespace AwsProviders
   
  
positive.code: 
  [<AutoOpen>]
  module internal Helpers =
      type Prefix     = Prefix of string
  
      type S3Entry =
          | Folder    of Prefix
          | S3Object  of Amazon.S3.Model.S3Object
  
      let erasedType<'T> assemblyName rootNamespace typeName = 
  
negative.code:             | [| :? string as prefix |] ->
                  let typedSearch = runtimeType<obj> typeName
                  typedSearch.AddXmlDoc(sprintf "A strongly typed interface to a S3 search with prefix [%s]" prefix)
                  typedSearch.AddMembersDelayed(fun () -> createTypedS3Entries typedSearch client bucket isVersioned prefix)
  
                  ownerType.AddMember(typedSearch)
                  typedSearch
  