private AbstractTypeEmitter GetEmitter(ClassEmitter @class, INamingScope namingScope) { var methodInfo = method.MethodOnTarget; var suggestedName = string.Format("Castle.Proxies.Delegates.{0}_{1}", methodInfo.DeclaringType.Name, method.Method.Name); var uniqueName = namingScope.ParentScope.GetUniqueName(suggestedName); var @delegate = new ClassEmitter(@class.ModuleScope, uniqueName, typeof(MulticastDelegate), Type.EmptyTypes, DelegateFlags); @delegate.CopyGenericParametersFromMethod(method.Method); return(@delegate); }