diff --git a/include/clang/AST/DeclObjC.h b/include/clang/AST/DeclObjC.h
index 9139050..f11608f 100644
--- a/include/clang/AST/DeclObjC.h
+++ b/include/clang/AST/DeclObjC.h
@@ -602,10 +602,6 @@
   virtual ~ObjCProtocolDecl();
   
 public:
-    
-  /// Destroy - Call destructors and release memory.
-  virtual void Destroy(ASTContext& C);
-  
   static ObjCProtocolDecl *Create(ASTContext &C, DeclContext *DC, 
                                   SourceLocation L, IdentifierInfo *Id);
 
diff --git a/lib/AST/DeclObjC.cpp b/lib/AST/DeclObjC.cpp
index 9fc0f76..ea7a047 100644
--- a/lib/AST/DeclObjC.cpp
+++ b/lib/AST/DeclObjC.cpp
@@ -73,13 +73,9 @@
   for (ivar_iterator I=ivar_begin(), E=ivar_end(); I!=E; ++I)
     if (*I) (*I)->Destroy(C);
   
-  for (method_iterator I=meth_begin(), E=meth_end(); I!=E; ++I)
-    if (*I) const_cast<ObjCMethodDecl*>((*I))->Destroy(C);
-
   // FIXME: Because there is no clear ownership
   //  role between ObjCInterfaceDecls and the ObjCPropertyDecls that they
   //  reference, we destroy ObjCPropertyDecls in ~TranslationUnit.
-
   Decl::Destroy(C);
 }
 
@@ -115,20 +111,6 @@
   delete [] PropertyDecl;
 }
 
-void ObjCProtocolDecl::Destroy(ASTContext& C) {
-  
-  // Referenced Protocols are not owned, so don't Destroy them.
-  
-  for (method_iterator I=meth_begin(), E=meth_end(); I!=E; ++I)
-    if (*I) const_cast<ObjCMethodDecl*>((*I))->Destroy(C);
-  
-  // FIXME: Because there is no clear ownership
-  //  role between ObjCProtocolDecls and the ObjCPropertyDecls that they
-  //  reference, we destroy ObjCPropertyDecls in ~TranslationUnit.
-  
-  Decl::Destroy(C);
-}
-
 
 ObjCClassDecl *ObjCClassDecl::Create(ASTContext &C, DeclContext *DC,
                                      SourceLocation L,
