@Nullable
  private Alignment getChildAlignment() {
    // TODO merge it with needListAlignment(ASTNode)
    final IElementType nodeType = myNode.getElementType();
    if (ourListElementTypes.contains(nodeType) ||
        nodeType == PyElementTypes.SLICE_ITEM ||
        nodeType == PyElementTypes.STRING_LITERAL_EXPRESSION) {
      if (isInControlStatement()) {
        return null;
      }
      final PsiElement elem = myNode.getPsi();
      if (elem instanceof PyAstParameterList && !myContext.getSettings().ALIGN_MULTILINE_PARAMETERS) {
        return null;
      }
      if ((elem instanceof PyAstSequenceExpression || elem instanceof PyAstComprehensionElement) &&
          !myContext.getPySettings().ALIGN_COLLECTIONS_AND_COMPREHENSIONS) {
        return null;
      }
      if (elem instanceof PyAstParenthesizedExpression) {
        final PyAstExpression parenthesized = ((PyAstParenthesizedExpression)elem).getContainedExpression();
        if (parenthesized instanceof PyAstTupleExpression && !myContext.getPySettings().ALIGN_COLLECTIONS_AND_COMPREHENSIONS) {
          return null;
        }
      }
      if (elem instanceof PyAstDictLiteralExpression) {
        final PyAstKeyValueExpression lastElement = ArrayUtil.getLastElement(((PyAstDictLiteralExpression)elem).getElements());
        if (lastElement == null || lastElement.getValue() == null /* incomplete */) {
          return null;
        }
      }
      if (elem instanceof PyAstWithStatement && PyPsiUtilsCore.getFirstChildOfType(elem, PyTokenTypes.LPAR) == null) {
        return null;
      }
      return getAlignmentForChildren();
    }
    return null;
  }
@Nullable
  private Alignment getChildAlignment()