@Override
	public TreeFactory treeFactory() {
		LabelFactory lf = (label() == null) ? CoreLabel.factory() : label().labelFactory();
		return new LabeledScoredTreeFactory(lf);
	}
@ Override public TreeFactory treeFactory ( ) { LabelFactory lf = ( label ( ) == null ) ? CoreLabel . factory ( ) : label ( ) . labelFactory ( ) ; return new LabeledScoredTreeFactory ( lf ) ; }
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