private Dictionary<string, DataBlock> SplitDataBlocks(DataBlock dataBlock, List<Entity> entitiesNames)
        {
            Dictionary<string, DataBlock> dataParts = new Dictionary<string, DataBlock>();

            int prevStart = -1;
            int iStart = 0;
            List<Tuple<string, string>> linealEntityParentNames = Entity.Linealize(null, entitiesNames);
            for (int i = 0; i < linealEntityParentNames.Count; i++)
            {
                string entity = linealEntityParentNames[i].Item2;
                iStart = ParseBeginning(dataBlock, linealEntityParentNames[i].Item2,
                                                                                        linealEntityParentNames[i].Item1);
                if (prevStart != -1)
                {
                    dataParts[linealEntityParentNames[i - 1].Item2] = dataBlock.getPart(prevStart, iStart);
                }
                prevStart = iStart;
            }
            // guarda el último
            iStart = dataBlock.data.Length;
            dataParts[linealEntityParentNames[linealEntityParentNames.Count - 1].Item2] = dataBlock.getPart(prevStart, iStart);
            return dataParts;
        }