private void MakeFieldInitialiser(List <CompileMethod> currentListOfMethods) { LexListBuilder lb = new LexListBuilder(); lb.AddAndPromoteQuotes("public void FieldsInitialiser () { "); lb.AddAndPromoteQuotes("if (Fields == null) Fields = new List<object> () ;"); foreach (var f in (from f in MadeFieldsDict orderby f.Value.Index select f)) { Type theType = f.Value.VarType; lb.AddAndPromoteQuotes("`type `name ; if (Fields.Count == `index) Fields.Add ( (object)`name ) ; ", "type", theType, "name", f.Value.VarName, "index", f.Value.Index); // The conditional 'if (Fields.Count == f.Value.Index)' bit means that this initialisation function can be called repeatedly, and only the new ones will be initialised. } lb.AddAndPromoteQuotes("}"); LexList ll = lb.ToLexList(); ll.CrosslinkBrackets(); CompileNextMethodHeader(ll, true, currentListOfMethods); }