@Override
  public void visitNode(ILanguageObject obj) {
    if (obj == null) {
      append(DisplayNodeConstants.UNDEFINED);
      return;
    }

    if ((obj instanceof IExpressionSymbol && !(obj instanceof IAggregateSymbol))) {
      IQueryService queryService = ModelerCore.getTeiidQueryService();
      ISQLStringVisitor delegate = queryService.getCallbackSQLStringVisitor(this);
      obj.acceptVisitor(delegate);
      return;
    }

    // turn off indenting for nested commands
    int childIndent = indentLevel;
    if ((node.languageObject instanceof ISubqueryContainer
            || node.languageObject instanceof IExpressionStatement)
        && obj instanceof ICommand) {
      childIndent = -1;
    }
    DisplayNode child = DisplayNodeFactory.createDisplayNode(node, obj, childIndent);
    node.addChildNode(child);
  }
  protected void setOriginalSql(ILanguageObject theLangObj) {
    IQueryService queryService = ModelerCore.getTeiidQueryService();
    ISQLStringVisitor visitor = queryService.getSQLStringVisitor();

    originalSql.setText(visitor.getSQLString(theLangObj));
  }