title: Comparison method violates its general contract Exception
body: <p>Below is a block of code that results in exception as indicated,</p>
  
  <p>Code :</p>
  
  <pre><code>Collections.sort( arrayList, new Comparator() 
  {
      public int compare( Object o1, Object o2 )
      {
          TypeAdapterSort tas1 = ( TypeAdapterSort ) o1;
          TypeAdapterSort tas2 = ( TypeAdapterSort ) o2;
          if ( tas1.order &lt; tas2.order )
              return -1;
          else
              return 1;
      }
  } );
  </code></pre>
  
  <p>Exception :</p>
  
  <pre><code>java.lang.IllegalArgumentException: Comparison method violates its general contract!
                  at java.util.TimSort.mergeLo(TimSort.java:747)
                  at java.util.TimSort.mergeAt(TimSort.java:483)
                  at java.util.TimSort.mergeForceCollapse(TimSort.java:426)
                  at java.util.TimSort.sort(TimSort.java:223)
                  at java.util.TimSort.sort(TimSort.java:173)
                  at java.util.Arrays.sort(Arrays.java:659)
                  at java.util.Collections.sort(Collections.java:217)
  </code></pre>
  
  <p>When I run the same code as a standalone program, the issue never occurs. What is the issue with the comparator here? Is there a way to reproduce the issue in a standalone code?</p>
  
  <p>This issue occurs only on Java 1.7 as there has been change in the implementation on Arrays.sort &amp; Collections.sort. How to change the above code to avoid the issue?. Also, how to reproduce this issue in a standalone code?</p>