docs: public PairCountAccumulator<List<String>, LexiconEntry> generateLexicon(
        Collection<AlignmentExample> examples, int lexiconNumParses,
        TypeDeclaration typeDeclaration) {
      PairCountAccumulator<List<String>, LexiconEntry> alignments = PairCountAccumulator.create();
      for (AlignmentExample example : examples) {
        List<AlignedExpressionTree> trees = Lists.newArrayList();
        
        if (lexiconNumParses <= 0) {
          trees.add(getBestAlignment(example));
        } else {
          trees.addAll(getBestAlignments(example, lexiconNumParses));
        }
  
        // System.out.println(example.getWords());
        for (AlignedExpressionTree tree : trees) {
          // System.out.println(tree);
  
          for (LexiconEntry entry : tree.generateLexiconEntries(typeDeclaration)) {
            alignments.incrementOutcome(entry.getWords(), entry, 1);
            // System.out.println("   " + entry);
          }
          // System.out.println("");
        }
      }
      return alignments;
    }