private static MethodDefinition DeclareMethod(AssemblyDefinition assembly, JavaClass jc, JavaMethod jm) { string name = IdentifierHelper.GetDotNetFullName(jm.GetName(jc)); MethodAttributes attributes = jm.GetAttributes(); ModuleDefinition module = assembly.MainModule; string returnTypeName = jm.GetReturnType(jc); TypeReference returnType = module.GetDescriptorType(returnTypeName); if (name == ".ctor" || name == ".cctor") { attributes |= MethodAttributes.SpecialName | MethodAttributes.RTSpecialName; attributes &= ~MethodAttributes.Virtual; } MethodDefinition result = new MethodDefinition(name, attributes, returnType); string[] parameterTypes = jm.GetParameterTypes(jc); string[] parameterNames = jm.GetParameterNames(jc); for (int i = 0; i < parameterTypes.Length; i++) { result.Parameters.Add(new ParameterDefinition(parameterNames[i], ParameterAttributes.None, module.GetDescriptorType(parameterTypes[i]))); } return(result); }