code: @CheckReturnValue
      public RoleManager setPermissions(long perms)
      {
          long selfPermissions = PermissionUtil.getEffectivePermission(getGuild().getSelfMember());
          setupPermissions();
          long missingPerms = perms;         // include permissions we want to set to
          missingPerms &= ~selfPermissions;  // exclude permissions we have
          missingPerms &= ~this.permissions; // exclude permissions the role has
          // if any permissions remain, we have an issue
          if (missingPerms != 0 && isPermissionChecksEnabled())
          {
              List<Permission> permissionList = Permission.getPermissions(missingPerms);
              if (!permissionList.isEmpty())
                  throw new InsufficientPermissionException(permissionList.get(0));
          }
          this.permissions = perms;
          set |= PERMISSION;
          return this;
      }
docs: Sets the {@link net.dv8tion.jda.core.Permission Permissions} of the selected {@link net.dv8tion.jda.core.entities.Role Role}.
  
  <p>Permissions may only include already present Permissions for the currently logged in account.
  <br>You are unable to give permissions you don't have!
  
  @param  perms
  The new raw permission value for the selected {@link net.dv8tion.jda.core.entities.Role Role}
  
  @throws net.dv8tion.jda.core.exceptions.InsufficientPermissionException
  If the currently logged in account does not have permission to apply one of the specified permissions
  
  @return RoleManager for chaining convenience
  
  @see    #setPermissions(Collection)
  @see    #setPermissions(Permission...)