// Path: src/main/java/io/usethesource/criterion/PureIntegerWithCustomHashCode.java
// @CompilerControl(Mode.DONT_INLINE)
// public class PureIntegerWithCustomHashCode implements JmhValue {
// 
//   private int value;
// 
//   PureIntegerWithCustomHashCode(int value) {
//     this.value = value;
//   }
// 
//   public static final PureIntegerWithCustomHashCode valueOf(int value) {
//     return new PureIntegerWithCustomHashCode(value);
//   }
// 
//   @Override
//   public int hashCode() {
//     int h = value ^ 0x85ebca6b;
//     // based on the final Avalanching phase of MurmurHash2
//     // providing a nice mix of bits even for small numbers.
//     h ^= h >>> 13;
//     h *= 0x5bd1e995;
//     h ^= h >>> 15;
// 
//     return h;
//   }
// 
//   @Override
//   public boolean equals(Object other) {
//     if (other == null) {
//       return false;
//     }
//     if (other == this) {
//       return true;
//     }
// 
//     if (other instanceof PureIntegerWithCustomHashCode) {
//       int otherValue = ((PureIntegerWithCustomHashCode) other).value;
// 
//       return value == otherValue;
//     }
//     return false;
//   }
// 
//   @Override
//   public Object unwrap() {
//     return this; // cannot be unwrapped
//   }
// 
//   @Override
//   public String toString() {
//     return String.valueOf(value);
//   }
// 
// }
// 
// Path: src/main/java/io/usethesource/criterion/api/JmhValue.java
// @CompilerControl(Mode.DONT_INLINE)
// public interface JmhValue {
// 
//   /**
//    * Removes the JmhValue delegation object to reveal its internal representation.
//    *
//    * @return internal representation
//    */
//   Object unwrap();
// 
// }


import com.pholser.junit.quickcheck.generator.GenerationStatus;
import com.pholser.junit.quickcheck.generator.Generator;
import com.pholser.junit.quickcheck.random.SourceOfRandomness;
import io.usethesource.criterion.PureIntegerWithCustomHashCode;
import io.usethesource.criterion.api.JmhValue;
/**
 * Copyright (c) Michael Steindorfer <Centrum Wiskunde & Informatica> and Contributors.
 * All rights reserved.
 *
 * This file is licensed under the BSD 2-Clause License, which accompanies this project
 * and is available under https://opensource.org/licenses/BSD-2-Clause.
 */
package io.usethesource.criterion.generators;


public class JmhHashedIntegerGenerator extends Generator<JmhValue> {

  public JmhHashedIntegerGenerator() {
    super(JmhValue.class);
  }

  @Override
  public JmhValue generate(SourceOfRandomness random, GenerationStatus status) {
// Path: src/main/java/io/usethesource/criterion/PureIntegerWithCustomHashCode.java
// @CompilerControl(Mode.DONT_INLINE)
// public class PureIntegerWithCustomHashCode implements JmhValue {
// 
//   private int value;
// 
//   PureIntegerWithCustomHashCode(int value) {
//     this.value = value;
//   }
// 
//   public static final PureIntegerWithCustomHashCode valueOf(int value) {
//     return new PureIntegerWithCustomHashCode(value);
//   }
// 
//   @Override
//   public int hashCode() {
//     int h = value ^ 0x85ebca6b;
//     // based on the final Avalanching phase of MurmurHash2
//     // providing a nice mix of bits even for small numbers.
//     h ^= h >>> 13;
//     h *= 0x5bd1e995;
//     h ^= h >>> 15;
// 
//     return h;
//   }
// 
//   @Override
//   public boolean equals(Object other) {
//     if (other == null) {
//       return false;
//     }
//     if (other == this) {
//       return true;
//     }
// 
//     if (other instanceof PureIntegerWithCustomHashCode) {
//       int otherValue = ((PureIntegerWithCustomHashCode) other).value;
// 
//       return value == otherValue;
//     }
//     return false;
//   }
// 
//   @Override
//   public Object unwrap() {
//     return this; // cannot be unwrapped
//   }
// 
//   @Override
//   public String toString() {
//     return String.valueOf(value);
//   }
// 
// }
// 
// Path: src/main/java/io/usethesource/criterion/api/JmhValue.java
// @CompilerControl(Mode.DONT_INLINE)
// public interface JmhValue {
// 
//   /**
//    * Removes the JmhValue delegation object to reveal its internal representation.
//    *
//    * @return internal representation
//    */
//   Object unwrap();
// 
// }


// Path: src/main/java/io/usethesource/criterion/generators/JmhHashedIntegerGenerator.java
import com.pholser.junit.quickcheck.generator.GenerationStatus;
import com.pholser.junit.quickcheck.generator.Generator;
import com.pholser.junit.quickcheck.random.SourceOfRandomness;
import io.usethesource.criterion.PureIntegerWithCustomHashCode;
import io.usethesource.criterion.api.JmhValue;

/**
 * Copyright (c) Michael Steindorfer <Centrum Wiskunde & Informatica> and Contributors.
 * All rights reserved.
 *
 * This file is licensed under the BSD 2-Clause License, which accompanies this project
 * and is available under https://opensource.org/licenses/BSD-2-Clause.
 */
package io.usethesource.criterion.generators;


public class JmhHashedIntegerGenerator extends Generator<JmhValue> {

  public JmhHashedIntegerGenerator() {
    super(JmhValue.class);
  }

  @Override
  public JmhValue generate(SourceOfRandomness random, GenerationStatus status) {
    return PureIntegerWithCustomHashCode.valueOf(random.nextInt());