private bool JumptToDataSet(DataBlock dataBlock)
 {
     if (dataBlock.moveTo("DATASET") == false)
         return false;
     // valida el tipo de dato
     if (checkDataType(dataBlock) == false)
             return false;
         //
     dataBlock.move(-2);
     // retrocede para leer el nombre
     if (dataBlock.moveBackString(32) < 1)
     {
         dataBlock.move(6);
         // este no es válido... busca si hay más...
         return JumptToDataSet(dataBlock);
     }
     else
         return true;
 }
        private void ProcessOcurrence(DataBlock dataBlock, List<Entity> leaves, List<Entity> entitiesNames)
        {
            if (dataBlock.moveBackString() == -1)
                return;

            int keepN = dataBlock.n;
            string child = dataBlock.eatShortString();
            dataBlock.n = keepN;
            if (entitiesNames.Count > 0 && entitiesNames[entitiesNames.Count - 1].Name == child)
                return;
            if (dataBlock.IsText(child) == false || child == "") return;
            // avanzó ok...
            List<Entity> names = new List<Entity>();
            TryEntities(dataBlock, child, names);
            if (names.Count > 0)
                leaves.AddRange(names);
        }