code: @Trivial
      private String validateNotification(Collection<?> added, Collection<?> removed, Collection<?> updated) {
          boolean isAddition = !added.isEmpty();
          boolean isRemoval = !removed.isEmpty();
          boolean isUpdate = !updated.isEmpty();
  
          if ( !isAddition && !isRemoval && !isUpdate ) {
              // Should never occur:
              // Completely null changes are detected and cause an early return
              // before reaching the validation method.
              return "null";
  
          } else if ( isAddition ) {
              return "Addition of [ " + added.toString() + " ]";
  
          } else if ( isUpdate && isRemoval ) {
              return "Update of [ " + updated.toString() + " ]" +
                     " with removal of [ " + removed.toString() + " ]";
  
          } else {
              return null;
          }
      }
docs: Validate change data, which is expected to be collections of files
  or collections of entry paths.
  
  Since the single root zip file is registered, the change is expected
  to be a single element in exactly one of the change collections.
  
  Null changes are unexpected. Additions are unexpected.  Updates with
  removals are unexpected.
  
  The net is to allow updates alone or removals alone.
  
  @return A validation message if unexpected changes are noted.
  Null if the changes are expected.