// Path: unsafe-benchmark/src/main/java/net/bramp/unsafe/collection/AbstractUnsafeListTest.java
// public abstract class AbstractUnsafeListTest<T extends Comparable<T>> extends AbstractListTest {
// 
//   protected UnsafeArrayList<T> list;
// 
//   /**
//    * Returns the class under test being used within the generic list.
//    *
//    * @return the class under test.
//    */
//   public abstract Class<T> testClass();
// 
//   /**
//    * Populates the fields of obj with random values.
//    *
//    * @param obj The object to populate
//    * @return obj
//    */
//   public abstract T newInstance(T obj);
// 
//   @Override public void setup() throws IllegalAccessException, InstantiationException {
//     final Class clazz = testClass();
//     final T p = (T) UnsafeHelper.getUnsafe().allocateInstance(clazz); // Create a tmp instance
// 
//     list = new UnsafeArrayList<T>(clazz, size);
//     for (int i = 0; i < size; i++) {
//       // Reuse single point (since it gets copied into array)
//       list.add(newInstance(p));
//     }
//   }
// 
//   @Override public long bytes() {
//     return list.bytes();
//   }
// 
//   @Override
//   public void shuffle() {
//     Shuffle.shuffleInplace(list, rand);
//   }
// 
//   @Override
//   public void sort() {
//     InplaceQuickSort.quickSort(list);
//   }
// }
// 
// Path: unsafe-tests/src/main/java/net/bramp/unsafe/examples/FourLongs.java
// public class FourLongs implements Comparable<FourLongs> {
//   public long a, b, c, d;
// 
//   public FourLongs() {
//     this(0, 0, 0, 0);
//   }
// 
//   /**
//    * Creates a new FourLongs.
//    *
//    * @param a 1st field
//    * @param b 2nd field
//    * @param c 3rd field
//    * @param d 4th field
//    */
//   public FourLongs(long a, long b, long c, long d) {
//     this.a = a;
//     this.b = b;
//     this.c = c;
//     this.d = d;
//   }
// 
//   @Override public String toString() {
//     return "FourLongs{" +
//         "a=0x" + Long.toHexString(a) + ", " +
//         "b=0x" + Long.toHexString(b) + ", " +
//         "c=0x" + Long.toHexString(c) + ", " +
//         "d=0x" + Long.toHexString(d) + '}';
//   }
// 
//   @Override public boolean equals(Object obj) {
//     if (this == obj) {
//       return true;
//     }
//     if (obj == null || getClass() != obj.getClass()) {
//       return false;
//     }
//     FourLongs fourLongs = (FourLongs) obj;
//     return Objects.equal(a, fourLongs.a)
//         && Objects.equal(b, fourLongs.b)
//         && Objects.equal(c, fourLongs.c)
//         && Objects.equal(d, fourLongs.d);
//   }
// 
//   @Override public int hashCode() {
//     return Objects.hashCode(a, b, c, d);
//   }
// 
//   @Override public int compareTo(FourLongs obj) {
//     return ComparisonChain.start()
//         .compare(a, obj.a)
//         .compare(b, obj.b)
//         .compare(c, obj.c)
//         .compare(d, obj.d)
//         .result();
//   }
// }


import net.bramp.unsafe.collection.AbstractUnsafeListTest;
import net.bramp.unsafe.examples.FourLongs;
import org.openjdk.jmh.infra.Blackhole;
package net.bramp.unsafe.collection.tests;



public class UnsafeListFourLongs extends AbstractUnsafeListTest<FourLongs> {

  @Override public Class<FourLongs> testClass() {
    return FourLongs.class;
  }

  @Override public FourLongs newInstance(FourLongs obj) {
    obj.a = rand.nextLong();
    obj.b = rand.nextLong();
    obj.c = rand.nextLong();
    obj.d = rand.nextLong();
// Path: unsafe-benchmark/src/main/java/net/bramp/unsafe/collection/AbstractUnsafeListTest.java
// public abstract class AbstractUnsafeListTest<T extends Comparable<T>> extends AbstractListTest {
// 
//   protected UnsafeArrayList<T> list;
// 
//   /**
//    * Returns the class under test being used within the generic list.
//    *
//    * @return the class under test.
//    */
//   public abstract Class<T> testClass();
// 
//   /**
//    * Populates the fields of obj with random values.
//    *
//    * @param obj The object to populate
//    * @return obj
//    */
//   public abstract T newInstance(T obj);
// 
//   @Override public void setup() throws IllegalAccessException, InstantiationException {
//     final Class clazz = testClass();
//     final T p = (T) UnsafeHelper.getUnsafe().allocateInstance(clazz); // Create a tmp instance
// 
//     list = new UnsafeArrayList<T>(clazz, size);
//     for (int i = 0; i < size; i++) {
//       // Reuse single point (since it gets copied into array)
//       list.add(newInstance(p));
//     }
//   }
// 
//   @Override public long bytes() {
//     return list.bytes();
//   }
// 
//   @Override
//   public void shuffle() {
//     Shuffle.shuffleInplace(list, rand);
//   }
// 
//   @Override
//   public void sort() {
//     InplaceQuickSort.quickSort(list);
//   }
// }
// 
// Path: unsafe-tests/src/main/java/net/bramp/unsafe/examples/FourLongs.java
// public class FourLongs implements Comparable<FourLongs> {
//   public long a, b, c, d;
// 
//   public FourLongs() {
//     this(0, 0, 0, 0);
//   }
// 
//   /**
//    * Creates a new FourLongs.
//    *
//    * @param a 1st field
//    * @param b 2nd field
//    * @param c 3rd field
//    * @param d 4th field
//    */
//   public FourLongs(long a, long b, long c, long d) {
//     this.a = a;
//     this.b = b;
//     this.c = c;
//     this.d = d;
//   }
// 
//   @Override public String toString() {
//     return "FourLongs{" +
//         "a=0x" + Long.toHexString(a) + ", " +
//         "b=0x" + Long.toHexString(b) + ", " +
//         "c=0x" + Long.toHexString(c) + ", " +
//         "d=0x" + Long.toHexString(d) + '}';
//   }
// 
//   @Override public boolean equals(Object obj) {
//     if (this == obj) {
//       return true;
//     }
//     if (obj == null || getClass() != obj.getClass()) {
//       return false;
//     }
//     FourLongs fourLongs = (FourLongs) obj;
//     return Objects.equal(a, fourLongs.a)
//         && Objects.equal(b, fourLongs.b)
//         && Objects.equal(c, fourLongs.c)
//         && Objects.equal(d, fourLongs.d);
//   }
// 
//   @Override public int hashCode() {
//     return Objects.hashCode(a, b, c, d);
//   }
// 
//   @Override public int compareTo(FourLongs obj) {
//     return ComparisonChain.start()
//         .compare(a, obj.a)
//         .compare(b, obj.b)
//         .compare(c, obj.c)
//         .compare(d, obj.d)
//         .result();
//   }
// }


// Path: unsafe-benchmark/src/main/java/net/bramp/unsafe/collection/tests/UnsafeListFourLongs.java
import net.bramp.unsafe.collection.AbstractUnsafeListTest;
import net.bramp.unsafe.examples.FourLongs;
import org.openjdk.jmh.infra.Blackhole;

package net.bramp.unsafe.collection.tests;



public class UnsafeListFourLongs extends AbstractUnsafeListTest<FourLongs> {

  @Override public Class<FourLongs> testClass() {
    return FourLongs.class;
  }

  @Override public FourLongs newInstance(FourLongs obj) {
    obj.a = rand.nextLong();
    obj.b = rand.nextLong();
    obj.c = rand.nextLong();
    obj.d = rand.nextLong();
    return obj;