### Question:
GTreeNode extends CoreGTreeNode implements Comparable<GTreeNode> { @Override public int compareTo(GTreeNode node) { return getName().compareToIgnoreCase(node.getName()); }  String getDisplayText(); abstract String getName(); abstract Icon getIcon(boolean expanded); abstract String getToolTip(); abstract boolean isLeaf(); @Override int compareTo(GTreeNode node); void addNode(GTreeNode node); void addNodes(List<GTreeNode> nodes); void addNode(int index, GTreeNode node); List<GTreeNode> getChildren(); int getChildCount(); GTreeNode getChild(String name); GTreeNode getChild(int index); int getNodeCount(); int getLeafCount(); int getIndexInParent(); int getIndexOfChild(GTreeNode node); TreePath getTreePath(); void removeAll(); void removeNode(GTreeNode node); void setChildren(List<GTreeNode> childList); boolean isAncestor(GTreeNode node); void valueChanged(Object newValue); boolean isEditable(); GTreeNode getRoot(); boolean isRoot(); GTreeNode filter(GTreeFilter filter, TaskMonitor monitor); int loadAll(TaskMonitor monitor); @Override int hashCode(); @Override boolean equals(Object obj); Stream<GTreeNode> stream(boolean depthFirst); Iterator<GTreeNode> iterator(boolean depthFirst); @Override String toString(); void fireNodeStructureChanged(GTreeNode node); void fireNodeChanged(GTreeNode parentNode, GTreeNode node); void expand(); void collapse(); boolean isExpanded();  }### Answer:
@Test public void testCompareTo() { TestNode nodeFoo = new TestNode("Foo"); TestNode nodefoo = new TestNode("foo"); TestNode nodeBar = new TestNode("Bar"); assertEquals(0, nodeFoo.compareTo(nodefoo)); assertEquals(0, nodefoo.compareTo(nodeFoo)); assertEquals(0, nodeFoo.compareTo(nodeFoo)); assertTrue(nodeFoo.compareTo(nodeBar) > 0); assertTrue(nodeBar.compareTo(nodeFoo) < 0); assertTrue(nodefoo.compareTo(nodeBar) > 0); }