Program: 90113
Project: 90113
Buggy source:
/** 
 * Find jobs based on the parameters.
 * @param id The job id
 * @param jobName The job name
 * @param userName The user who created the job
 * @param status The job status
 * @param clusterName The cluster name
 * @param clusterId The cluster id
 * @return The specification
 */
public static Specification<Job> find(final String id,final String jobName,final String userName,final JobStatus status,final String clusterName,final String clusterId){
  return new Specification<Job>(){
    @Override public Predicate toPredicate(    final Root<Job> root,    final CriteriaQuery<?> cq,    final CriteriaBuilder cb){
      final List<Predicate> predicates=new ArrayList<>();
      if (StringUtils.isNotBlank(id)) {
        predicates.add(cb.like(root.get(Job_.id),id));
      }
      if (StringUtils.isNotBlank(jobName)) {
        predicates.add(cb.like(root.get(Job_.name),jobName));
      }
      if (StringUtils.isNotBlank(userName)) {
        predicates.add(cb.equal(root.get(Job_.user),userName));
      }
      if (status != null) {
        predicates.add(cb.equal(root.get(Job_.status),status));
      }
      if (StringUtils.isNotBlank(clusterName)) {
        predicates.add(cb.equal(root.get(Job_.executionClusterName),clusterName));
      }
      if (StringUtils.isNotBlank(clusterId)) {
        predicates.add(cb.equal(root.get(Job_.executionClusterId),clusterId));
      }
      return cb.and(predicates.toArray(new Predicate[predicates.size()]));
    }
  }
;
}

Fixed version (ground truth):
/** 
 * Find jobs based on the parameters.
 * @param id The job id
 * @param jobName The job name
 * @param userName The user who created the job
 * @param status The job status
 * @param clusterName The cluster name
 * @param clusterId The cluster id
 * @return The specification
 */
public static Specification<Job> find(final String id,final String jobName,final String userName,final JobStatus status,final Set<String> tags,final String clusterName,final String clusterId){
  return new Specification<Job>(){
    @Override public Predicate toPredicate(    final Root<Job> root,    final CriteriaQuery<?> cq,    final CriteriaBuilder cb){
      final List<Predicate> predicates=new ArrayList<>();
      if (StringUtils.isNotBlank(id)) {
        predicates.add(cb.like(root.get(Job_.id),id));
      }
      if (StringUtils.isNotBlank(jobName)) {
        predicates.add(cb.like(root.get(Job_.name),jobName));
      }
      if (StringUtils.isNotBlank(userName)) {
        predicates.add(cb.equal(root.get(Job_.user),userName));
      }
      if (status != null) {
        predicates.add(cb.equal(root.get(Job_.status),status));
      }
      if (tags != null) {
        for (        final String tag : tags) {
          predicates.add(cb.isMember(tag,root.get(Job_.tags)));
        }
      }
      if (StringUtils.isNotBlank(clusterName)) {
        predicates.add(cb.equal(root.get(Job_.executionClusterName),clusterName));
      }
      if (StringUtils.isNotBlank(clusterId)) {
        predicates.add(cb.equal(root.get(Job_.executionClusterId),clusterId));
      }
      return cb.and(predicates.toArray(new Predicate[predicates.size()]));
    }
  }
;
}