// Path: src/main/java/io/smartcat/ranger/distribution/UniformDistribution.java
// public class UniformDistribution implements Distribution {
// 
//     private Random random = new Random();
// 
//     @Override
//     public int nextInt(int bound) {
//         return random.nextInt(bound);
//     }
// 
//     @Override
//     public int nextInt(int lower, int upper) {
//         return random.ints(1, lower, upper).findFirst().getAsInt();
//     }
// 
//     @Override
//     public long nextLong(long bound) {
//         return random.longs(1, 0, bound).findFirst().getAsLong();
//     }
// 
//     @Override
//     public long nextLong(long lower, long upper) {
//         return random.longs(1, lower, upper).findFirst().getAsLong();
//     }
// 
//     @Override
//     public double nextDouble(double lower, double upper) {
//         return random.doubles(1, lower, upper).findFirst().getAsDouble();
//     }
// 
//     @Override
//     public boolean nextBoolean() {
//         return random.nextBoolean();
//     }
// }


import io.smartcat.ranger.distribution.Distribution;
import io.smartcat.ranger.distribution.UniformDistribution;
        if (range == null) {
            throw new IllegalArgumentException("Range cannot be null.");
        }
        if (!range.isIncreasing()) {
            throw new InvalidRangeBoundsException("End of the range must be greater than the beginning of the range.");
        }
        if (distribution == null) {
            throw new IllegalArgumentException("Distribution cannot be null.");
        }
        this.beginning = range.getBeginning();
        this.end = range.getEnd();
        this.useEdgeCases = useEdgeCases;
        this.distribution = distribution;
    }

    /**
     * Default value for <code>useEdgeCases</code> property.
     *
     * @return Default value for <code>useEdgeCases</code> property.
     */
    public static boolean defaultUseEdgeCases() {
        return false;
    }

    /**
     * Default value for <code>distribution</code> property.
     *
     * @return Default value for <code>distribution</code> property.
     */
    public static Distribution defaultDistrbution() {
// Path: src/main/java/io/smartcat/ranger/distribution/UniformDistribution.java
// public class UniformDistribution implements Distribution {
// 
//     private Random random = new Random();
// 
//     @Override
//     public int nextInt(int bound) {
//         return random.nextInt(bound);
//     }
// 
//     @Override
//     public int nextInt(int lower, int upper) {
//         return random.ints(1, lower, upper).findFirst().getAsInt();
//     }
// 
//     @Override
//     public long nextLong(long bound) {
//         return random.longs(1, 0, bound).findFirst().getAsLong();
//     }
// 
//     @Override
//     public long nextLong(long lower, long upper) {
//         return random.longs(1, lower, upper).findFirst().getAsLong();
//     }
// 
//     @Override
//     public double nextDouble(double lower, double upper) {
//         return random.doubles(1, lower, upper).findFirst().getAsDouble();
//     }
// 
//     @Override
//     public boolean nextBoolean() {
//         return random.nextBoolean();
//     }
// }


// Path: src/main/java/io/smartcat/ranger/core/RangeValue.java
import io.smartcat.ranger.distribution.Distribution;
import io.smartcat.ranger.distribution.UniformDistribution;

        if (range == null) {
            throw new IllegalArgumentException("Range cannot be null.");
        }
        if (!range.isIncreasing()) {
            throw new InvalidRangeBoundsException("End of the range must be greater than the beginning of the range.");
        }
        if (distribution == null) {
            throw new IllegalArgumentException("Distribution cannot be null.");
        }
        this.beginning = range.getBeginning();
        this.end = range.getEnd();
        this.useEdgeCases = useEdgeCases;
        this.distribution = distribution;
    }

    /**
     * Default value for <code>useEdgeCases</code> property.
     *
     * @return Default value for <code>useEdgeCases</code> property.
     */
    public static boolean defaultUseEdgeCases() {
        return false;
    }

    /**
     * Default value for <code>distribution</code> property.
     *
     * @return Default value for <code>distribution</code> property.
     */
    public static Distribution defaultDistrbution() {
        return new UniformDistribution();