body.addStatement(new ExpressionStatement(new DeclarationExpression(result, ASSIGN, init)));
body.addStatement(append(result, new ConstantExpression(cNode.getName())));
body.addStatement(append(result, new ConstantExpression("(")));
boolean first = true;
List<PropertyNode> pList = getInstanceProperties(cNode);
String getterName = "get" + Verifier.capitalize(pNode.getName());
Expression getter = new MethodCallExpression(VariableExpression.THIS_EXPRESSION, getterName, MethodCallExpression.NO_ARGUMENTS);
body.addStatement(append(result, new StaticMethodCallExpression(INVOKER_TYPE, "toString", getter)));
if (shouldSkip(fNode.getName(), excludes, includes)) continue;
first = appendPrefix(body, result, first, fNode.getName(), includeNames);
body.addStatement(append(result, new StaticMethodCallExpression(INVOKER_TYPE, "toString", new VariableExpression(fNode))));
body.addStatement(append(result, new MethodCallExpression(VariableExpression.SUPER_EXPRESSION, "toString", MethodCallExpression.NO_ARGUMENTS)));
body.addStatement(append(result, new ConstantExpression(")")));
body.addStatement(new ReturnStatement(new MethodCallExpression(result, "toString", MethodCallExpression.NO_ARGUMENTS)));
cNode.addMethod(new MethodNode(hasExistingToString ? "_toString" : "toString", hasExistingToString ? ACC_PRIVATE : ACC_PUBLIC,