code: public List<Long> selectComponentIdsByPermissionAndUserId(DbSession dbSession, String permission, int userId) {
      checkArgument(
        !UNSUPPORTED_PROJECT_PERMISSIONS.contains(permission),
        "Permissions %s are not supported by selectComponentIdsByPermissionAndUserId", UNSUPPORTED_PROJECT_PERMISSIONS);
      return mapper(dbSession).selectComponentIdsByPermissionAndUserId(permission, userId);
    }
docs: All the projects on which the user has {@code permission}, directly or through
  groups.
  
  @throws IllegalArgumentException this method does not support permissions {@link UserRole#USER user} nor
  {@link UserRole#CODEVIEWER codeviewer} because it does not support public root components.