diff --git a/utils/src/rootcint.cxx b/utils/src/rootcint.cxx
index aca7fe8ae94b84d3bdd968f959a6ae0046d6efda..25f0fd8784389cc97ca50d92c50909bf15ace0d2 100644
--- a/utils/src/rootcint.cxx
+++ b/utils/src/rootcint.cxx
@@ -1,4 +1,4 @@
-// @(#)root/utils:$Name:  $:$Id: rootcint.cxx,v 1.253 2007/01/31 15:47:31 brun Exp $
+// @(#)root/utils:$Name:  $:$Id: rootcint.cxx,v 1.254 2007/01/31 19:59:53 pcanal Exp $
 // Author: Fons Rademakers   13/07/96
 
 /*************************************************************************
@@ -337,6 +337,8 @@ char autold[64];
 std::ostream* dictSrcOut=&std::cout;
 G__ShadowMaker *shadowMaker=0;
 
+bool gNeedCollectionProxy = false;
+
 enum EDictType {
    kDictTypeCint,
    kDictTypeReflex,
@@ -2476,10 +2478,10 @@ void WriteClassInit(G__ClassInfo &cl)
             methodTCP="Insert";
             break;
       }
-      (*dictSrcOut) << "      instance.AdoptStreamer(TCollectionProxy::GenClassStreamer(TCollectionProxy::"
-          << methodTCP << "< " << classname.c_str() << " >()));" << std::endl
-          << "      instance.AdoptCollectionProxy(TCollectionProxy::GenProxy(TCollectionProxy::"
-          << methodTCP << "< " << classname.c_str() << " >()));" << std::endl;
+      (*dictSrcOut) << "      instance.AdoptCollectionProxyInfo(TCollectionProxyInfo::Generate(TCollectionProxyInfo::"
+                    << methodTCP << "< " << classname.c_str() << " >()));" << std::endl;
+
+      gNeedCollectionProxy = true;
    }
    (*dictSrcOut) << "      return &instance;"  << std::endl
                  << "   }" << std::endl;
@@ -4561,18 +4563,18 @@ int main(int argc, char **argv)
        << "//" << std::endl << std::endl
 
        << "#include \"RConfig.h\"" << std::endl
-//        << "#if !defined(R__ACCESS_IN_SYMBOL)" << std::endl
-//        << "//Break the privacy of classes -- Disabled for the moment" << std::endl
-//        << "#define private public" << std::endl
-//        << "#define protected public" << std::endl
-//        << "#endif" << std::endl 
-          << std::endl;
+       << "#if !defined(R__ACCESS_IN_SYMBOL)" << std::endl
+       << "//Break the privacy of classes -- Disabled for the moment" << std::endl
+       << "#define private public" << std::endl
+       << "#define protected public" << std::endl
+       << "#endif" << std::endl 
+       << std::endl;
 #ifndef R__SOLARIS
    (*dictSrcOut) << "// Since CINT ignores the std namespace, we need to do so in this file." << std::endl
        << "namespace std {} using namespace std;" << std::endl << std::endl;
-   int linesToSkip = 10; // number of lines up to here.
+   int linesToSkip = 15; // number of lines up to here.
 #else
-   int linesToSkip = 07; // number of lines up to here.
+   int linesToSkip = 12; // number of lines up to here.
 #endif
 
    (*dictSrcOut) << "#include \"TClass.h\"" << std::endl
@@ -4583,7 +4585,6 @@ int main(int argc, char **argv)
        << "#define G__ROOT" << std::endl
        << "#endif" << std::endl << std::endl
        << "#include \"RtypesImp.h\"" << std::endl
-       << "#include \"TCollectionProxy.h\"" << std::endl
        << "#include \"TIsAProxy.h\"" << std::endl;
    (*dictSrcOut) << std::endl;
 #ifdef R__SOLARIS
@@ -4966,6 +4967,9 @@ int main(int argc, char **argv)
                } else {
                   fprintf(fpd, "#include \"%s\"\n", inclf);
                }
+               if (gNeedCollectionProxy) {
+                  fprintf(fpd, "\n#include \"TCollectionProxyInfo.h\"");
+               }
             }
          }
       }