public override MethodEmitter Method(MethodDeclaration signature) { StringBuilder target = new StringBuilder(); if (signature.Constructor) { if (signature.Static) { target.Append(" static\n {\n"); return(new MethodSourceWriter(target, this)); } else { target.Append(" ").Append(Modifier.ToString(signature.Modifiers())).Append(" "); TypeParameters(target, signature); target.Append(signature.DeclaringClass().name()); } } else { target.Append(" ").Append(Modifier.ToString(signature.Modifiers())).Append(" "); TypeParameters(target, signature); target.Append(signature.ReturnType().fullName()).Append(" ").Append(signature.Name()); } target.Append("("); string prefix = " "; foreach (Parameter parameter in signature.Parameters()) { target.Append(prefix).Append(parameter.Type().fullName()).Append(" ").Append(parameter.Name()); prefix = ", "; } if (prefix.Length > 1) { target.Append(" "); } target.Append(')'); string sep = " throws "; foreach (TypeReference thrown in signature.ThrowsList()) { target.Append(sep).Append(thrown.FullName()); sep = ", "; } target.Append("\n {\n"); return(new MethodSourceWriter(target, this)); }