class Range {

	public final static int UPPER_BORDER_NOT_DEFINED = Integer.MAX_VALUE;

	final private int min;

	final private int max;

	public Range(int min) {
		this(min, UPPER_BORDER_NOT_DEFINED);
	}

	public Range(int min, int max) {
		checkMinMaxValues(min, max);
		this.min = min;
		this.max = max;
	}

	public int getMax() {
		return max;
	}

	public int getMin() {
		return min;
	}

	public boolean hasMaxValue() {
		return max != UPPER_BORDER_NOT_DEFINED;
	}

	@Override
	public String toString() {
		return hasMaxValue() ? min + "-" + max : String.valueOf(min);
	}

	private void checkMinMaxValues(int min, int max) {<FILL_FUNCTION_BODY>}

}

		Assert.isTrue(min > 0, "Min value must be higher than zero");
		Assert.isTrue(min <= max, "Min value should be lower or equal to max value");
	
<no_super_class>