whole_func_string: function update() {
  	var stateTree = buildTreeJSON(xebraState.getPatchers());
  	var nodes = d3.hierarchy(stateTree, function(d) {
  		return d.children;
  	});
  	d3Tree(nodes);
  
  	var link = g.selectAll(".link")
  		.data(nodes.descendants().slice(1))
  	.enter().append("path")
  		.attr("class", "link")
  		.attr("d", diagonal);
  
  	var node = g.selectAll(".node")
  		.data(nodes.descendants())
  	.enter().append("g")
  		.attr("class", function(d) { return "node" + (d.children ? " node--internal" : " node--leaf"); })
  		.attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; });
  
  	node.append("circle")
  		.attr("r", 2.5);
  
  	node.append("text")
  		.attr("dy", function(d) { return d.children ? -10 : 0 })
  		.attr("x", function(d) { return d.children ? -8 : 8; })
  		.style("text-anchor", "start" )
  		.text(function(d) { return d.data.name; });
  }
func_code_string: function update() {
  	var stateTree = buildTreeJSON(xebraState.getPatchers());
  	var nodes = d3.hierarchy(stateTree, function(d) {
  		return d.children;
  	});
  	d3Tree(nodes);
  
  	var link = g.selectAll(".link")
  		.data(nodes.descendants().slice(1))
  	.enter().append("path")
  		.attr("class", "link")
  		.attr("d", diagonal);
  
  	var node = g.selectAll(".node")
  		.data(nodes.descendants())
  	.enter().append("g")
  		.attr("class", function(d) { return "node" + (d.children ? " node--internal" : " node--leaf"); })
  		.attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; });
  
  	node.append("circle")
  		.attr("r", 2.5);
  
  	node.append("text")
  		.attr("dy", function(d) { return d.children ? -10 : 0 })
  		.attr("x", function(d) { return d.children ? -8 : 8; })
  		.style("text-anchor", "start" )
  		.text(function(d) { return d.data.name; });
  }
func_documentation_string: D3 Update function