void CreateEnumerator() { IType abstractEnumeratorType = TypeSystemServices.Map(typeof(Boo.Lang.GenericGeneratorEnumerator<>)). GenericInfo.ConstructType(new IType[] {_generatorItemType}); _state = NameResolutionService.ResolveField(abstractEnumeratorType, "_state"); _yield = NameResolutionService.ResolveMethod(abstractEnumeratorType, "Yield"); _enumerator = CodeBuilder.CreateClass("$"); _enumerator.AddAttribute(CodeBuilder.CreateAttribute(typeof(System.Runtime.CompilerServices.CompilerGeneratedAttribute))); _enumerator.Modifiers |= TypeMemberModifiers.Final; _enumerator.LexicalInfo = this.LexicalInfo; _enumerator.AddBaseType(abstractEnumeratorType); _enumerator.AddBaseType(TypeSystemServices.IEnumeratorType); CreateEnumeratorConstructor(); CreateMoveNext(); _enumerable.ClassDefinition.Members.Add(_enumerator.ClassDefinition); //new Boo.Lang.Compiler.Ast.Visitors.BooPrinterVisitor(System.Console.Out).Visit(_enumerator.ClassDefinition); }