diff --git a/core/meta/src/TProtoClass.cxx b/core/meta/src/TProtoClass.cxx
index e1cd6186f3a49b78dff9893fa0c1b2fecde67982..f0b6dea1b2b45cd234f634e4a7d2ab6e0db3c46c 100644
--- a/core/meta/src/TProtoClass.cxx
+++ b/core/meta/src/TProtoClass.cxx
@@ -202,6 +202,9 @@ void TProtoClass::Delete(Option_t* opt /*= ""*/) {
 
 ////////////////////////////////////////////////////////////////////////////////
 /// Move data from this TProtoClass into cl.
+/// Returns 'false' if nothing was done.  This can happen in the case where
+/// there is more than one dictionary for the same entity.  Note having
+/// duplicate dictionary is acceptable for namespace or STL collections.
 
 Bool_t TProtoClass::FillTClass(TClass* cl) {
    if (cl->fRealData || cl->fBase || cl->fData || cl->fEnums.load()
@@ -217,12 +220,12 @@ Bool_t TProtoClass::FillTClass(TClass* cl) {
          // which is part of libCore proper.
          if (gDebug > 0)
             Info("FillTClass", "Returning w/o doing anything. %s is a STL collection.",cl->GetName());
-         return kTRUE;
+         return kFALSE;
       }
       if (cl->Property() & kIsNamespace) {
          if (gDebug > 0)
             Info("FillTClass", "Returning w/o doing anything. %s is a namespace.",cl->GetName());
-         return kTRUE;
+         return kFALSE;
       }
       Error("FillTClass", "TClass %s already initialized!", cl->GetName());
       return kFALSE;