private static void testParser(Parser 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();
      Tree<String> guessedTree = parser.getBestParse(testSentence);
      endTime = System.currentTimeMillis();
      if (guessedTree.isLeaf()){
      	notPossibleParse++;
      }
      if (verbose) {
        System.out.println("Guess:\n" + Trees.PennTreeRenderer.render(guessedTree));
        System.out.println("Gold:\n" + Trees.PennTreeRenderer.render(testTree));
        System.out.println(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);
  }