private void generateMethods(ClassNode root, FormattedFileWriter writer)
            throws java.io.IOException {
        writer.outputLine("// methods");
        Iterator it = root.getMethods();
        while (it.hasNext() == true) {
            int currentIndex = 0;
            MethodNode node = (MethodNode) it.next();
            writer.outputLine("/*");
            writer.outputLine(" * " + (node.isStatic() == true ? "static " : "") + node.getJavaSignature());
            writer.outputLine(" */");
            if (node.isStatic() == true) {
                writer.output("static ");
            }
            if (proxyGenSettings.getUseRichTypes() == true) {
                writer.output(node.getReturnType().getJNITypeName(proxyGenSettings.getProject().getUsePartialSpec()) + " ");
                writer.output(node.getCPPName() + "(");
            } else {
                writer.output(node.getReturnType().getPlainJNITypeName() + " ");
                writer.output(node.getUniqueCPPName() + "(");
            }

            Iterator params = node.getParameterList();
            while (params.hasNext() == true) {
                ClassNode currentParam = (ClassNode) params.next();
                if (proxyGenSettings.getUseRichTypes() == true) {
                    writer.output(currentParam.getJNITypeName(proxyGenSettings.getProject().getUsePartialSpec()) + " p" + currentIndex++);
                } else {
                    writer.output(currentParam.getPlainJNITypeName() + " p" + currentIndex++);
                }
                if (params.hasNext() == true) {
                    writer.output(", ");
                }
            }
            writer.outputLine(");");
        }

        writer.newLine(1);
    }