anchor.diff:  
   /// Represents a container in blob storage.
   type BlobContainer internal (connectionString, container) = 
  +    
       /// Downloads the entire container contents to the local file system asynchronously.
       member x.Download(path) = 
           let connectionDetails = connectionString, container, String.Empty
           downloadFolder (connectionDetails, path)
       
       /// Uploads a file to this container.
  -    member x.Upload(path) =
  +    member x.Upload(path) = 
           let fileName = path |> Path.GetFileName
  -        let blobRef = getBlobRef(connectionString, container, fileName)
  +        let blobRef = getBlobRef (connectionString, container, fileName)
           awaitUnit (blobRef.UploadFromFileAsync(path, FileMode.Open))
   
  -module internal ProvidedTypeGenerator =
  +module internal ProvidedTypeGenerator = 
       let generateTypes() = 
           [ ProvidedTypeDefinition("BlobFile", Some typeof<BlobFile>, HideObjectMethods = true)
  -          ProvidedTypeDefinition("TextFile", Some typeof<TextFile>, HideObjectMethods = true)
             ProvidedTypeDefinition("XmlFile", Some typeof<XmlFile>, HideObjectMethods = true) ]
   
   /// Builder methods to construct blobs etc..
  
positive.code:     /// Opens this file as a stream for reading.
      member x.OpenStream() = blobRef.OpenRead()
      
      /// Gets the blob size in bytes.
      member x.Size with get () = blobRef.Properties.Length
  
      /// Reads this file as a string.
      member x.ReadAsString() = blobRef.DownloadText()
  
negative.code: /// Represents a file in blob storage.
  type BlobFile internal (connectionDetails) = 
      let connection, container, file = connectionDetails
      let blobRef = getBlobRef (connectionDetails)
      let blobProperties = lazy
                              blobRef.FetchAttributes()
                              blobRef.Properties
      
      /// Generates a full-access shared-access signature for the supplied duration.
      member x.GenerateSharedAccessSignature(duration) = 
          let expiry = Nullable(DateTimeOffset.UtcNow.Add(duration))
          let policy = 
              SharedAccessBlobPolicy
                  (SharedAccessExpiryTime = expiry,
                   Permissions = (SharedAccessBlobPermissions.Read ||| SharedAccessBlobPermissions.Write ||| SharedAccessBlobPermissions.Delete 
                                  ||| SharedAccessBlobPermissions.List))
          let sas = blobRef.GetSharedAccessSignature policy
          Uri(sprintf "%s%s" (blobRef.Uri.ToString()) sas)
      
      /// Downloads this file to the specified path.
      member x.Download(path) = 
          let targetDirectory = Path.GetDirectoryName(path)
          if not (Directory.Exists targetDirectory) then Directory.CreateDirectory targetDirectory |> ignore
          blobRef.DownloadToFileAsync(path, FileMode.Create) |> awaitUnit
  