anchor.diff:  
   			if (null == this.getHaving()) {
   				if (!this._groups.isEmpty) {
  -					var groups = this._groups;
  +					List<String> groups = new List<String>();
  +					groups.addAll(this._groups);
   
   					for (var x = 0; x < groups.length; ++x) {
   						statement.addIdentifier(groups[x]);
  
positive.code: 			case Query.ACTION_COUNT:
  			case Query.ACTION_SELECT:
  			default:
  				var columns_stmnt = this.getColumnsClause(conn);
  				stmnt.addIdentifiers(columns_stmnt.getIdentifiers());
  				stmnt.addParams(columns_stmnt.getParams());
  				qry_s.write('SELECT ${columns_stmnt.getString()}\nFROM ');
  				break;
  		}
  
  		var table_stmnt = this.getTablesClause(conn);
  		stmnt.addIdentifiers(table_stmnt.getIdentifiers());
  		stmnt.addParams(table_stmnt.getParams());
  		qry_s.write(table_stmnt.getString());
  
  		if (null != _joins && !this._joins.isEmpty) {
  			var join_stmnt;
  			for (QueryJoin join in this._joins) {
  				join_stmnt = join.getQueryStatement(conn);
  				qry_s.write("\n\t");
  				qry_s.write(join_stmnt.string);
  				stmnt.addParams(join_stmnt.params);
  				stmnt.addIdentifiers(join_stmnt.identifiers);
  			}
  		}
  
  
negative.code: 		return statement;
  	}
  
  	QueryStatement getGroupByClause([DDO conn = null]) {
  		QueryStatement statement = new QueryStatement(conn);
  		if (!this._groups.isEmpty) {
  			List sgroups = new List();
  			for (var group in _groups) {
  				statement.addIdentifier(group);
  				sgroups.add(QueryStatement.IDENTIFIER);
  			}
  