public LogicJSONObject GetJSONObject(int index)
        {
            LogicJSONNode node = this.m_items[index];

            if (node.GetJSONNodeType() != LogicJSONNodeType.OBJECT)
            {
                Debugger.Warning("LogicJSONObject::getJSONObject wrong type " + node.GetJSONNodeType() + ", index " + index);
                return(null);
            }

            return((LogicJSONObject)node);
        }
        public LogicJSONString GetJSONString(int index)
        {
            LogicJSONNode node = this.m_items[index];

            if (node.GetJSONNodeType() != LogicJSONNodeType.STRING)
            {
                Debugger.Warning(string.Format("LogicJSONObject::getJSONString wrong type {0}, index {1}", node.GetJSONNodeType(), index));
                return(null);
            }

            return((LogicJSONString)node);
        }
        public LogicJSONBoolean GetJSONBoolean(int index)
        {
            LogicJSONNode node = this.m_items[index];

            if (node.GetJSONNodeType() != LogicJSONNodeType.BOOLEAN)
            {
                Debugger.Warning(string.Format("LogicJSONObject::getJSONBoolean wrong type {0}, index {1}", node.GetJSONNodeType(), index));
                return(null);
            }

            return((LogicJSONBoolean)node);
        }
        public LogicJSONNumber GetJSONNumber(string key)
        {
            int itemIndex = this.m_keys.IndexOf(key);

            if (itemIndex == -1)
            {
                return(null);
            }

            LogicJSONNode node = this.m_items[itemIndex];

            if (node.GetJSONNodeType() == LogicJSONNodeType.NUMBER)
            {
                return((LogicJSONNumber)node);
            }

            Debugger.Warning(string.Format("LogicJSONObject::getJSONNumber type is {0}, key {1}", node.GetJSONNodeType(), key));

            return(null);
        }