docs: public static String serialize(QueryCriterion queryCriterion){
          if(queryCriterion instanceof EqualQueryCriterion){
              EqualQueryCriterion criterion = (EqualQueryCriterion) queryCriterion;
              return criterion.getMetadataKey() + " equals " + escapeString(criterion.getCriterion());
          } else if(queryCriterion instanceof NotEqualQueryCriterion){
              NotEqualQueryCriterion criterion = (NotEqualQueryCriterion) queryCriterion;
              return criterion.getMetadataKey() + " not equals " + escapeString(criterion.getCriterion());
          } else if(queryCriterion instanceof ContainQueryCriterion){
              ContainQueryCriterion criterion = (ContainQueryCriterion) queryCriterion;
              return criterion.getMetadataKey();
          } else if(queryCriterion instanceof NotContainQueryCriterion){
              NotContainQueryCriterion criterion = (NotContainQueryCriterion) queryCriterion;
              return "not " + criterion.getMetadataKey();
          } else if(queryCriterion instanceof InQueryCriterion){
              InQueryCriterion criterion = (InQueryCriterion) queryCriterion;
              StringBuilder sb = new StringBuilder(criterion.getMetadataKey());
              sb.append(" in [ ");
              for(String s : criterion.getCriterion()){
                  sb.append(escapeString(s)).append(", ");
              }
              sb.append("]");
              return sb.toString();
          } else if(queryCriterion instanceof NotInQueryCriterion){
              NotInQueryCriterion criterion = (NotInQueryCriterion) queryCriterion;
              StringBuilder sb = new StringBuilder(criterion.getMetadataKey());
              sb.append(" not in [ ");
              for(String s : criterion.getCriterion()){
                  sb.append(escapeString(s)).append(", ");
              }
              sb.append("]");
              return sb.toString();
          } else if(queryCriterion instanceof PatternQueryCriterion){
              PatternQueryCriterion criterion = (PatternQueryCriterion) queryCriterion;
              return criterion.getMetadataKey() + " matches " + escapeString(criterion.getCriterion());
          }
          return "";
      }