Block (@NotNull ASTNode childNode, int propertyAlignment) { Indent indent = Indent.getNoneIndent(); Alignment alignment = null; Wrap wrap = null; if (hasElementType(myNode, JSON_CONTAINERS)) { if (hasElementType(childNode, COMMA)) { wrap = Wrap.createWrap(WrapType.NONE, true); } else if (!hasElementType(childNode, JSON_ALL_BRACES)) { assert myChildWrap != null; wrap = myChildWrap; indent = Indent.getNormalIndent(); } else if (hasElementType(childNode, JSON_OPEN_BRACES)) { if (JsonPsiUtil.isPropertyValue(myPsiElement) && propertyAlignment == ALIGN_PROPERTY_ON_VALUE) { // WEB-13587 Align compound values on opening brace/bracket, not the whole block assert myParent != null && myParent.myParent != null && myParent.myParent.myPropertyValueAlignment != null; alignment = myParent.myParent.myPropertyValueAlignment; } } } // Handle properties alignment else if (hasElementType(myNode, PROPERTY) ) { assert myParent != null && myParent.myPropertyValueAlignment != null; if (hasElementType(childNode, COLON) && propertyAlignment == ALIGN_PROPERTY_ON_COLON) { alignment = myParent.myPropertyValueAlignment; } else if (JsonPsiUtil.isPropertyValue(childNode.getPsi()) && propertyAlignment == ALIGN_PROPERTY_ON_VALUE) { if (!hasElementType(childNode, JSON_CONTAINERS)) { alignment = myParent.myPropertyValueAlignment; } } } return new JsonBlock(this, childNode, myCustomSettings, alignment, indent, wrap, mySpacingBuilder); }