code: public final PeriodList subtract(final PeriodList subtractions) {
          if (subtractions == null || subtractions.isEmpty()) {
              return this;
          }
          
          PeriodList result = this;
          PeriodList tmpResult = new PeriodList();
  
          for (final Period subtraction : subtractions) {
              for (final Period period : result) {
                  tmpResult.addAll(period.subtract(subtraction));
              }
              result = tmpResult;
              tmpResult = new PeriodList();
          }
  
          return result;
      }
docs: Subtracts the intersection of this list with the specified list of
  periods from this list and returns the results as a new period list. If
  no intersection is identified this list is returned.
  
  @param subtractions
  a list of periods to subtract from this list
  @return a period list