public override void Parse(VoidPtr address)
 {
     if (DataOffset1 > 0)
     {
         MoveDefGroupNode g = new MoveDefGroupNode() { _name = "Data1", _offsetID = 0 };
         g.Initialize(this, BaseAddress + DataOffset1, 0);
         for (int i = 0; i < Count1; i++)
         {
             MoveDefOffsetNode d = new MoveDefOffsetNode() { _name = "Offset" + i };
             d.Initialize(g, BaseAddress + DataOffset1 + i * 4, 4);
             if (d.DataOffset > 0)
             {
                 MoveDefListOffsetNode o = new MoveDefListOffsetNode() { _name = "Data" };
                 o.Initialize(d, BaseAddress + d.DataOffset, 0);
                 for (int x = 0; x < o.Count; x++)
                 {
                     MoveDefOffsetNode d2 = new MoveDefOffsetNode() { _name = "Offset" + i };
                     d2.Initialize(o, BaseAddress + o.DataOffset + x * 4, 4);
                     new MoveDefIndexNode() { _name = "Index" + x }.Initialize(d2, BaseAddress + d2.DataOffset, 0);
                 }
             }
         }
     }
     if (DataOffset2 > 0)
     {
         MoveDefGroupNode g = new MoveDefGroupNode() { _name = "Data2", _offsetID = 1 };
         g.Initialize(this, BaseAddress + DataOffset2, 0);
         for (int i = 0; i < Count2; i++)
         {
             MoveDefOffsetNode d = new MoveDefOffsetNode() { _name = "Offset" + i };
             d.Initialize(g, BaseAddress + DataOffset2 + i * 4, 4);
             if (d.DataOffset > 0)
             {
                 MoveDefListOffsetNode o = new MoveDefListOffsetNode() { _name = "Data" };
                 o.Initialize(d, BaseAddress + d.DataOffset, 0);
                 for (int x = 0; x < o.Count; x++)
                 {
                     MoveDefOffsetNode d2 = new MoveDefOffsetNode() { _name = "Offset" + i };
                     d2.Initialize(o, BaseAddress + o.DataOffset + x * 4, 4);
                     new MoveDefIndexNode() { _name = "Index" + x }.Initialize(d2, BaseAddress + d2.DataOffset, 0);
                 }
             }
         }
     }
 }
        public override void Parse(VoidPtr address)
        {
            int size = -1;

            if (DataOffset1 > 0)
                size = _root.GetSize(DataOffset1) / Count;

            if (size > 0)
            {
                MoveDefGroupNode g1 = new MoveDefGroupNode() { _name = "Data1", _offsetID = 0 };
                g1.Initialize(this, BaseAddress + DataOffset1, size * Count);
                for (int i = 0; i < Count; i++)
                    new RawParamList(i) { _name = "Part" + i }.Initialize(g1, BaseAddress + DataOffset1 + i * size, size);
            }

            size = -1;

            if (DataOffset2 > 0)
                size = _root.GetSize(DataOffset2) / Count;

            if (size > 0)
            {
                MoveDefGroupNode g2 = new MoveDefGroupNode() { _name = "Data2", _offsetID = 1 };
                g2.Initialize(this, BaseAddress + DataOffset2, size * Count);
                for (int i = 0; i < Count; i++)
                    new RawParamList(i) { _name = "Part" + i }.Initialize(g2, BaseAddress + DataOffset2 + i * size, size);
            }
        }