LHSGeneratorContextFactory { public LHSGeneratorContext newGeneratorContext() { final LHSGeneratorContext gc = new LHSGeneratorContext(); contexts.add(gc); return gc; }  LHSGeneratorContext newGeneratorContext(); LHSGeneratorContext newChildGeneratorContext(final LHSGeneratorContext parent,
                                                        final IPattern pattern); LHSGeneratorContext newChildGeneratorContext(final LHSGeneratorContext parent,
                                                        final FieldConstraint fieldConstraint); LHSGeneratorContext newPeerGeneratorContext(final LHSGeneratorContext peer,
                                                       final IPattern pattern); LHSGeneratorContext newPeerGeneratorContext(final LHSGeneratorContext peer,
                                                       final FieldConstraint fieldConstraint); List<LHSGeneratorContext> getGeneratorContexts(); int getMaximumDepth(); int getMaximumPatternDepth(); List<LHSGeneratorContext> getPeers(final LHSGeneratorContext peer);  }
@Test public void testNewGeneratorContext() { factory.newGeneratorContext(); assertThat(factory.getGeneratorContexts()).hasSize(1); assertThat(factory.getGeneratorContexts().get(0).getDepth()).isEqualTo(0); factory.newGeneratorContext(); assertThat(factory.getGeneratorContexts()).hasSize(2); assertThat(factory.getGeneratorContexts().get(1).getDepth()).isEqualTo(0); }