code: @Override
  	public TreeFactory treeFactory() {
  		LabelFactory lf = (label() == null) ? CoreLabel.factory() : label().labelFactory();
  		return new LabeledScoredTreeFactory(lf);
  	}
docs: Return a <code>TreeFactory</code> that produces trees of the
  same type as the current <code>Tree</code>.  That is, this
  implementation, will produce trees of type
  <code>LabeledScoredTree(Node|Leaf)</code>.
  The <code>Label</code> of <code>this</code>
  is examined, and providing it is not <code>null</code>, a
  <code>LabelFactory</code> which will produce that kind of
  <code>Label</code> is supplied to the <code>TreeFactory</code>.
  If the <code>Label</code> is <code>null</code>, a
  <code>StringLabelFactory</code> will be used.
  The factories returned on different calls a different: a new one is
  allocated each time.
  
  @return a factory to produce labeled, scored trees