public boolean subsumedBy(BlocksGroup other, int indexCorrection) {
    return subsumedBy(this, other, indexCorrection);
  }
@Test
  public void testSubsumedBy3() {
    // ['a'[2|2-7]:3, 'b'[0|0-5]:3] subsumedBy ['a'[1|1-6]:2] false
    assertThat(newBlocksGroup(newBlock("a", 2), newBlock("b", 0))
        .subsumedBy(newBlocksGroup(newBlock("a", 1)), 1),
        is(false));

    // ['a'[3|3-8]:4, 'b'[1|1-6]:4] subsumedBy ['a'[1|1-6]:2] false
    assertThat(newBlocksGroup(newBlock("a", 3), newBlock("b", 1))
        .subsumedBy(newBlocksGroup(newBlock("a", 1)), 1),
        is(false));

    // ['a'[4|4-9]:5, 'b'[2|2-7]:5] subsumedBy ['a'[1|1-6]:2] false
    assertThat(newBlocksGroup(newBlock("a", 4), newBlock("b", 2))
        .subsumedBy(newBlocksGroup(newBlock("a", 1)), 1),
        is(false));

    // ['a'[5|5-10]:6, 'b'[3|3-8]:6] subsumedBy ['a'[1|1-6]:2] false
    assertThat(newBlocksGroup(newBlock("a", 5), newBlock("b", 3))
        .subsumedBy(newBlocksGroup(newBlock("a", 1)), 1),
        is(false));

    // ['a'[3|3-8]:4, 'b'[1|1-6]:4] subsumedBy ['a'[2|2-7]:3, 'b'[0|0-5]:3] true
    assertThat(newBlocksGroup(newBlock("a", 3), newBlock("b", 1))
        .subsumedBy(newBlocksGroup(newBlock("a", 2), newBlock("b", 0)), 1),
        is(true));

    // ['a'[4|4-9]:5, 'b'[2|2-7]:5, 'c'[0|0-5]:5] subsumedBy ['a'[3|3-8]:4, 'b'[1|1-6]:4] false
    assertThat(newBlocksGroup(newBlock("a", 4), newBlock("b", 2), newBlock("c", 0))
        .subsumedBy(newBlocksGroup(newBlock("a", 3), newBlock("b", 1)), 1),
        is(false));

    // ['a'[5|5-10]:6, 'b'[3|3-8]:6, 'c'[1|1-6]:6] subsumedBy ['a'[3|3-8]:4, 'b'[1|1-6]:4] false
    assertThat(newBlocksGroup(newBlock("a", 5), newBlock("b", 3), newBlock("c", 1))
        .subsumedBy(newBlocksGroup(newBlock("a", 3), newBlock("b", 1)), 1),
        is(false));

    // ['a'[6|6-11]:7, 'c'[2|2-7]:7] subsumedBy ['a'[3|3-8]:4, 'b'[1|1-6]:4] false
    assertThat(newBlocksGroup(newBlock("a", 6), newBlock("c", 2))
        .subsumedBy(newBlocksGroup(newBlock("a", 3), newBlock("b", 1)), 1),
        is(false));

    // ['a'[5|5-10]:6, 'b'[3|3-8]:6, 'c'[1|1-6]:6] subsumedBy ['a'[4|4-9]:5, 'b'[2|2-7]:5, 'c'[0|0-5]:5] true
    assertThat(newBlocksGroup(newBlock("a", 5), newBlock("b", 3), newBlock("c", 1))
        .subsumedBy(newBlocksGroup(newBlock("a", 4), newBlock("b", 2), newBlock("c", 0)), 1),
        is(true));

    // ['a'[6|6-11]:7, 'c'[2|2-7]:7] subsumedBy ['a'[5|5-10]:6, 'b'[3|3-8]:6, 'c'[1|1-6]:6] true
    assertThat(newBlocksGroup(newBlock("a", 6), newBlock("c", 2))
        .subsumedBy(newBlocksGroup(newBlock("a", 5), newBlock("b", 3), newBlock("c", 1)), 1),
        is(true));
  }