private int addConstituents(Tree<L> tree, Set<Object> set, int start) {
    	if (tree == null){
    		return 0;
    	}
      if (tree.isLeaf()) {
        if (punctuationTags.contains(tree.getLabel()))
          return 0;
        else
          return 1;
      }
      int end = start;
      for (Tree<L> child : tree.getChildren()) {
        int childSpan = addConstituents(child, set, end);
        end += childSpan;
      }
      L label = tree.getLabel();
      if (! labelsToIgnore.contains(label)) {
        set.add(new LabeledConstituent<L>(label, start, end));
      }
      return end - start;
    }