private static void FixFutureFunctions(TNameRecordList Names, Int32List FuturePos, TParsedTokenList Tokens, MemoryStream Data, int[] TokenOffset, ref TTokenOffset StreamPos) { if (FuturePos.Count == 0) { return; } List <byte> NewData = new List <byte>(Data.ToArray()); //we need to insert in any order for (int i = 0; i < FuturePos.Count; i++) { Tokens.MoveTo(FuturePos[i]); TBaseFunctionToken FuncToken = (TBaseFunctionToken)Tokens.GetToken(FuturePos[i]); for (int k = 0; k < FuncToken.ArgumentCount; k++) //this doesn't include the name. { Tokens.Flush(); } int TokPos = Tokens.SavePosition(); while (TokPos > 0) { if (!(Tokens.GetToken(TokPos - 1) is TIgnoreInCalcToken) || Tokens.GetToken(TokPos - 1) is TAttrToken) { break; } TokPos--; } int ofs = TokenOffset[TokPos]; WriteFutureName(NewData, ofs, FindName(Names, FuncToken.GetFunctionData().FutureName)); for (int k = TokPos; k < TokenOffset.Length; k++) { TokenOffset[k] += 5; } TTokenOffset NewStreamPos = new TTokenOffset(); foreach (int streamofs in StreamPos.Keys) { int sofs = streamofs; if (sofs >= ofs) { sofs += 5; } NewStreamPos.Add(sofs, StreamPos[streamofs]); } StreamPos = NewStreamPos; } Data.SetLength(0); Data.Write(NewData.ToArray(), 0, NewData.Count); }