docs: public void revoke(OrderedHashSet granteeList, SchemaObject dbObject,
                         Right rights, Grantee grantor, boolean grantOption,
                         boolean cascade) {
  
          if (!grantor.isFullyAccessibleByRole(dbObject)) {
              throw Error.error(ErrorCode.X_42501, dbObject.getName().name);
          }
  
          if (grantor.isAdmin()) {
              grantor = dbObject.getOwner();
          }
  
          for (int i = 0; i < granteeList.size(); i++) {
              String  name = (String) granteeList.get(i);
              Grantee g    = get(name);
  
              if (g == null) {
                  throw Error.error(ErrorCode.X_28501, name);
              }
  
              if (isImmutable(name)) {
                  throw Error.error(ErrorCode.X_28502, name);
              }
          }
  
          for (int i = 0; i < granteeList.size(); i++) {
              String  name = (String) granteeList.get(i);
              Grantee g    = get(name);
  
              g.revoke(dbObject, rights, grantor, grantOption);
              g.updateAllRights();
  
              if (g.isRole) {
                  updateAllRights(g);
              }
          }
      }