/// <summary>
        /// Decode an array type according to dimensions constraints specified in 6.2.2.1.3 FieldMetaData
        /// </summary>
        /// <param name="binaryDecoder"></param>
        /// <param name="builtInType"></param>
        /// <returns></returns>
        private object DecodeRawArrayOneDimension(BinaryDecoder binaryDecoder, BuiltInType builtInType)
        {
            switch ((BuiltInType)builtInType)
            {
            case BuiltInType.Boolean:
                return(binaryDecoder.ReadBooleanArray(null));

            case BuiltInType.SByte:
                return(binaryDecoder.ReadSByteArray(null));

            case BuiltInType.Byte:
                return(binaryDecoder.ReadByteArray(null));

            case BuiltInType.Int16:
                return(binaryDecoder.ReadInt16Array(null));

            case BuiltInType.UInt16:
                return(binaryDecoder.ReadUInt16Array(null));

            case BuiltInType.Int32:
                return(binaryDecoder.ReadInt32Array(null));

            case BuiltInType.UInt32:
                return(binaryDecoder.ReadUInt32Array(null));

            case BuiltInType.Int64:
                return(binaryDecoder.ReadInt64Array(null));

            case BuiltInType.UInt64:
                return(binaryDecoder.ReadUInt64Array(null));

            case BuiltInType.Float:
                return(binaryDecoder.ReadFloatArray(null));

            case BuiltInType.Double:
                return(binaryDecoder.ReadDoubleArray(null));

            case BuiltInType.String:
                return(binaryDecoder.ReadStringArray(null));

            case BuiltInType.DateTime:
                return(binaryDecoder.ReadDateTimeArray(null));

            case BuiltInType.Guid:
                return(binaryDecoder.ReadGuidArray(null));

            case BuiltInType.ByteString:
                return(binaryDecoder.ReadByteStringArray(null));

            case BuiltInType.XmlElement:
                return(binaryDecoder.ReadXmlElementArray(null));

            case BuiltInType.NodeId:
                return(binaryDecoder.ReadNodeIdArray(null));

            case BuiltInType.ExpandedNodeId:
                return(binaryDecoder.ReadExpandedNodeIdArray(null));

            case BuiltInType.StatusCode:
                return(binaryDecoder.ReadStatusCodeArray(null));

            case BuiltInType.QualifiedName:
                return(binaryDecoder.ReadQualifiedNameArray(null));

            case BuiltInType.LocalizedText:
                return(binaryDecoder.ReadLocalizedTextArray(null));

            case BuiltInType.DataValue:
                return(binaryDecoder.ReadDataValueArray(null));

            case BuiltInType.Enumeration:
                //return binaryDecoder.ReadInt32Array(null);
                //return binaryDecoder.ReadEnumeratedArray(null, typeof(Int32));
                return(binaryDecoder.ReadVariantArray(null));

            case BuiltInType.Variant:
                return(binaryDecoder.ReadVariantArray(null));

            case BuiltInType.ExtensionObject:
                return(binaryDecoder.ReadExtensionObjectArray(null));

            default:
                return(null);
            }
        }