public virtual void PrintDelegateDefinition(ITypeDefinition delegateDefinition) {
PrintTypeDefinitionAttributes(delegateDefinition);
PrintToken(CSharpToken.Indent);
IMethodDefinition invokeMethod = null;
foreach (var invokeMember in delegateDefinition.GetMatchingMembers(m => m.Name.Value == "Invoke")) {
IMethodDefinition idef = invokeMember as IMethodDefinition;
if (idef != null) { invokeMethod = idef; break; }
}
PrintTypeDefinitionVisibility(delegateDefinition);
if (IsMethodUnsafe(invokeMethod))
PrintKeywordUnsafe();
PrintKeywordDelegate();
PrintMethodDefinitionReturnType(invokeMethod);
PrintToken(CSharpToken.Space);
PrintTypeDefinitionName(delegateDefinition);
if (delegateDefinition.GenericParameterCount > 0) {
this.Traverse(delegateDefinition.GenericParameters);
}
if (invokeMethod != null)
Traverse(invokeMethod.Parameters);
PrintToken(CSharpToken.Semicolon);
}