private void generateSetters(ClassNode root, FormattedFileWriter writer)
            throws java.io.IOException {
        HashMap methodNames = new HashMap();
        Iterator it = root.getMethods();
        while (it.hasNext() == true) {
            MethodNode node = (MethodNode) it.next();
            String name = node.getCPPName();
            Iterator params = node.getParameterList();
            if (params.hasNext() == true) {
                params.next();
                if (params.hasNext() == false && name.substring(0, 3).equals("set") == true);
                methodNames.put(name, name);
            }
        }

        writer.outputLine("// attribute setters");
        it = root.getFields();
        while (it.hasNext() == true) {
            FieldNode node = (FieldNode) it.next();
            ClassNode current = node.getType();
            String methodName = "set" + Character.toUpperCase(node.getName().charAt(0));
            methodName += node.getName().substring(1);
            if (methodNames.containsKey(methodName) == true) {
                methodName = "_" + methodName;
            }
            if (proxyGenSettings.getUseRichTypes() == true) {
                writer.outputLine("void " + root.getCPPClassName() + "Proxy::" + methodName + "(" + current.getJNITypeName(proxyGenSettings.getProject().getUsePartialSpec()) + " " + node.getCPPName() + ")");
            } else {
                writer.outputLine("void " + root.getCPPClassName() + "Proxy::" + methodName + "(" + current.getPlainJNITypeName() + " " + node.getCPPName() + ")");
            }
            writer.outputLine("{");
            writer.incTabLevel();
            writer.output("jfieldID fid = JNIEnvHelper::Get");
            if (node.isStatic() == true) {
                writer.output("Static");
            }
            writer.output("FieldID( _getObjectClass(), ");
            writer.outputLine("\"" + node.getName() + "\", \"" + current.getJNIString() + "\" );");
            writer.output(node.getJNISetFieldCall());
            if (node.isStatic() == true) {
                writer.output(" _getObjectClass(), ");
            } else {
                writer.output(" _getPeerObject(), ");
            }
            writer.outputLine("fid, " + node.getCPPName() + " );");

            writer.decTabLevel();
            writer.outputLine("}");
            writer.newLine(1);
        }
    }