@Override
  public int getChildRole(@NotNull ASTNode child) {
    LOG.assertTrue(child.getTreeParent() == this);
    if (ElementType.EXPRESSION_BIT_SET.contains(child.getElementType())){
      int role = getChildRole(child, ChildRole.CONDITION);
      if (role != ChildRoleBase.NONE) return role;
      role = getChildRole(child, ChildRole.THEN_EXPRESSION);
      if (role != ChildRoleBase.NONE) return role;
      role = getChildRole(child, ChildRole.ELSE_EXPRESSION);
      return role;
    }
    if (child.getElementType() == JavaTokenType.QUEST){
      return ChildRole.QUEST;
    }
    if (child.getElementType() == JavaTokenType.COLON){
      return ChildRole.COLON;
    }
    return ChildRoleBase.NONE;
  }
@Override
  public int getChildRole(@NotNull ASTNode child)