void (@NotNull PsiVariable variable, @FormatVariableOptions int options, PsiSubstitutor substitutor, @NotNull StringBuilder buffer) { if (BitUtil.isSet(options, SHOW_MODIFIERS) && !BitUtil.isSet(options, MODIFIERS_AFTER)) { formatModifiers(variable, options,buffer); } if (BitUtil.isSet(options, SHOW_TYPE) && !BitUtil.isSet(options, TYPE_AFTER)) { appendSpaceIfNeeded(buffer); buffer.append(formatTypeSafe(variable, variable.getType(), options, substitutor)); } if (variable instanceof PsiField && BitUtil.isSet(options, SHOW_CONTAINING_CLASS)) { PsiClass aClass = ((PsiField)variable).getContainingClass(); if (aClass != null) { String className = aClass.getName(); if (className != null) { appendSpaceIfNeeded(buffer); if (BitUtil.isSet(options, SHOW_FQ_NAME)) { buffer.append(ObjectUtils.notNull(aClass.getQualifiedName(), className)); } else { buffer.append(className); } buffer.append('.'); } } if (BitUtil.isSet(options, SHOW_NAME)) { buffer.append(variable.getName()); } } else{ if (BitUtil.isSet(options, SHOW_NAME)) { String name = variable.getName(); if (StringUtil.isNotEmpty(name)) { appendSpaceIfNeeded(buffer); buffer.append(name); } } } if (BitUtil.isSet(options, SHOW_TYPE) && BitUtil.isSet(options, TYPE_AFTER)) { if (BitUtil.isSet(options, SHOW_NAME) && variable.getName() != null) { buffer.append(':'); } buffer.append(formatTypeSafe(variable, variable.getType(), options, substitutor)); } if (BitUtil.isSet(options, SHOW_MODIFIERS) && BitUtil.isSet(options, MODIFIERS_AFTER)) { formatModifiers(variable, options,buffer); } if (BitUtil.isSet(options, SHOW_INITIALIZER)) { PsiExpression initializer = variable.getInitializer(); if (initializer != null) { buffer.append(" = "); String text = PsiExpressionTrimRenderer.render(initializer); int index1 = text.lastIndexOf('\n'); if (index1 < 0) index1 = text.length(); int index2 = text.lastIndexOf('\r'); if (index2 < 0) index2 = text.length(); int index = Math.min(index1, index2); buffer.append(text, 0, index); if (index < text.length()) { buffer.append(" ..."); } } } }