class RangeImpl implements Range {

    @Override
    public Boolean includes(Object param) {
        if (param == null) {
            return null;
        }
        if (lowEndPoint == null) {
            if (highEndPoint == null) {
                return null;
            } else {
                return negInfRangeIncludes(param);
            }
        } else {
            if (highEndPoint == null) {
                return posInfRangeIncludes(param);
            } else {
                return finiteRangeIncludes(param);
            }
        }
    }

    public  RangeImpl();
    public  RangeImpl(RangeBoundary lowBoundary, Comparable lowEndPoint, Comparable highEndPoint, RangeBoundary highBoundary);

}