@Test
 public void addRangeCreatesNewIntervalWhenThereIsAGapBetweenRanges() {
   Register reg = new Register(3);
   CompoundInterval ci = new CompoundInterval(DEFAULT_BEGIN, DEFAULT_END, reg);
   assertThat(ci.last().getEnd(), is(DEFAULT_END));
   RegisterAllocatorState regAllocState = new RegisterAllocatorState(1);
   LiveIntervalElement live = new LiveIntervalElement(reg, null, null);
   ControlFlowGraph emptyCfg = new ControlFlowGraph(0);
   BasicBlock bb = new BasicBlock(1, null, emptyCfg);
   regAllocState.initializeDepthFirstNumbering(10);
   regAllocState.setDFN(bb.firstInstruction(), DEFAULT_END + 2);
   regAllocState.setDFN(bb.lastInstruction(), DEFAULT_END + 3);
   BasicInterval bi = ci.addRange(regAllocState, live, bb);
   assertThat(ci.last(), sameInstance(bi));
 }
 @Test
 public void addRangeChangesEndOfLastIntervalWhenRangesDirectlyFollowEachOther_NoDefUse() {
   Register reg = new Register(3);
   CompoundInterval ci = new CompoundInterval(DEFAULT_BEGIN, DEFAULT_END, reg);
   assertThat(ci.last().getEnd(), is(DEFAULT_END));
   RegisterAllocatorState regAllocState = new RegisterAllocatorState(1);
   LiveIntervalElement live = new LiveIntervalElement(reg, null, null);
   ControlFlowGraph emptyCfg = new ControlFlowGraph(0);
   BasicBlock bb = new BasicBlock(1, null, emptyCfg);
   regAllocState.initializeDepthFirstNumbering(10);
   regAllocState.setDFN(bb.firstInstruction(), DEFAULT_END);
   regAllocState.setDFN(bb.lastInstruction(), DEFAULT_END + 1);
   BasicInterval bi = ci.addRange(regAllocState, live, bb);
   assertNull(bi);
   assertThat(ci.last().getEnd(), is(DEFAULT_END + 1));
 }