rfp.run(retVal, true, remoteFolders); rfp.run(retVal, false, excludeRemoteFolders);
    public String toString()    {        StringBuilder retVal = new StringBuilder("");        //        // all this pain could have been eliminated with a simple preprocessor macro...fucking java...        //        Printer<Tag> tp = new Printer<Tag>()         { void printOne(StringBuilder s, Tag t)     { s.append(t.getName()); } };        Printer<Integer> ip = new Printer<Integer>() { void printOne(StringBuilder s, Integer i) { s.append(i); } };        Printer<Byte> bp = new Printer<Byte>()       { void printOne(StringBuilder s, Byte b)    { s.append(b); } };        Printer<Range> rp = new Printer<Range>()     { void printOne(StringBuilder s, Range r)   { s.append(r.toString()); } };        FolderPrinter fp = new FolderPrinter();//      Printer<Folder> fp = new Printer<Folder>()   {//      void printOne(StringBuilder s, Folder f)  {//      if (f instanceof Mountpoint) {//      Mountpoint mpt = (Mountpoint)f;//      s.append(mpt.getRemoteId());//      } else {//      s.append(f.getName());//      }//      } //      };        // tags        tp.run(retVal, tags, "TAG");        tp.run(retVal, excludeTags, "-TAG");        // hasTags?        if (hasTags != null) {            if (hasTags) {                retVal.append("HAS_TAG ");            } else {                retVal.append("-HAS_TAG ");            }        }        // folders        fp.run(retVal, true, folders);        fp.run(retVal, false, excludeFolders);        // convId        if (convId != 0) {            retVal.append("CONV:(").append(convId).append(") ");        }        ip.run(retVal, prohibitedConvIds, "-CONVID");        ip.run(retVal, prohibitedConvIds, "-CONVID");        // itemId        ip.run(retVal, itemIds, "ITEM");        ip.run(retVal, prohibitedItemIds, "-ITEM");        // indexId        ip.run(retVal, indexIds, "INDEXID");        // type        bp.run(retVal, types, "TYPE");         bp.run(retVal, excludeTypes, "-TYPE");         // dates        rp.run(retVal, dates, "DATES");         // modified        rp.run(retVal, modified, "MOD") ;        // size        rp.run(retVal, sizes, "SIZE");        return retVal.toString();    }