@Override
  public void start() {
    DefaultInputModule root = moduleHierarchy.root();
    componentStore.put(root);
    indexChildren(root);
  }
@Test
  public void testIndex() {
    ProjectDefinition rootDef = mock(ProjectDefinition.class);
    ProjectDefinition def = mock(ProjectDefinition.class);
    when(rootDef.getParent()).thenReturn(null);
    when(def.getParent()).thenReturn(rootDef);

    DefaultInputModule root = mock(DefaultInputModule.class);
    DefaultInputModule mod1 = mock(DefaultInputModule.class);
    DefaultInputModule mod2 = mock(DefaultInputModule.class);
    DefaultInputModule mod3 = mock(DefaultInputModule.class);

    when(root.key()).thenReturn("root");
    when(mod1.key()).thenReturn("mod1");
    when(mod2.key()).thenReturn("mod2");
    when(mod3.key()).thenReturn("mod3");

    when(root.definition()).thenReturn(rootDef);
    when(mod1.definition()).thenReturn(def);
    when(mod2.definition()).thenReturn(def);
    when(mod3.definition()).thenReturn(def);

    createIndexer();
    when(moduleHierarchy.root()).thenReturn(root);
    when(moduleHierarchy.children(root)).thenReturn(Arrays.asList(mod1, mod2, mod3));

    indexer.start();

    DefaultInputModule rootModule = moduleHierarchy.root();
    assertThat(rootModule).isNotNull();
    assertThat(moduleHierarchy.children(rootModule)).hasSize(3);
  }