private Indent calcCurrentIndent(final ASTNode child, final int state) {
    IElementType elementType = child.getElementType();
    if (isRBrace(child) || elementType == JavaTokenType.AT) {
      return Indent.getNoneIndent();
    }

    if (state == BEFORE_FIRST) return Indent.getNoneIndent();

    if (elementType == JavaElementType.SWITCH_LABEL_STATEMENT) {
      return getCodeBlockInternalIndent(myChildrenIndent);
    }
    if (state == BEFORE_LBRACE) {
      if (isLBrace(child)
          || elementType == JavaTokenType.CLASS_KEYWORD
          || elementType == JavaTokenType.INTERFACE_KEYWORD
          || elementType == JavaTokenType.IDENTIFIER
          || elementType == JavaTokenType.ENUM_KEYWORD) {
        return Indent.getNoneIndent();
      } else {
        return Indent.getContinuationIndent(myIndentSettings.USE_RELATIVE_INDENTS);
      }
    } else {
      if (isRBrace(child)) {
        return Indent.getNoneIndent();
      } else {
        return getCodeBlockInternalIndent(myChildrenIndent);
      }
    }
  }