private int getSumChildrenSize() { int nNbOccurs = getNbOccurs(); int nSingleItemSize = getSingleItemRequiredStorageSize(); int nSumChildrenSize = 0; if (isVarDefForm()) nSumChildrenSize = getHeaderLength(); if (m_arrChildren != null) { int nNbChildren = m_arrChildren.size(); for (int nChild = 0; nChild < nNbChildren; nChild++) { VarDefBase varDefChild = getChild(nChild); int nSize = varDefChild.calcSize(); if (varDefChild.m_varDefRedefinOrigin == null || varDefChild.isEditInMapRedefine()) nSumChildrenSize += nSize; else if (isVarInMapRedefine() && !m_varDefParent.isEditInMapRedefine()) nSumChildrenSize += nSize; } } if (nSingleItemSize == 0) // We have no size defined for ourself { if (isEditInMapRedefine() && m_OccursDef != null) return nNbOccurs * nSumChildrenSize; if (m_varDefRedefinOrigin != null) // We are a redefine { int n = m_varDefRedefinOrigin.getTotalSize(); return n; // do not count the number of occurances, because } return nNbOccurs * nSumChildrenSize; } return nNbOccurs * nSingleItemSize; }