code: public void dump(PrintStream fp) {
  		fp.println("Program " + name);
  
  		String dashes = "----------------------------------------------------------------------";
  
  		// header
  		fp.println(dashes);
  		fp.format(FMT, "Name", "Type", "Content");
  		fp.println(dashes);
  		fp.println();
  
  		Set<String> names = new TreeSet<>(hedges.keySet());
  		names.forEach(name
  				-> fp.format(FMT, name, "<hedge>", hedges.get(name).getExpressionString())
  		);
  
  		names = new TreeSet<>(functions.keySet());
  		names.forEach(name
  				-> fp.format(FMT, name, "<func def>", functions.get(name).toLogString())
  		);
  
  		names = new TreeSet<>(inputs.keySet());
  		names.forEach(name -> dump(fp, inputs.get(name), "input"));
  
  		names = new TreeSet<>(outputs.keySet());
  		names.forEach(name -> dump(fp, outputs.get(name), "output"));
  
  		names = new TreeSet<>(rules.keySet());
  		names.forEach(name -> fp.format(FMT, name, "<rule>", rules.get(name)));
  
  		// we are done
  		fp.println();
  		fp.println(dashes);
  		fp.println();
  	}
docs: Dump the content of the program.
  <p>
  @param fp the printer