docs: public void remove(SchemaObject object, Right right) {
  
          if (right.isFull) {
              clear();
  
              return;
          }
  
          if (isFull) {
              isFull = false;
              isFullSelect = isFullInsert = isFullUpdate = isFullReferences =
                  isFullDelete = true;
          }
  
          if (right.isFullDelete) {
              isFullDelete = false;
          }
  
          if (!isFullSelect && selectColumnSet == null) {}
          else if (right.isFullSelect) {
              isFullSelect    = false;
              selectColumnSet = null;
          } else if (right.selectColumnSet != null) {
              if (isFullSelect) {
                  isFullSelect    = false;
                  selectColumnSet = ((Table) object).getColumnNameSet();
              }
  
              selectColumnSet.removeAll(right.selectColumnSet);
  
              if (selectColumnSet.isEmpty()) {
                  selectColumnSet = null;
              }
          }
  
          if (!isFullInsert && insertColumnSet == null) {}
          else if (right.isFullInsert) {
              isFullInsert    = false;
              insertColumnSet = null;
          } else if (right.insertColumnSet != null) {
              if (isFullInsert) {
                  isFullInsert    = false;
                  insertColumnSet = ((Table) object).getColumnNameSet();
              }
  
              insertColumnSet.removeAll(right.insertColumnSet);
  
              if (insertColumnSet.isEmpty()) {
                  insertColumnSet = null;
              }
          }
  
          if (!isFullUpdate && updateColumnSet == null) {}
          else if (right.isFullUpdate) {
              isFullUpdate    = false;
              updateColumnSet = null;
          } else if (right.updateColumnSet != null) {
              if (isFullUpdate) {
                  isFullUpdate    = false;
                  updateColumnSet = ((Table) object).getColumnNameSet();
              }
  
              updateColumnSet.removeAll(right.updateColumnSet);
  
              if (updateColumnSet.isEmpty()) {
                  updateColumnSet = null;
              }
          }
  
          if (!isFullReferences && referencesColumnSet == null) {}
          else if (right.isFullReferences) {
              isFullReferences    = false;
              referencesColumnSet = null;
          } else if (right.referencesColumnSet != null) {
              if (isFullReferences) {
                  isFullReferences    = false;
                  referencesColumnSet = ((Table) object).getColumnNameSet();
              }
  
              referencesColumnSet.removeAll(right.referencesColumnSet);
  
              if (referencesColumnSet.isEmpty()) {
                  referencesColumnSet = null;
              }
          }
  
          if (!isFullTrigger && triggerColumnSet == null) {}
          else if (right.isFullTrigger) {
              isFullTrigger    = false;
              triggerColumnSet = null;
          } else if (right.triggerColumnSet != null) {
              if (isFullTrigger) {
                  isFullTrigger    = false;
                  triggerColumnSet = ((Table) object).getColumnNameSet();
              }
  
              triggerColumnSet.removeAll(right.triggerColumnSet);
  
              if (triggerColumnSet.isEmpty()) {
                  triggerColumnSet = null;
              }
          }
      }