src/main/java/com/github/fge/grappa/misc/RangeMatcherBuilder.java
public Rule times(final int minCycles, final int maxCycles)
    {
        Preconditions.checkArgument(minCycles >= 0,
            "illegal repetition number specified (" + minCycles
                + "), must be 0 or greater");
        Preconditions.checkArgument(maxCycles >= minCycles,
            "illegal range specified (" + minCycles + ", " + maxCycles
                + "): maximum must be greater than minimum");
        return range(Range.closed(minCycles, maxCycles));
    }
public Rule times(final int minCycles, final int maxCycles)
    {
        Preconditions.checkArgument(minCycles >= 0,
            "illegal repetition number specified (" + minCycles
                + "), must be 0 or greater");
        Preconditions.checkArgument(maxCycles >= minCycles,
            "illegal range specified (" + minCycles + ", " + maxCycles
                + "): maximum must be greater than minimum");
        return range(Range.closed(minCycles, maxCycles));
    }
Return a rule with both lower and upper bounds on the number of cycles

<p>Note that the range of cycles to run is closed on both ends (that is,
the minimum and maximum number of cycles) are <strong>inclusive</strong>.
</p>

@param minCycles the minimum number of cycles
@param maxCycles the maximum number of cycles
@return a rule
@throws IllegalArgumentException minimum number of cycles is negative; or
maximum number of cycles is less than the minimum

@see Range#closed(Comparable, Comparable)