private void printASCII(JadeTree tree, PrintWriter out) {
		tree.update();

		numExternalNodes = tree.externalNodes.size();
		numInternalNodes = tree.internalNodes.size();
		numBranches = numInternalNodes + numExternalNodes - 1;

		umbrella = new boolean[numExternalNodes];
		position = new int[numExternalNodes];

		minLength = (Integer.toString(numBranches)).length() + 1;

		int MAXCOLUMN = 40;
		JadeNode root = tree.getRoot();
		if (root.getDistanceToTip() == 0.0) {
			TreeUtils.setDistanceToTips(root);
		}
		proportion = (double) MAXCOLUMN / root.getDistanceToTip();
		// proportion = (double) MAXCOLUMN/0.1;

		for (int n = 0; n < numExternalNodes; n++) {
			umbrella[n] = false;
		}

		position[0] = 1;
		for (int i = root.getChildCount() - 1; i > -1; i--) {
			printNodeInASCII(out, root.getChild(i), 1, i, root.getChildCount());
			if (i != 0) {
				putCharAtLevel(out, 0, '|');
				out.println();
			}
		}
	}