public virtual JSONNode Remove(JSONNode aNode)
 {
     return aNode;
 }
 public virtual void Add(string aKey, JSONNode aItem)
 {
 }
 public virtual void Add(JSONNode aItem)
 {
     Add("", aItem);
 }
 public override void Add(string aKey, JSONNode aItem)
 {
     if(!string.IsNullOrEmpty(aKey))
     {
         if(m_Dict.ContainsKey(aKey))
             m_Dict[aKey] = aItem;
         else
             m_Dict.Add(aKey, aItem);
     }
     else
         m_Dict.Add(Guid.NewGuid().ToString(), aItem);
 }
 public override JSONNode Remove(JSONNode aNode)
 {
     throw new Exception("Remove is not implemented");
 }
 public override void Add(string aKey, JSONNode aItem)
 {
     m_List.Add(aItem);
 }
 public override JSONNode Remove(JSONNode aNode)
 {
     m_List.Remove(aNode);
     return aNode;
 }
 private void Set(JSONNode aVal)
 {
     if(m_Key == null)
     {
         m_Node.Add(aVal);
     }
     else
     {
         m_Node.Add(m_Key, aVal);
     }
     m_Node = null; // Be GC friendly.
 }
 public override void Add(string aKey, JSONNode aItem)
 {
     var tmp = new JSONClass();
     tmp.Add(aKey, aItem);
     Set(tmp);
 }
 public override void Add(JSONNode aItem)
 {
     var tmp = new JSONArray();
     tmp.Add(aItem);
     Set(tmp);
 }
 public JSONLazyCreator(JSONNode aNode, string aKey)
 {
     m_Node = aNode;
     m_Key = aKey;
 }
 public JSONLazyCreator(JSONNode aNode)
 {
     m_Node = aNode;
     m_Key = null;
 }