void DoCopyTree(ref TPredicateItemBig ABig, ref TDynamicArray AStack) { int m_who; TAlternativeParserItemList ML; TAlternativeParserItemBase mBase; TAlternativeParserItemTFS mTFS; TAlternativeParserItemBig mBig; TPredicateItemTFE mTFE; TAlternativeParserItemBig mRfc = ABig.Rfc; ML = mRfc.MainList; for (int i = 0; i <= ML.Count - 1; i++) { mBase = ML.GetItems(i); m_who = mBase.Who(); if (m_who == 0) { mTFS = (TAlternativeParserItemTFS)(mBase); TPredicateItemTFS iTfs = new TPredicateItemTFS(); iTfs.Assign(mTFS); ABig.AddItem(iTfs); for (int j = 0; j <= iTfs.TFECount - 1; j++) { mTFE = iTfs.GetTFEItems(j); if (mTFE.RfcTFE.Big != null) { TPredicateItemBig iBig = NewBig(mTFE.RfcTFE.Big); mTFE.Big = iBig; AStack.InsertToFirst(iBig); } } } if (m_who == 1) { mBig = (TAlternativeParserItemBig)(mBase); TPredicateItemBig iBig = NewBig(mBig); ABig.AddItem(iBig); AStack.InsertToFirst(iBig); } } for (int i = 0; i <= mRfc.CountBig - 1; i++) { mBig = mRfc.GetItemsBig(i); TPredicateItemBig iBig = NewBig(mBig); ABig.AddItem(iBig); AStack.InsertToFirst(iBig); } }