//end Internal subclass declaration

        /*
         * @see org.apache.hadoop.io.Writable#write(java.io.BinaryWriter)
         */
        /// <exception cref="System.IO.IOException"/>
        public virtual void Write(BinaryWriter writer)
        {
            // write componentType
            UTF8.WriteString(writer, _componentType.FullName);
            // write length
            writer.Write(_length);

            // do the inner loop.  Walk the decision tree only once.
            switch (_componentType.Name)
            {
            case "Boolean":
                WriteBooleanArray(writer);
                break;

            case "Char":
                WriteCharArray(writer);
                break;

            case "Byte":
                WriteByteArray(writer);
                break;

            case "Int16":
                WriteShortArray(writer);
                break;

            case "Int32":
                WriteIntArray(writer);
                break;

            case "Int64":
                WriteLongArray(writer);
                break;

            case "Single":
                WriteFloatArray(writer);
                break;

            case "Double":
                WriteDoubleArray(writer);
                break;

            default:
                throw new IOException("Component type " + _componentType + " is set as the output type, but no encoding is implemented for this type.");
            }
        }