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);
}