// Path: src/main/java/org/neo4j/neode/probabilities/ProbabilityDistribution.java
// public abstract class ProbabilityDistribution
// {
//     private static final Random RANDOM_INSTANCE = new Random();
// 
//     public static ProbabilityDistribution flatDistribution()
//     {
//         return new FlatProbabilityDistributionUnique();
//     }
// 
//     public static ProbabilityDistribution normalDistribution()
//     {
//         return new NormalProbabilityDistributionUnique();
//     }
// 
//     private final Random random;
// 
//     protected ProbabilityDistribution()
//     {
//         this.random = RANDOM_INSTANCE;
//     }
// 
//     public abstract List<Integer> generateList( Range sizeRange, Range range );
// 
//     public abstract List<Integer> generateList( int size, Range range );
// 
//     public abstract int generateSingle( Range range );
// 
//     public abstract String description();
// 
//     protected final Random random()
//     {
//         return random;
//     }
// }


import org.neo4j.neode.probabilities.ProbabilityDistribution;

        if ( max < min )
        {
            throw new IllegalArgumentException( "Max must be greater or equal to min" );
        }

        this.min = min;
        this.max = max;
    }

    public int min()
    {
        return min;
    }

    public int max()
    {
        return max;
    }

    public int difference()
    {
        return max - min;
    }

    public boolean isInRange( int value )
    {
        return value >= min() && value <= max;
    }

// Path: src/main/java/org/neo4j/neode/probabilities/ProbabilityDistribution.java
// public abstract class ProbabilityDistribution
// {
//     private static final Random RANDOM_INSTANCE = new Random();
// 
//     public static ProbabilityDistribution flatDistribution()
//     {
//         return new FlatProbabilityDistributionUnique();
//     }
// 
//     public static ProbabilityDistribution normalDistribution()
//     {
//         return new NormalProbabilityDistributionUnique();
//     }
// 
//     private final Random random;
// 
//     protected ProbabilityDistribution()
//     {
//         this.random = RANDOM_INSTANCE;
//     }
// 
//     public abstract List<Integer> generateList( Range sizeRange, Range range );
// 
//     public abstract List<Integer> generateList( int size, Range range );
// 
//     public abstract int generateSingle( Range range );
// 
//     public abstract String description();
// 
//     protected final Random random()
//     {
//         return random;
//     }
// }


// Path: src/main/java/org/neo4j/neode/Range.java
import org.neo4j.neode.probabilities.ProbabilityDistribution;


        if ( max < min )
        {
            throw new IllegalArgumentException( "Max must be greater or equal to min" );
        }

        this.min = min;
        this.max = max;
    }

    public int min()
    {
        return min;
    }

    public int max()
    {
        return max;
    }

    public int difference()
    {
        return max - min;
    }

    public boolean isInRange( int value )
    {
        return value >= min() && value <= max;
    }

    public int getRandom( ProbabilityDistribution probabilityDistribution )