public List<ScoredObject<Tree>> getKGoodFactoredParses(int k) {
    if (bparser == null) {
      return null;
    }
    List<ScoredObject<Tree>> binaryTrees = bparser.getKGoodParses(k);
    if (binaryTrees == null) {
      return null;
    }
    List<ScoredObject<Tree>> trees = new ArrayList<ScoredObject<Tree>>(k);
    for (ScoredObject<Tree> tp : binaryTrees) {
      Tree t = debinarizer.transformTree(tp.object());
      t = subcategoryStripper.transformTree(t);
      trees.add(new ScoredObject<Tree>(t, tp.score()));
    }
    return trees;
  }