public void testNaturalCompare() {
   final List<String> strings =
       new ArrayList(
           Arrays.asList(
               "Test99",
               "tes0",
               "test0",
               "testing",
               "test",
               "test99",
               "test011",
               "test1",
               "test 3",
               "test2",
               "test10a",
               "test10",
               "1.2.10.5",
               "1.2.9.1"));
   final Comparator<String> c =
       new Comparator<String>() {
         @Override
         public int compare(String o1, String o2) {
           return StringUtil.naturalCompare(o1, o2);
         }
       };
   Collections.sort(strings, c);
   assertEquals(
       Arrays.asList(
           "1.2.9.1",
           "1.2.10.5",
           "tes0",
           "test",
           "test0",
           "test1",
           "test2",
           "test 3",
           "test10",
           "test10a",
           "test011",
           "Test99",
           "test99",
           "testing"),
       strings);
   final List<String> strings2 =
       new ArrayList(Arrays.asList("t1", "t001", "T2", "T002", "T1", "t2"));
   Collections.sort(strings2, c);
   assertEquals(Arrays.asList("T1", "t1", "t001", "T2", "t2", "T002"), strings2);
   assertEquals(1, StringUtil.naturalCompare("7403515080361171695", "07403515080361171694"));
   assertEquals(-14, StringUtil.naturalCompare("_firstField", "myField1"));
 }
 @Override
 public int compare(EditorSchemeAttributeDescriptor o1, EditorSchemeAttributeDescriptor o2) {
   return StringUtil.naturalCompare(o1.toString(), o2.toString());
 }
 @Override
 public int compare(GitRemoteBranch branch1, GitRemoteBranch branch2) {
   return StringUtil.naturalCompare(branch1.getFullName(), branch2.getFullName());
 }