function buildDateRangeUnits() {
    var methods = {};
    forEach(DURATION_UNITS.split('|'), function(unit, i) {
      var name = unit + 's', mult, fn;
      if (i < 4) {
        fn = function() {
          return rangeEvery(this, unit, true);
        };
      } else {
        mult = MULTIPLIERS[simpleCapitalize(name)];
        fn = function() {
          return trunc((this.end - this.start) / mult);
        };
      }
      methods[name] = fn;
    });
    defineOnPrototype(Range, methods);
  }
@method [dateUnit]()
@returns Number
@namespace Range
@short Returns the span of a date range in the given unit.
@extra Higher order units ("days" and greater) walk the date to avoid
       discrepancies with ambiguity. Lower order units simply subtract the
       start from the end.

@set
  milliseconds
  seconds
  minutes
  hours
  days
  weeks
  months
  years

@example

  janToMay.months()  -> 4
  janToMay.days()    -> 121
  janToMay.hours()   -> 2904
  janToMay.minutes() -> 220320

*