private static void testParserK(CKYParserK parser, List<Tree<String>> testTrees, boolean verbose) {
		int notPossibleParse = 0;
		long startTime = 0, endTime = 0;
    EnglishPennTreebankParseEvaluator.LabeledConstituentEval<String> eval = new EnglishPennTreebankParseEvaluator.LabeledConstituentEval<String>(Collections.singleton("ROOT"), new HashSet<String>(Arrays.asList(new String[]{"''", "``", ".", ":", ","})));
    for (Tree<String> testTree : testTrees) {
      startTime = System.currentTimeMillis();
      List<String> testSentence = testTree.getYield();
      List<Tree<String>> guessedTrees = parser.getBestParseK(testSentence);
      endTime = System.currentTimeMillis();
      for (Tree<String> guessedTree : guessedTrees){
          if (guessedTree.isLeaf()){
            	notPossibleParse++;
            }
            if (verbose) {
              System.out.println("Guess:\n" + Trees.PennTreeRenderer.render(guessedTree));
              System.out.println("Gold:\n" + Trees.PennTreeRenderer.render(testTree));
            }
            eval.evaluate(guessedTree, testTree);
          	System.out.println("size: " + testSentence.size() + "  time elapsed: " + (endTime-startTime)/1000);
      }
    }
    System.out.println("not possible to be parsed: " + notPossibleParse);
    eval.display(true);
  }