import java.io.*;

public class ObjectNode {
	boolean terminator = false;
	private String name;
	private ObjectNode parent;
	ObjectNode(String name) {
		this.name = name;
	}
	public void setParent(ObjectNode parent) {
		this.parent = parent;
	}
	public String getName() {
		return(name);
	}
	public ObjectNode getParent() {
		return(parent);
	}
	public boolean isTerminator() {
		return(terminator);
	}
	public void setTerminator(boolean setting) {
		terminator = setting;
	}
	public void dump(PrintWriter out) {
		dump(out,true);
	}
	public void dump(PrintWriter out,boolean skipClass) {
		boolean terminatorFound = false;
		ObjectNode node;
		node = this;
		if(skipClass) {
			if(name.endsWith("Class"))
				return;
		}
		while(node != null) {
			if(node.isTerminator())
				terminatorFound = true;
			node = node.getParent();
		}
		if(terminatorFound) {
			String strout = name;
			node = parent;
			while(node != null) {
				if((strout.length() + node.getName().length() + 2) > 61) {
					out.println(strout + "->");
					strout = "        " + node.getName();
				} else {
					strout += "->" + node.getName();
				}
				node = node.getParent();
			}
			out.println(strout);
		}
	}
}
