@Test
public void testIntersection() {

  final ByteArrayRange bar1 =
      new ByteArrayRange(new ByteArray("232").getBytes(), new ByteArray("332").getBytes());
  final ByteArrayRange bar2 =
      new ByteArrayRange(new ByteArray("282").getBytes(), new ByteArray("300").getBytes());
  final ByteArrayRange bar3 =
      new ByteArrayRange(new ByteArray("272").getBytes(), new ByteArray("340").getBytes());
  final ByteArrayRange bar4 =
      new ByteArrayRange(new ByteArray("392").getBytes(), new ByteArray("410").getBytes());
  Collection<ByteArrayRange> l1 = new ArrayList<>(Arrays.asList(bar4, bar3, bar1, bar2));
  l1 = ByteArrayRange.mergeIntersections(l1, MergeOperation.INTERSECTION);
  Collection<ByteArrayRange> l2 = new ArrayList<>(Arrays.asList(bar1, bar4, bar2, bar3));
  l2 = ByteArrayRange.mergeIntersections(l2, MergeOperation.INTERSECTION);
  assertEquals(2, l1.size());
  assertEquals(l1, l2);
  assertEquals(
      new ByteArrayRange(new ByteArray("282").getBytes(), new ByteArray("300").getBytes()),
      ((ArrayList<ByteArrayRange>) l1).get(0));
  assertEquals(
      new ByteArrayRange(new ByteArray("392").getBytes(), new ByteArray("410").getBytes()),
      ((ArrayList<ByteArrayRange>) l1).get(1));
}