void (@NonNls StringBuilder out) { out.append(hasEnumConstants() ? "" : "public ").append(className).append('('); if (requiresBackPointer) { final String parameterName = myJavaCodeStyleManager.propertyNameToVariableName(backPointerName, VariableKind.PARAMETER); out.append(originalClassName); if (!typeParams.isEmpty()) { out.append('<'); boolean first = true; for (PsiTypeParameter typeParam : typeParams) { if (!first) { out.append(','); } out.append(typeParam.getName()); first = false; } out.append('>'); } out.append(' ').append(parameterName); } else if (hasEnumConstants()) { out.append(myEnumParameterType.getCanonicalText()).append(" ").append("value"); } out.append(") {\n"); if (requiresBackPointer) { final String parameterName = myJavaCodeStyleManager.propertyNameToVariableName(backPointerName, VariableKind.PARAMETER); if (backPointerName.equals(parameterName)) { out.append("this."); } out.append(backPointerName).append('=').append(parameterName).append(";\n"); } else if (hasEnumConstants()) { final String fieldName = getValueFieldName(); if (fieldName.equals("value")) { out.append("this."); } out.append(fieldName).append("=value;\n"); } out.append("}\n"); }