/// <summary>
        /// Writes an object value to the stream.
        /// </summary>
        /// <param name="writer">Must not be null.</param>
        /// <param name="value">Must not be null.</param>
        /// <param name="valueType">Must not be null.</param>
        private static void WriteObjectValue(FileChunkWriter writer, object value, Type valueType)
        {
            if (valueType.FullName == typeof(FourCharacterCode).FullName)
            {
                writer.WriteFourCharacterCode((FourCharacterCode)value);
            }

            if (valueType.FullName == typeof(Stream).FullName)
            {
                writer.WriteStream((Stream)value);
            }

            if (valueType.FullName == typeof(byte[]).FullName)
            {
                writer.WriteBuffer((byte[])value);
            }

            if (valueType.IsChunk())
            {
                // should be handled outside the member writer
                throw new InvalidOperationException();
            }
        }