protected String getLabel(Tree tree, Node node) {
		if (displayAttribute.equalsIgnoreCase(TAXON_NAMES)) {
			Taxon taxon = tree.getTaxon(node);
			if (taxon != null) {
				if (textDecorator != null) {
					textDecorator.setItem(taxon);
				}
				return taxon.getName();
			} else {
				return "unlabelled";
			}
		}

		if ( tree instanceof RootedTree) {
			final RootedTree rtree = (RootedTree) tree;

			if (textDecorator != null) {
				textDecorator.setItem(node);
			}

			if (displayAttribute.equalsIgnoreCase(NODE_HEIGHTS) ) {
				return getNumberFormat().format(rtree.getHeight(node));
			} else if (displayAttribute.equalsIgnoreCase(BRANCH_LENGTHS) ) {
				return getNumberFormat().format(rtree.getLength(node));
			}
		}

		return formatValue(node.getAttribute(displayAttribute));
	}