diff --git a/core/meta/src/TClass.cxx b/core/meta/src/TClass.cxx
index 4f6bca687994861704d57be980356fa8a344c54d..d725543c5dcc9c6980eacde2d36dd96fea9e9847 100644
--- a/core/meta/src/TClass.cxx
+++ b/core/meta/src/TClass.cxx
@@ -4477,7 +4477,7 @@ TVirtualStreamerInfo *TClass::FindStreamerInfo(UInt_t checksum) const
       TVirtualStreamerInfo *info = (TVirtualStreamerInfo*)GetStreamerInfos()->At(i);
       if (!info) continue;
       if (info->GetCheckSum() == checksum) {
-         //R__ASSERT(i==info->GetClassVersion() || (i==-1&&info->GetClassVersion()==1));
+         R__ASSERT(i==info->GetClassVersion() || (i==-1&&info->GetClassVersion()==1));
          return info;
       }
    }
diff --git a/io/io/src/TStreamerInfo.cxx b/io/io/src/TStreamerInfo.cxx
index c74d09a141d790f0a2bddc98a222a8612a532db0..4c0898e742fbe0e319f309f997fb8b137cf54851 100644
--- a/io/io/src/TStreamerInfo.cxx
+++ b/io/io/src/TStreamerInfo.cxx
@@ -510,35 +510,6 @@ void TStreamerInfo::BuildCheck()
             }
          }
       }
-            
-
-
-//       searchOnChecksum = kTRUE;
-
-//       // If we have a foreign class, we need to search for
-//       // a StreamerInfo with same checksum.
-//       Bool_t searchOnChecksum = kFALSE;
-//       if (fClass->IsLoaded()) {
-//          if (fClass->IsForeign()) {
-//             searchOnChecksum = kTRUE;
-//          }
-//       } else {
-//          // When the class is not loaded the result of IsForeign()
-//          // is not what we are looking for (technically it means
-//          // IsLoaded() and there is no Streamer() method).
-//          //
-//          // A foreign class would have the ClassVersion equal to 1.
-//          // Also we only care if a StreamerInfo has already been loaded.
-//          if (fClassVersion == 1) {
-//             TStreamerInfo* v1 = (TStreamerInfo*) array->At(1);
-//             if (v1) {
-//                if (fCheckSum != v1->GetCheckSum()) {
-//                   searchOnChecksum = kTRUE;
-//                   fClassVersion = array->GetLast() + 1;
-//                }
-//             }
-//          }
-//       }
 
       if (!searchOnChecksum) {
          if (fClassVersion < array->GetEntriesFast()) {
@@ -551,7 +522,9 @@ void TStreamerInfo::BuildCheck()
             if (!info) {
                continue;
             }
-            if (fCheckSum == info->GetCheckSum()) {
+            if (fCheckSum == info->GetCheckSum() && (info->GetOnFileClassVersion()==1 || info->GetOnFileClassVersion()==0)) {
+               // We must match on the same checksum, an existing TStreamerInfo
+               // for one of the 'unversioned' class layout (i.e. version was 1).
                fClassVersion = i;
                break;
             }