code: function plotTree(tree,x,y) {
    var results=[],items=[],
        width=0,height=0,
        fromX=x,top=y,bottom=y;
    if (!tree.length) return plotNode.empty(null,x,y);
    tree.forEach(function (node) {
      var ret;
      if (node.repeat) {
        ret=plotNode.repeat(node,fromX,y);
      } else {
        ret=plotNode[node.type](node,fromX,y);
      }
      results.push(ret);
      fromX+=ret.width+PATH_LEN;
      width+=ret.width;
      top=Math.min(top,ret.y);
      bottom=Math.max(bottom,ret.y+ret.height);
      items=items.concat(ret.items);
    });
    height=bottom-top;
    results.reduce(function (a,b) {
      width+=PATH_LEN;
      var p=hline(a.lineOutX,y,b.lineInX);
      items.push(p);
      return b;
    });
    var lineInX=results[0].lineInX,lineOutX=results[results.length-1].lineOutX;
    return {
      items:items,
      width:width,height:height,x:x,y:top,
      lineInX:lineInX,lineOutX:lineOutX
    };
  }
docs: return NodePlot config