diff --git a/AST/StmtSerialization.cpp b/AST/StmtSerialization.cpp
index aa45c62..adf7765 100644
--- a/AST/StmtSerialization.cpp
+++ b/AST/StmtSerialization.cpp
@@ -94,9 +94,6 @@
 
     case ForStmtClass:
       return ForStmt::CreateImpl(D);
-      
-    case ObjcForCollectionStmtClass:
-      return ObjcForCollectionStmt::CreateImpl(D);
     
     case GotoStmtClass:
       return GotoStmt::CreateImpl(D);
@@ -174,6 +171,9 @@
     case ObjCEncodeExprClass:
       return ObjCEncodeExpr::CreateImpl(D);
       
+    case ObjcForCollectionStmtClass:
+      return ObjcForCollectionStmt::CreateImpl(D);
+      
     case ObjCIvarRefExprClass:
       return ObjCIvarRefExpr::CreateImpl(D);
       
@@ -563,21 +563,6 @@
   return new ForStmt(Init,Cond,Inc,Body,ForLoc);
 }
 
-void ObjcForCollectionStmt::EmitImpl(Serializer& S) const {
-  S.Emit(ForLoc);
-  S.EmitOwnedPtr(getElement());
-  S.EmitOwnedPtr(getCollection());
-  S.EmitOwnedPtr(getBody());
-}
-
-ObjcForCollectionStmt* ObjcForCollectionStmt::CreateImpl(Deserializer& D) {
-  SourceLocation ForLoc = SourceLocation::ReadVal(D);
-  Stmt* Element = D.ReadOwnedPtr<Stmt>();
-  Expr* Collection = D.ReadOwnedPtr<Expr>();
-  Stmt* Body = D.ReadOwnedPtr<Stmt>();
-  return new ObjcForCollectionStmt(Element,Collection,Body,ForLoc);
-}
-
 void GotoStmt::EmitImpl(Serializer& S) const {
   S.Emit(GotoLoc);
   S.Emit(LabelLoc);
@@ -934,6 +919,21 @@
   return new ObjCEncodeExpr(T,ET,AtLoc,RParenLoc);
 }
 
+void ObjcForCollectionStmt::EmitImpl(Serializer& S) const {
+  S.Emit(ForLoc);
+  S.EmitOwnedPtr(getElement());
+  S.EmitOwnedPtr(getCollection());
+  S.EmitOwnedPtr(getBody());
+}
+
+ObjcForCollectionStmt* ObjcForCollectionStmt::CreateImpl(Deserializer& D) {
+  SourceLocation ForLoc = SourceLocation::ReadVal(D);
+  Stmt* Element = D.ReadOwnedPtr<Stmt>();
+  Expr* Collection = D.ReadOwnedPtr<Expr>();
+  Stmt* Body = D.ReadOwnedPtr<Stmt>();
+  return new ObjcForCollectionStmt(Element,Collection,Body,ForLoc);
+}
+
 void ObjCIvarRefExpr::EmitImpl(Serializer& S) const {
   S.Emit(Loc);
   S.Emit(getType());
