code: public static boolean canInteract(Member issuer, Member target)
      {
          Checks.notNull(issuer, "Issuer Member");
          Checks.notNull(target, "Target Member");
  
          Guild guild = issuer.getGuild();
          if (!guild.equals(target.getGuild()))
              throw new IllegalArgumentException("Provided members must both be Member objects of the same Guild!");
          if(guild.getOwner().equals(issuer))
              return true;
          if(guild.getOwner().equals(target))
              return false;
          List<Role> issuerRoles = issuer.getRoles();
          List<Role> targetRoles = target.getRoles();
          return !issuerRoles.isEmpty() && (targetRoles.isEmpty() || canInteract(issuerRoles.get(0), targetRoles.get(0)));
      }
docs: Checks if one given Member can interact with a 2nd given Member - in a permission sense (kick/ban/modify perms).
  This only checks the Role-Position and does not check the actual permission (kick/ban/manage_role/...)
  
  @param  issuer
  The member that tries to interact with 2nd member
  @param  target
  The member that is the target of the interaction
  
  @throws IllegalArgumentException
  if any of the provided parameters is {@code null}
  or the provided entities are not from the same guild
  
  @return True, if issuer can interact with target in guild