docs: @Override
      public int cancel(String pattern, Character escape, TaskState state, boolean inState) {
          String owner = getOwner();
          if (owner == null)
              return 0;
  
          pattern = pattern == null ? null : Utils.normalizeString(pattern);
          int updateCount = 0;
          TransactionController tranController = new TransactionController();
          try {
              tranController.preInvoke();
              updateCount = taskStore.cancel(pattern, escape, state, inState, owner);
          } catch (Throwable x) {
              tranController.setFailure(x);
          } finally {
              PersistentStoreException x = tranController.postInvoke(PersistentStoreException.class); // TODO proposed spec class
              if (x != null)
                  throw x;
          }
  
          return updateCount;
      }