class CategoryPath implements Comparable<CategoryPath> {

	public List<String> asList() {
		if (isRoot()) {
			return new ArrayList<>();
		}
		List<String> list = parent.asList();
		list.add(name);
		return list;
	}

	private  CategoryPath();
	public  CategoryPath(CategoryPath parent, String... subPathElements);
	public  CategoryPath(CategoryPath parent, List<String> subPathElements);
	public  CategoryPath(String path);

}