code: public <T extends Number & Comparable> NumberRange by(T stepSize) {
          if (!Integer.valueOf(1).equals(this.stepSize)) {
              throw new IllegalStateException("by only allowed on ranges with original stepSize = 1 but found " + this.stepSize);
          }
          return new NumberRange(comparableNumber(from), comparableNumber(to), stepSize, inclusive);
      }
docs: For a NumberRange with step size 1, creates a new NumberRange with the same
  <code>from</code> and <code>to</code> as this NumberRange
  but with a step size of <code>stepSize</code>.
  
  @param stepSize the desired step size
  @return a new NumberRange