@Test
 public void copyStopsAtTheRightPointWhenRequired() {
   BasicInterval bi = new BasicInterval(DEFAULT_BEGIN, DEFAULT_END);
   CompoundInterval toCopy = new CompoundInterval(bi, null);
   BasicInterval bi2 = new BasicInterval(DEFAULT_END, DEFAULT_END + 1);
   BasicInterval bi3 = new BasicInterval(DEFAULT_END + 1, DEFAULT_END + 2);
   toCopy.add(bi2);
   toCopy.add(bi3);
   Register r = new Register(2);
   CompoundInterval copy = toCopy.copy(r, bi2);
   assertThat(copy.getRegister(), is(r));
   assertThat(copy.contains(bi), is(true));
   assertThat(copy.contains(bi2), is(true));
   assertThat(copy.contains(bi3), is(false));
   assertThat(copy.size(), is(2));
 }
 @Test
 public void copyCopiesAllIntervalsToNewCompoundIntervalWithRightRegister() {
   BasicInterval bi = new BasicInterval(DEFAULT_BEGIN, DEFAULT_END);
   CompoundInterval toCopy = new CompoundInterval(bi, null);
   BasicInterval bi2 = new BasicInterval(DEFAULT_END, DEFAULT_END + 1);
   BasicInterval bi3 = new BasicInterval(DEFAULT_END + 1, DEFAULT_END + 2);
   toCopy.add(bi2);
   toCopy.add(bi3);
   Register r = new Register(2);
   CompoundInterval copy = toCopy.copy(r);
   assertThat(copy.getRegister(), is(r));
   assertThat(copy.contains(bi), is(true));
   assertThat(copy.contains(bi2), is(true));
   assertThat(copy.contains(bi3), is(true));
   assertThat(copy.size(), is(3));
 }