code: public final List<Change> diff(final HourRanges toOther) {
  
          ensureSingleDayOnly("from", this);
          ensureSingleDayOnly("to", toOther);
  
          final BitSet thisMinutes = this.toMinutes();
          final BitSet otherMinutes = toOther.toMinutes();
  
          final BitSet addedMinutes = new BitSet(1440);
          final BitSet removedMinutes = new BitSet(1440);
          for (int i = 0; i < 1440; i++) {
              if (thisMinutes.get(i) && !otherMinutes.get(i)) {
                  removedMinutes.set(i);
              }
              if (!thisMinutes.get(i) && otherMinutes.get(i)) {
                  addedMinutes.set(i);
              }
          }
  
          final List<Change> changes = new ArrayList<>();
  
          if (!removedMinutes.isEmpty()) {
              final HourRanges removed = HourRanges.valueOf(removedMinutes);
              for (final HourRange hr : removed) {
                  changes.add(new Change(ChangeType.REMOVED, hr));
              }
          }
          if (!addedMinutes.isEmpty()) {
              final HourRanges added = HourRanges.valueOf(addedMinutes);
              for (final HourRange hr : added) {
                  changes.add(new Change(ChangeType.ADDED, hr));
              }
          }
  
          return changes;
  
      }
docs: Returns the difference when changing this opening hours to the other one.
  
  @param toOther
  Opening hours to compare with.
  
  @return List of changes or an empty list if both are equal.