anchor.diff:      /// 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
  +    /// Opens this file as a text stream for reading.
  +    member x.OpenStreamAsText() = new StreamReader(x.OpenStream())
   
       /// Reads this file as a string.
       member x.ReadAsString() = blobRef.DownloadText()
  
positive.code: /// Represents a file in blob storage.
  type BlobFile internal (connectionDetails) = 
      let connection, container, file = connectionDetails
      let blobRef = getBlobRef(connectionDetails)
      let details = blobRef.FetchAttributes()
      
      /// 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
  
negative.code:     /// Reads this file as a string asynchronously.
      member x.ReadAsStringAsync() = Async.AwaitTask(blobRef.DownloadTextAsync())
  
      /// Gets the blob size in bytes.
      member x.Size with get () = blobProperties.Value.Length
      
  /// Represents an XML file stored in blob storage.
  type XmlFile internal (connectionDetails) = 
      inherit BlobFile(connectionDetails)
      let blobRef = getBlobRef (connectionDetails)
      
      /// Reads this file as an XDocument.
      member x.ReadAsXDocument() = blobRef.DownloadText() |> XDocument.Parse
      
      /// Reads this file as an XDocument asynchronously.
      member x.ReadAsXDocumentAsync() = async { let! text = blobRef.DownloadTextAsync() |> Async.AwaitTask
                                                return XDocument.Parse text }
  
  /// Represents a pseudo-folder in blob storage.
  type BlobFolder internal (connectionDetails) = 
  