@Override
  public void visit(SelectExpressionItem selectExpressionItem) {
    if (firstRun) {
      if (selectExpressionItem.getAlias() != null) {
        aliases.add(selectExpressionItem.getAlias().getName().toUpperCase());
      }
    } else {
      if (selectExpressionItem.getAlias() == null) {

        while (true) {
          String alias = getNextAlias().toUpperCase();
          if (!aliases.contains(alias)) {
            aliases.add(alias);
            selectExpressionItem.setAlias(new Alias(alias));
            break;
          }
        }
      }
    }
  }
 @Override
 public void visit(PlainSelect plainSelect) {
   firstRun = true;
   counter = 0;
   aliases.clear();
   for (SelectItem item : plainSelect.getSelectItems()) {
     item.accept(this);
   }
   firstRun = false;
   for (SelectItem item : plainSelect.getSelectItems()) {
     item.accept(this);
   }
 }