public BlobChunkVerificationResultInfo OpenForWrite(Stream baseStream, long startPosition = 0, long length = TypeExtensions.kNoneInt64, Shell.EndianFormat endian = Shell.EndianFormat.Big) { Contract.Requires(IsClosed); Contract.Requires <ArgumentNullException>(baseStream != null); Contract.Requires <ArgumentException>(baseStream.CanSeek); Contract.Requires <ArgumentException>(baseStream.HasPermissions(FileAccess.Write)); Contract.Requires(length.IsNoneOrPositive()); var result = BlobChunkVerificationResultInfo.ValidResult; OpenUnderlyingStream(baseStream, FileAccess.Write, endian); OpenStartPosition(baseStream, startPosition); EndPosition = length.IsNotNone() ? StartPosition + length : length; mFooterPosition = TypeExtensions.kNoneInt64; UnderlyingStream.StreamMode = FileAccess.Write; if (EndPosition.IsNotNone()) { OpenVerifyAssumedStreamSize(ref result); } return(result); }