@VisibleForTesting Iterable<ApplicationUser> findUsersWithPermission(final Iterable<Integer> permissions, final String name, Either<Project, Issue> projectOrIssue, boolean allowEmptyQuery, Integer maxResults) { final Predicate<User> permissionPredicate = Either.merge(projectOrIssue.left().map(new Function<Project, Predicate<User>>() { @Override public Predicate<User> apply(Project project) { return createProjectPredicate(permissions, project); } }).right().map(new Function<Issue, Predicate<User>>() { @Override public Predicate<User> apply(Issue issue) { return createIssuePredicate(permissions, issue); } })); return userPickerHelper.findUsers(name, true, false, allowEmptyQuery, permissionPredicate, maxResults); }