private void convert(YJSONObject reference, YJSONArray newArray)
        {
            int length = newArray.Length;

            for (int i = 0; i < length; i++)
            {
                string       key            = reference.getKeyFromIdx(i);
                YJSONContent new_item       = newArray.get(i);
                YJSONContent reference_item = reference.get(key);

                if (new_item.getJSONType() == reference_item.getJSONType())
                {
                    parsed.Add(key, new_item);
                    _keys.Add(key);
                }
                else if (new_item.getJSONType() == YJSONType.ARRAY && reference_item.getJSONType() == YJSONType.OBJECT)
                {
                    YJSONObject jobj = new YJSONObject(new_item._data, new_item._data_start, reference_item._data_boundary);
                    jobj.convert((YJSONObject)reference_item, (YJSONArray)new_item);
                    parsed.Add(key, jobj);
                    _keys.Add(key);
                }
                else
                {
                    throw new System.Exception("Unable to convert " + new_item.getJSONType().ToString() + " to " + reference.getJSONType().ToString());
                }
            }
        }