Don't pre-sort ClassDefItems
diff --git a/dexlib/src/main/java/org/jf/dexlib/ClassDefItem.java b/dexlib/src/main/java/org/jf/dexlib/ClassDefItem.java
index 3c9638d..a194231 100644
--- a/dexlib/src/main/java/org/jf/dexlib/ClassDefItem.java
+++ b/dexlib/src/main/java/org/jf/dexlib/ClassDefItem.java
@@ -197,9 +197,9 @@
 
     /** {@inheritDoc} */
     public int compareTo(ClassDefItem o) {
-        //The actual sorting for this class is implemented in SortClassDefItemSection.
-        //This method is just used for sorting the associated ClassDataItem items, so
-        //we can just do the comparison based on the offsets of the items
+        //The actual sorting for this class is done during the placement phase, in ClassDefPlacer.
+        //This method is just used for sorting the associated ClassDataItem items after the ClassDefItems have been
+        //placed, so we can just do the comparison based on the offsets
         return this.getOffset() - o.getOffset();
     }
 
diff --git a/dexlib/src/main/java/org/jf/dexlib/DexFile.java b/dexlib/src/main/java/org/jf/dexlib/DexFile.java
index a31ee66..80f25f8 100644
--- a/dexlib/src/main/java/org/jf/dexlib/DexFile.java
+++ b/dexlib/src/main/java/org/jf/dexlib/DexFile.java
@@ -773,16 +773,15 @@
 
             int ret = ClassDefItem.placeClassDefItems(this, offset);
 
-            Collections.sort(this.items, new Comparator<ClassDefItem>() {
-
-                public int compare(ClassDefItem a, ClassDefItem b) {
-                    return a.getOffset() - b.getOffset();
-                }
-            });
+            Collections.sort(this.items);
 
             this.offset = items.get(0).getOffset();
             return ret;
         }
+
+        protected void sortSection() {
+            // Do nothing. Sorting is handled by ClassDefItem.ClassDefPlacer, during placement
+        }
     };
 
     /**