code: @Override
    public TreeFactory treeFactory() {
      LabelFactory lf;
      if (label() != null) {
        lf = label().labelFactory();
      } else {
        lf = CyclicCoreLabel.factory();
      }
      return new TreeGraphNodeFactory(lf);
    }
docs: Returns a <code>TreeFactory</code> that produces
  <code>TreeGraphNode</code>s.  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>CyclicCoreLabel.factory()</code> will be used.  The factories
  returned on different calls are different: a new one is
  allocated each time.
  
  @return a factory to produce treegraphs