code: def _changeSubNos(self, path, subNos, count, action, reverse=False):
          
          model = self._models.get(path)
          if model is None:
              return
  
          syncPoints = _syncPoints(model)
          syncSubNos = [p.subNo for p in syncPoints]
          syncSubNos.sort()
  
          if len(syncSubNos) == 0:
              return
  
          for current in syncSubNos:
              row = _findRow(current, model)
              action(current, count(current, subNos), model, row)
docs: Implementation of subs add/removal handling.
  
          Args:
              path: file path associated with model on which work is done
              subNos: list of added/removed subtitle numbers
              count: function which accepts current sync point's subtitle number
                     and subNos and returns anything based on these values
              action: action performed for each of sync point's subtitle number.
                      Accepts current SyncPoint.subNo, count result, model and
                      row:
                          def action(current, count, model, row)