diff --git a/clang/lib/Analysis/GRExprEngine.cpp b/clang/lib/Analysis/GRExprEngine.cpp
index 88e6798..284fae8 100644
--- a/clang/lib/Analysis/GRExprEngine.cpp
+++ b/clang/lib/Analysis/GRExprEngine.cpp
@@ -118,13 +118,11 @@
   ExplodedNodeSet Tmp;
   ExplodedNodeSet *PrevSet = &Src;
 
-  for (llvm::DenseMap<void*, Checker*>::iterator I = Checkers.begin(), 
-         E = Checkers.end(); I != E; ++I) {
-
-    llvm::DenseMap<void*, Checker*>::iterator X = I;
-
-    ExplodedNodeSet *CurrSet = (++X == E) ? &Dst
+  for (CheckersOrdered::iterator I=Checkers.begin(),E=Checkers.end(); I!=E; ++I)
+  {
+    ExplodedNodeSet *CurrSet = (I+1 == E) ? &Dst 
                                           : (PrevSet == &Tmp) ? &Src : &Tmp;
+
     CurrSet->clear();
     void *tag = I->first;
     Checker *checker = I->second;
@@ -146,7 +144,7 @@
   if (Checkers.empty())
     return Pred;
 
-  for (llvm::DenseMap<void*, Checker*>::iterator I = Checkers.begin(), 
+  for (CheckersOrdered::iterator I = Checkers.begin(), 
          E = Checkers.end(); I != E; ++I) {
     Pred = I->second->CheckLocation(S, Pred, state, V, *this);
     if (!Pred)
@@ -184,8 +182,7 @@
 GRExprEngine::~GRExprEngine() {
   BR.FlushReports();
   delete [] NSExceptionInstanceRaiseSelectors;
-  for (llvm::DenseMap<void*, Checker*>::iterator I=Checkers.begin(), 
-         E=Checkers.end(); I!=E; ++I)
+  for (CheckersOrdered::iterator I=Checkers.begin(), E=Checkers.end(); I!=E;++I)
     delete I->second;
 }
 
@@ -2861,6 +2858,15 @@
 }
 
 //===----------------------------------------------------------------------===//
+// Checker registration/lookup.
+//===----------------------------------------------------------------------===//
+
+Checker *GRExprEngine::lookupChecker(void *tag) const {
+  CheckerMap::iterator I = CheckerM.find(tag);
+  return (I == CheckerM.end()) ? NULL : Checkers[I->second].second;
+}
+
+//===----------------------------------------------------------------------===//
 // Visualization.
 //===----------------------------------------------------------------------===//
 
