@Override
	public String toString() {
		StringBuffer buf = new StringBuffer();
		
		for (int i = 0, limit = nodes.size(); i < limit; i++) {
			Node node = nodes.get(i);
			
			// Since a node may be a root node, and depthPaddedValue doesn't throw in root level text,
			// let's put it back in.
			if (node.isRoot()) {
				for (int j = 0, limit2 = node.getDepth(); j < limit2; j++) {
					buf.append(Preferences.DEPTH_PAD_STRING);
				}
				buf.append(node.getValue()).append(Preferences.LINE_END_STRING);
			}
			
			// for both root nodes and not-root-nodes: append the not-root nodes' text		[sk]
			node.depthPaddedValue(buf,  Preferences.LINE_END_STRING);
		}
		return buf.toString();
	}