code: @CheckReturnValue
      public ChannelAction addPermissionOverride(IPermissionHolder target, Collection<Permission> allow, Collection<Permission> deny)
      {
          checkPermissions(allow);
          checkPermissions(deny);
          final long allowRaw = allow != null ? Permission.getRaw(allow) : 0;
          final long denyRaw = deny != null ? Permission.getRaw(deny) : 0;
  
          return addPermissionOverride(target, allowRaw, denyRaw);
      }
docs: Adds a new Role or Member {@link net.dv8tion.jda.core.entities.PermissionOverride PermissionOverride}
  for the new Channel.
  
  <p>Example:
  <pre>{@code
  Role role = guild.getPublicRole();
  EnumSet<Permission> allow = EnumSet.of(Permission.MESSAGE_READ);
  EnumSet<Permission> deny = EnumSet.of(Permission.MESSAGE_WRITE);
  channelAction.addPermissionOverride(role, allow, deny);
  }</pre>
  
  @param  target
  The not-null {@link net.dv8tion.jda.core.entities.Role Role} or {@link net.dv8tion.jda.core.entities.Member Member} for the override
  @param  allow
  The granted {@link net.dv8tion.jda.core.Permission Permissions} for the override or null
  @param  deny
  The denied {@link net.dv8tion.jda.core.Permission Permissions} for the override or null
  
  @throws java.lang.IllegalArgumentException
  If the specified target is null or not within the same guild.
  
  @return The current ChannelAction, for chaining convenience
  
  @see    java.util.EnumSet