// @(#)root/io:$Id$
// Author: Philippe Canal 05/2010

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#include "TStreamerInfo.h"
#include "TStreamerInfoActions.h"
#include "TROOT.h"
#include "TStreamerElement.h"
#include "TVirtualMutex.h"
#include "TInterpreter.h"
#include "TError.h"
#include "TVirtualArray.h"
#include "TBufferFile.h"
#include "TMemberStreamer.h"
#include "TError.h"
#include "TClassEdit.h"
#include "TVirtualCollectionIterators.h"
#include "TProcessID.h"

static const Int_t kRegrouped = TStreamerInfo::kOffsetL;

// More possible optimizations:
// Avoid call the virtual version of TBuffer::ReadInt and co.
// Merge the Reading of the version and the looking up or the StreamerInfo
// Avoid if (bytecnt) inside the CheckByteCount routines and avoid multiple (mostly useless nested calls)
// Try to avoid if statement on onfile class being set (TBufferFile::ReadClassBuffer).

using namespace TStreamerInfoActions;

#ifdef _AIX
# define INLINE_TEMPLATE_ARGS
#else
# define INLINE_TEMPLATE_ARGS inline
#endif


namespace TStreamerInfoActions 
{
   template <typename From>
   struct WithFactorMarker {
      typedef From Value_t;
   };

   template <typename From>
   struct NoFactorMarker {
      typedef From Value_t;
   };

   struct BitsMarker {
      typedef UInt_t Value_t;
   };

   void TConfiguration::AddToOffset(Int_t delta)
   {
      // Add the (potentially negative) delta to all the configuration's offset.  This is used by
      // TBranchElement in the case of split sub-object.

      fOffset += delta;
   }

   void TConfiguredAction::PrintDebug(TBuffer &buf, void *addr) const
   {
      // Inform the user what we are about to stream.

      // Idea, we should find a way to print the name of the function
      if (fConfiguration) fConfiguration->PrintDebug(buf,addr);
   }

   void TConfiguration::Print() const
   {
      // Inform the user what we are about to stream.

      TStreamerInfo *info = (TStreamerInfo*)fInfo;
      TStreamerElement *aElement = (TStreamerElement*)info->GetElems()[fElemId];
      TString sequenceType;
      aElement->GetSequenceType(sequenceType);

      printf("StreamerInfoAction, class:%s, name=%s, fType[%d]=%d,"
             " %s, offset=%d (%s)\n",
             info->GetClass()->GetName(), aElement->GetName(), fElemId, info->GetTypes()[fElemId],
             aElement->ClassName(), fOffset, sequenceType.Data());
   }

   void TConfiguration::PrintDebug(TBuffer &buf, void *addr) const
   {
      // Inform the user what we are about to stream.

      if (gDebug > 1) {
         // Idea: We should print the name of the action function.
         TStreamerInfo *info = (TStreamerInfo*)fInfo;
         TStreamerElement *aElement = (TStreamerElement*)info->GetElems()[fElemId];
         TString sequenceType;
         aElement->GetSequenceType(sequenceType);
      
         printf("StreamerInfoAction, class:%s, name=%s, fType[%d]=%d,"
                " %s, bufpos=%d, arr=%p, offset=%d (%s)\n",
                info->GetClass()->GetName(), aElement->GetName(), fElemId, info->GetTypes()[fElemId],
                aElement->ClassName(), buf.Length(), addr, fOffset, sequenceType.Data());
      }
   }

   void TLoopConfiguration::Print() const
   {
      // Inform the user what we are about to stream.

      printf("TLoopConfiguration: unconfigured\n");
   }
   

   struct TGenericConfiguration : TConfiguration {
      // Configuration of action using the legacy code.
      // Mostly to cancel out the PrintDebug.
   public:
      TGenericConfiguration(TVirtualStreamerInfo *info, UInt_t id, Int_t offset = 0) : TConfiguration(info,id,offset) {};
      void PrintDebug(TBuffer &, void *) const {
         // Since we call the old code, it will print the debug statement.
      }
 
      virtual TConfiguration *Copy() { return new TGenericConfiguration(*this); }
  };

   struct TBitsConfiguration : TConfiguration {
      // Configuration of action handling kBits.
      // In this case we need to know both the location
      // of the member (fBits) and the start of the object
      // (its TObject part to be exact).

      Int_t  fObjectOffset;  // Offset of the TObject part within the object

      TBitsConfiguration(TVirtualStreamerInfo *info, UInt_t id, Int_t offset = 0) : TConfiguration(info,id,offset),fObjectOffset(0) {};
      void PrintDebug(TBuffer &, void *) const {
         TStreamerInfo *info = (TStreamerInfo*)fInfo;
         TStreamerElement *aElement = (TStreamerElement*)info->GetElems()[fElemId];
         TString sequenceType;
         aElement->GetSequenceType(sequenceType);

         printf("StreamerInfoAction, class:%s, name=%s, fType[%d]=%d,"
                " %s, offset=%d (%s)\n",
                info->GetClass()->GetName(), aElement->GetName(), fElemId, info->GetTypes()[fElemId],
                aElement->ClassName(), fOffset, sequenceType.Data());
      }

      void AddToOffset(Int_t delta)
      {
         // Add the (potentially negative) delta to all the configuration's offset.  This is used by
         // TBranchElement in the case of split sub-object.
         
         fOffset += delta;
         fObjectOffset = 0;
      }

      virtual TConfiguration *Copy() { return new TBitsConfiguration(*this); }

   };

   Int_t GenericReadAction(TBuffer &buf, void *addr, const TConfiguration *config) 
   {
      char *obj = (char*)addr;
      TGenericConfiguration *conf = (TGenericConfiguration*)config;
      return ((TStreamerInfo*)conf->fInfo)->ReadBuffer(buf, &obj, conf->fElemId, 1, config->fOffset, 2);
   }

   Int_t GenericWriteAction(TBuffer &buf, void *addr, const TConfiguration *config) 
   {
      char *obj = (char*)addr;
      TGenericConfiguration *conf = (TGenericConfiguration*)config;
      return ((TStreamerInfo*)conf->fInfo)->WriteBufferAux(buf, &obj, conf->fElemId, 1, config->fOffset, 2);
   }

   template <typename T> 
   INLINE_TEMPLATE_ARGS Int_t ReadBasicType(TBuffer &buf, void *addr, const TConfiguration *config)
   {
      T *x = (T*)( ((char*)addr) + config->fOffset );
      // Idea: Implement buf.ReadBasic/Primitive to avoid the return value
      buf >> *x;
      return 0;
   }

   void HandleReferencedTObject(TBuffer &buf, void *addr, const TConfiguration *config) {
      TBitsConfiguration *conf = (TBitsConfiguration*)config;
      UShort_t pidf;
      buf >> pidf;
      pidf += buf.GetPidOffset();
      TProcessID *pid = buf.ReadProcessID(pidf);
      if (pid!=0) {
         TObject *obj = (TObject*)( ((char*)addr) + conf->fObjectOffset);
         UInt_t gpid = pid->GetUniqueID();
         UInt_t uid;
         if (gpid>=0xff) {
            uid = obj->GetUniqueID() | 0xff000000;
         } else {
            uid = ( obj->GetUniqueID() & 0xffffff) + (gpid<<24);
         }
         obj->SetUniqueID(uid);
         pid->PutObjectWithID(obj);
      }
   }

   template <> 
   INLINE_TEMPLATE_ARGS Int_t ReadBasicType<BitsMarker>(TBuffer &buf, void *addr, const TConfiguration *config)
   {
      UInt_t *x = (UInt_t*)( ((char*)addr) + config->fOffset );
      // Idea: Implement buf.ReadBasic/Primitive to avoid the return value
      // Idea: This code really belongs inside TBuffer[File]
      buf >> *x;
      
      if ((*x & kIsReferenced) != 0) {
         HandleReferencedTObject(buf,addr,config);
      }
      return 0;
   }

   template <typename T> 
   INLINE_TEMPLATE_ARGS Int_t WriteBasicType(TBuffer &buf, void *addr, const TConfiguration *config)
   {
      T *x = (T*)( ((char*)addr) + config->fOffset );
      // Idea: Implement buf.ReadBasic/Primitive to avoid the return value
      buf << *x;
      return 0;
   }

   class TConfWithFactor : public TConfiguration {
      // Configuration object for the Float16/Double32 where a factor has been specified.
   public:
      Double_t fFactor;
      Double_t fXmin;
      TConfWithFactor(TVirtualStreamerInfo *info, UInt_t id, Int_t offset, Double_t factor, Double_t xmin) : TConfiguration(info,id,offset),fFactor(factor),fXmin(xmin) {};
      virtual TConfiguration *Copy() { return new TConfWithFactor(*this); }
   };

   template <typename T>
   INLINE_TEMPLATE_ARGS Int_t ReadBasicType_WithFactor(TBuffer &buf, void *addr, const TConfiguration *config)
   {
      // Stream a Float16 or Double32 where a factor has been specified.
      //a range was specified. We read an integer and convert it back to a double.

      TConfWithFactor *conf = (TConfWithFactor *)config;
      buf.ReadWithFactor((T*)( ((char*)addr) + config->fOffset ), conf->fFactor, conf->fXmin);
      return 0;
   }

   class TConfNoFactor : public TConfiguration {
      // Configuration object for the Float16/Double32 where a factor has been specified.
   public:
      Int_t fNbits;
      TConfNoFactor(TVirtualStreamerInfo *info, UInt_t id, Int_t offset, Int_t nbits) : TConfiguration(info,id,offset),fNbits(nbits) {};
      virtual TConfiguration *Copy() { return new TConfNoFactor(*this); }
   };

   template <typename T>
   INLINE_TEMPLATE_ARGS Int_t ReadBasicType_NoFactor(TBuffer &buf, void *addr, const TConfiguration *config)
   {
      // Stream a Float16 or Double32 where a factor has not been specified.

      TConfNoFactor *conf = (TConfNoFactor *)config;
      Int_t nbits = conf->fNbits;

      buf.ReadWithNbits( (T*)( ((char*)addr) + config->fOffset ), nbits );
      return 0;
   }

   INLINE_TEMPLATE_ARGS Int_t ReadTString(TBuffer &buf, void *addr, const TConfiguration *config) 
   {
      // Read in a TString object.

      // Idea: We could separate the TString Streamer in its two parts and 
      // avoid the if (buf.IsReading()) and try having it inlined.
      ((TString*)(((char*)addr)+config->fOffset))->TString::Streamer(buf);
      return 0;
   }

   INLINE_TEMPLATE_ARGS Int_t ReadTObject(TBuffer &buf, void *addr, const TConfiguration *config) 
   {
      // Read in a TObject object part.

      // Idea: We could separate the TObject Streamer in its two parts and 
      // avoid the if (buf.IsReading()).
      ((TObject*)(((char*)addr)+config->fOffset))->TObject::Streamer(buf);
      return 0;
   }

   INLINE_TEMPLATE_ARGS Int_t ReadTNamed(TBuffer &buf, void *addr, const TConfiguration *config) 
   {
      // Read in a TNamed object part.
      // Since the TNamed streamer is solely delegating back to the StreamerInfo we 
      // can skip the streamer.

      // Idea: We could extract the code from ReadClassBuffer and avoid one function
      // code.
      static const TClass *TNamed_cl = TNamed::Class();
      return buf.ReadClassBuffer(TNamed_cl,(((char*)addr)+config->fOffset));
   }

   class TConfigSTL : public TConfiguration {
      // Configuration object for the kSTL case
   private:
      void Init() {
         TVirtualCollectionProxy *proxy = fNewClass->GetCollectionProxy();
         if (proxy) {
            fCreateIterators = proxy->GetFunctionCreateIterators();
            fCopyIterator = proxy->GetFunctionCopyIterator();
            fDeleteIterator = proxy->GetFunctionDeleteIterator();
            fDeleteTwoIterators = proxy->GetFunctionDeleteTwoIterators();
         }
      }

   public:
      TClass          *fOldClass;   // Class of the content on file
      TClass          *fNewClass;   // Class of the content in memory.
      TMemberStreamer *fStreamer;
      const char      *fTypeName;   // Type name of the member as typed by ther user.
      Bool_t          fIsSTLBase;  // aElement->IsBase() && aElement->IsA()!=TStreamerBase::Class()

      TVirtualCollectionProxy::CreateIterators_t    fCreateIterators;
      TVirtualCollectionProxy::CopyIterator_t       fCopyIterator;
      TVirtualCollectionProxy::DeleteIterator_t     fDeleteIterator;
      TVirtualCollectionProxy::DeleteTwoIterators_t fDeleteTwoIterators;

      TConfigSTL(TVirtualStreamerInfo *info, UInt_t id, Int_t offset, UInt_t length, TClass *oldClass, const char *type_name, Bool_t isbase) : 
         TConfiguration(info,id,offset,length), fOldClass(oldClass), fNewClass(oldClass), fStreamer(0), fTypeName(type_name), fIsSTLBase(isbase),
         fCreateIterators(0), fCopyIterator(0), fDeleteIterator(0), fDeleteTwoIterators(0) { Init(); }

      TConfigSTL(TVirtualStreamerInfo *info, UInt_t id, Int_t offset, UInt_t length, TClass *oldClass, TClass *newClass, const char *type_name, Bool_t isbase) : 
         TConfiguration(info,id,offset,length), fOldClass(oldClass), fNewClass(newClass), fStreamer(0), fTypeName(type_name), fIsSTLBase(isbase),
         fCreateIterators(0), fCopyIterator(0), fDeleteIterator(0), fDeleteTwoIterators(0) { Init(); }

      TConfigSTL(TVirtualStreamerInfo *info, UInt_t id, Int_t offset, UInt_t length, TClass *oldClass, TMemberStreamer* streamer, const char *type_name, Bool_t isbase) : 
         TConfiguration(info,id,offset,length), fOldClass(oldClass), fNewClass(oldClass), fStreamer(streamer), fTypeName(type_name), fIsSTLBase(isbase),
         fCreateIterators(0), fCopyIterator(0), fDeleteIterator(0), fDeleteTwoIterators(0) { Init(); }

      TConfigSTL(TVirtualStreamerInfo *info, UInt_t id, Int_t offset, UInt_t length, TClass *oldClass, TClass *newClass, TMemberStreamer* streamer, const char *type_name, Bool_t isbase) : 
         TConfiguration(info,id,offset,length), fOldClass(oldClass), fNewClass(newClass), fStreamer(streamer), fTypeName(type_name), fIsSTLBase(isbase),
         fCreateIterators(0), fCopyIterator(0), fDeleteIterator(0), fDeleteTwoIterators(0) { Init(); }

      virtual TConfiguration *Copy() { return new TConfigSTL(*this); }
   };

   class TConfSTLWithFactor : public TConfigSTL {
      // Configuration object for the Float16/Double32 where a factor has been specified.
   public:
      Double_t fFactor;
      Double_t fXmin;
      TConfSTLWithFactor(TConfigSTL *orig, Double_t factor, Double_t xmin) : TConfigSTL(*orig),fFactor(factor),fXmin(xmin) {};
      virtual TConfiguration *Copy() { return new TConfSTLWithFactor(*this); }
   };

   class TConfSTLNoFactor : public TConfigSTL {
      // Configuration object for the Float16/Double32 where a factor has been specified.
   public:
      Int_t fNbits;
      TConfSTLNoFactor(TConfigSTL *orig, Int_t nbits) : TConfigSTL(*orig),fNbits(nbits) {};
      virtual TConfiguration *Copy() { return new TConfSTLNoFactor(*this); }
   };

   class TVectorLoopConfig : public TLoopConfiguration {
      // Base class of the Configurations used in member wise streaming.
   protected:
   public:
      Long_t fIncrement; // Either a value to increase the cursor by and 
   public:
      TVectorLoopConfig(Long_t increment, Bool_t /* read */) : fIncrement(increment) {};
      //virtual void PrintDebug(TBuffer &buffer, void *);
      virtual ~TVectorLoopConfig() {};
      void Print() const
      {
         printf("TVectorLoopConfig: increment=%ld\n",fIncrement);
      }

      void* GetFirstAddress(void *start, const void * /* end */) const
      {
         // Return the address of the first element of the collection.
         
         return start;
      }

      virtual TLoopConfiguration* Copy() { return new TVectorLoopConfig(*this); }
   };

   class TAssocLoopConfig : public TLoopConfiguration {
      // Base class of the Configurations used in member wise streaming.
   protected:
   public:
      TVirtualCollectionProxy *fProxy;
   public:
      TAssocLoopConfig(TVirtualCollectionProxy *proxy, Bool_t /* read */) : fProxy(proxy) {};
      //virtual void PrintDebug(TBuffer &buffer, void *);
      virtual ~TAssocLoopConfig() {};
      void Print() const
      {
         printf("TAssocLoopConfig: proxy=%s\n",fProxy->GetCollectionClass()->GetName());
      }
      virtual TLoopConfiguration* Copy() { return new TAssocLoopConfig(*this); }

      void* GetFirstAddress(void *start, const void * /* end */) const
      {
         // Return the address of the first element of the collection.
         
         R__ASSERT(0);
//         char iterator[TVirtualCollectionProxy::fgIteratorArenaSize];
//         void *iter = genloopconfig->fCopyIterator(&iterator,start_collection);
//         arr0 = genloopconfig->fNext(iter,end_collection);
//         if (iter != &iterator[0]) {
//            genloopconfig->fDeleteIterator(iter);
//         }
         return start;
      }
   };

   class TGenericLoopConfig : public TLoopConfiguration {
      // Configuration object for the generic case of member wise streaming looping.
   private:
      void Init(Bool_t read) {
         if (fProxy) {
            if (fProxy->HasPointers()) {
               fNext = TVirtualCollectionPtrIterators::Next;
               fCopyIterator = TVirtualCollectionPtrIterators::CopyIterator;
               fDeleteIterator = TVirtualCollectionPtrIterators::DeleteIterator;               
            } else {
               fNext = fProxy->GetFunctionNext(read);
               fCopyIterator = fProxy->GetFunctionCopyIterator(read);
               fDeleteIterator = fProxy->GetFunctionDeleteIterator(read);
            }
         }
      }
   public:
      TVirtualCollectionProxy                      *fProxy;
      TVirtualCollectionProxy::Next_t               fNext;
      TVirtualCollectionProxy::CopyIterator_t       fCopyIterator;
      TVirtualCollectionProxy::DeleteIterator_t     fDeleteIterator;
      
      TGenericLoopConfig(TVirtualCollectionProxy *proxy, Bool_t read) : fProxy(proxy), fNext(0), fCopyIterator(0), fDeleteIterator(0)
      { 
         Init(read);
      }
      virtual ~TGenericLoopConfig() {};
      void Print() const
      {
         printf("TGenericLoopConfig: proxy=%s\n",fProxy->GetCollectionClass()->GetName());
      }
      virtual TLoopConfiguration* Copy() { return new TGenericLoopConfig(*this); }

      void* GetFirstAddress(void *start_collection, const void *end_collection) const
      {
         // Return the address of the first element of the collection.
         
         char iterator[TVirtualCollectionProxy::fgIteratorArenaSize];
         void *iter = fCopyIterator(&iterator,start_collection);
         void *arr0 = fNext(iter,end_collection);
         if (iter != &iterator[0]) {
            fDeleteIterator(iter);
         }
         return arr0;
      }
   };

   INLINE_TEMPLATE_ARGS void ReadSTLMemberWiseSameClass(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t vers)
   {
      // Collection was saved member-wise

      TConfigSTL *config = (TConfigSTL*)conf;
      vers &= ~( TBufferFile::kStreamedMemberWise );

      if( vers >= 8 ) {

         TClass *oldClass = config->fOldClass;   

         TVirtualCollectionProxy *oldProxy = oldClass->GetCollectionProxy();
         if (!oldProxy) {
            // Missing information, broken file ... give up
            return;
         }
         TClass *valueClass = oldProxy->GetValueClass();
         Version_t vClVersion = buf.ReadVersionForMemberWise( valueClass );

         TVirtualCollectionProxy::TPushPop helper( oldProxy, (char*)addr );
         Int_t nobjects;
         buf.ReadInt(nobjects);
         void* alternative = oldProxy->Allocate(nobjects,true);
         if (nobjects) {
            TActionSequence *actions = oldProxy->GetReadMemberWiseActions( vClVersion );

            char startbuf[TVirtualCollectionProxy::fgIteratorArenaSize];
            char endbuf[TVirtualCollectionProxy::fgIteratorArenaSize];
            void *begin = &(startbuf[0]);
            void *end = &(endbuf[0]);
            config->fCreateIterators(alternative, &begin, &end, oldProxy);
            // We can not get here with a split vector of pointer, so we can indeed assume
            // that actions->fConfiguration != null.
            buf.ApplySequence(*actions, begin, end);
            if (begin != &(startbuf[0])) {
               // assert(end != endbuf);
               config->fDeleteTwoIterators(begin,end);
            }
         }
         oldProxy->Commit(alternative);

      } else {

         TClass *oldClass = config->fOldClass;

         TVirtualCollectionProxy *oldProxy = oldClass->GetCollectionProxy();
         if (!oldProxy) {
            // Missing information, broken file ... give up
            return;
         }

         TVirtualCollectionProxy::TPushPop helper( oldProxy, (char*)addr );
         Int_t nobjects;
         buf.ReadInt(nobjects);
         void* env = oldProxy->Allocate(nobjects,true);

         if (nobjects || vers < 7 ) {
            // coverity[dereference] since this is a member streaming action by definition the collection contains objects. 
            TStreamerInfo *subinfo = (TStreamerInfo*)oldProxy->GetValueClass()->GetStreamerInfo( 0 );

            if (subinfo->IsOptimized()) {
               subinfo->SetBit(TVirtualStreamerInfo::kCannotOptimize);
               subinfo->Compile();
            }
            subinfo->ReadBuffer(buf, *oldProxy, -1, nobjects, 0, 1);
         }
         oldProxy->Commit(env);
      }
   }

   INLINE_TEMPLATE_ARGS void ReadArraySTLMemberWiseSameClass(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t vers)
   {
      // Collection was saved member-wise

      TConfigSTL *config = (TConfigSTL*)conf;
      vers &= ~( TBufferFile::kStreamedMemberWise );

      if( vers >= 8 ) {

         TClass *oldClass = config->fOldClass;   

         TVirtualCollectionProxy *oldProxy = oldClass->GetCollectionProxy();
         if (!oldProxy) {
            // Missing information, broken file ... give up
            return;
         }
         TClass *valueClass = oldProxy->GetValueClass();
         Version_t vClVersion = buf.ReadVersionForMemberWise( valueClass );

         TActionSequence *actions = oldProxy->GetReadMemberWiseActions( vClVersion );

         int objectSize = oldClass->Size();
         char *obj = (char*)addr;
         char *endobj = obj + conf->fLength*objectSize;

         for(; obj<endobj; obj+=objectSize) {            
            Int_t nobjects;
            buf.ReadInt(nobjects);
            TVirtualCollectionProxy::TPushPop helper( oldProxy, (char*)obj );
            void* alternative = oldProxy->Allocate(nobjects,true);
            if (nobjects) {
               char startbuf[TVirtualCollectionProxy::fgIteratorArenaSize];
               char endbuf[TVirtualCollectionProxy::fgIteratorArenaSize];
               void *begin = &(startbuf[0]);
               void *end = &(endbuf[0]);
               config->fCreateIterators(alternative, &begin, &end, oldProxy);
               // We can not get here with a split vector of pointer, so we can indeed assume
               // that actions->fConfiguration != null.
               buf.ApplySequence(*actions, begin, end);
               if (begin != &(startbuf[0])) {
                  // assert(end != endbuf);
                  config->fDeleteTwoIterators(begin,end);
               }
            }
            oldProxy->Commit(alternative);
         }

      } else {

         TClass *oldClass = config->fOldClass;
         
         TVirtualCollectionProxy *oldProxy = oldClass->GetCollectionProxy();
         if (!oldProxy) {
            // Missing information, broken file ... give up
            return;
         }

         int objectSize = oldClass->Size();
         char *obj = (char*)addr;
         char *endobj = obj + conf->fLength*objectSize;

         for(; obj<endobj; obj+=objectSize) {            
            TVirtualCollectionProxy::TPushPop helper( oldProxy, (char*)obj );
            Int_t nobjects;
            buf.ReadInt(nobjects);
            void* env = oldProxy->Allocate(nobjects,true);

            if (nobjects || vers < 7 ) {
               // coverity[dereference] since this is a member streaming action by definition the collection contains objects. 
               TStreamerInfo *subinfo = (TStreamerInfo*)oldProxy->GetValueClass()->GetStreamerInfo( 0 );

               if (subinfo->IsOptimized()) {
                  subinfo->SetBit(TVirtualStreamerInfo::kCannotOptimize);
                  subinfo->Compile();
               }
               subinfo->ReadBuffer(buf, *oldProxy, -1, nobjects, 0, 1);
            }
            oldProxy->Commit(env);
         }
      }
   }

   INLINE_TEMPLATE_ARGS void ReadSTLMemberWiseChangedClass(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t vers)
   {
      // Collection was saved member-wise

      TConfigSTL *config = (TConfigSTL*)conf;

      vers &= ~( TBufferFile::kStreamedMemberWise );

      TClass *newClass = config->fNewClass;
      TClass *oldClass = config->fOldClass;

      if( vers < 8 ) {
         Error( "ReadSTLMemberWiseChangedClass", "Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
               vers, buf.GetParent() ? buf.GetParent()->GetName() : "memory/socket", oldClass->GetName(), newClass->GetName() );
      } else {

         Version_t vClVersion = buf.ReadVersionForMemberWise( oldClass->GetCollectionProxy()->GetValueClass() );

         TVirtualCollectionProxy *newProxy = newClass->GetCollectionProxy();
         TVirtualCollectionProxy *oldProxy = oldClass->GetCollectionProxy();

         TVirtualCollectionProxy::TPushPop helper( newProxy, (char*)addr );
         Int_t nobjects;
         buf.ReadInt(nobjects);
         void* alternative = newProxy->Allocate(nobjects,true);
         if (nobjects) {
            TActionSequence *actions = newProxy->GetConversionReadMemberWiseActions( oldProxy->GetValueClass(), vClVersion );
            char startbuf[TVirtualCollectionProxy::fgIteratorArenaSize];
            char endbuf[TVirtualCollectionProxy::fgIteratorArenaSize];
            void *begin = &(startbuf[0]);
            void *end = &(endbuf[0]);
            config->fCreateIterators( alternative, &begin, &end, newProxy);
            // We can not get here with a split vector of pointer, so we can indeed assume
            // that actions->fConfiguration != null.
            buf.ApplySequence(*actions, begin, end);
            if (begin != &(startbuf[0])) {
               // assert(end != endbuf);
               config->fDeleteTwoIterators(begin,end);
            }
         }
         newProxy->Commit(alternative);
      }
   }

   INLINE_TEMPLATE_ARGS void ReadArraySTLMemberWiseChangedClass(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t vers)
   {
      // Collection was saved member-wise

      TConfigSTL *config = (TConfigSTL*)conf;

      vers &= ~( TBufferFile::kStreamedMemberWise );

      TClass *newClass = config->fNewClass;
      TClass *oldClass = config->fOldClass;

      if( vers < 8 ) {
         Error( "ReadSTLMemberWiseChangedClass", "Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
               vers, buf.GetParent() ? buf.GetParent()->GetName() : "memory/socket", oldClass->GetName(), newClass->GetName() );
      } else {

         Version_t vClVersion = buf.ReadVersionForMemberWise( oldClass->GetCollectionProxy()->GetValueClass() );

         TVirtualCollectionProxy *newProxy = newClass->GetCollectionProxy();
         TVirtualCollectionProxy *oldProxy = oldClass->GetCollectionProxy();

         int objectSize = newClass->Size();
         char *obj = (char*)addr;
         char *endobj = obj + conf->fLength*objectSize;

         for(; obj<endobj; obj+=objectSize) {            
            TVirtualCollectionProxy::TPushPop helper( newProxy, (char*)obj );
            Int_t nobjects;
            buf.ReadInt(nobjects);
            void* alternative = newProxy->Allocate(nobjects,true);
            if (nobjects) {
               TActionSequence *actions = newProxy->GetConversionReadMemberWiseActions( oldProxy->GetValueClass(), vClVersion );
               char startbuf[TVirtualCollectionProxy::fgIteratorArenaSize];
               char endbuf[TVirtualCollectionProxy::fgIteratorArenaSize];
               void *begin = &(startbuf[0]);
               void *end = &(endbuf[0]);
               config->fCreateIterators( alternative, &begin, &end, newProxy);
               // We can not get here with a split vector of pointer, so we can indeed assume
               // that actions->fConfiguration != null.
               buf.ApplySequence(*actions, begin, end);
               if (begin != &(startbuf[0])) {
                  // assert(end != endbuf);
                  config->fDeleteTwoIterators(begin,end);
               }
            }
            newProxy->Commit(alternative);
         }
      }
   }


   INLINE_TEMPLATE_ARGS void ReadSTLObjectWiseFastArray(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t /* vers */, UInt_t /* start */)
   {
      TConfigSTL *config = (TConfigSTL*)conf;
      // Idea: This needs to be unrolled, it currently calls the TGenCollectionStreamer ....
      buf.ReadFastArray(addr,config->fNewClass,conf->fLength,(TMemberStreamer*)0,config->fOldClass);
   }
   INLINE_TEMPLATE_ARGS void ReadSTLObjectWiseStreamer(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t /* vers */, UInt_t /* start */)
   {
      TConfigSTL *config = (TConfigSTL*)conf;
      (*config->fStreamer)(buf,addr,conf->fLength);
   }
   INLINE_TEMPLATE_ARGS void ReadSTLObjectWiseFastArrayV2(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t vers, UInt_t start)
   {
      // case of old TStreamerInfo

      TConfigSTL *config = (TConfigSTL*)conf;
      //  Backward compatibility. Some TStreamerElement's where without
      //  Streamer but were not removed from element list
      if (config->fIsSTLBase || vers == 0) {
         buf.SetBufferOffset(start);  //there is no byte count
      }
      // Idea: This needs to be unrolled, it currently calls the TGenCollectionStreamer ....
      buf.ReadFastArray(addr,config->fNewClass,conf->fLength,(TMemberStreamer*)0,config->fOldClass);
   }
   INLINE_TEMPLATE_ARGS void ReadSTLObjectWiseStreamerV2(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t vers, UInt_t start)
   {
      // case of old TStreamerInfo

      TConfigSTL *config = (TConfigSTL*)conf;
      //  Backward compatibility. Some TStreamerElement's where without
      //  Streamer but were not removed from element list
      if (config->fIsSTLBase || vers == 0) {
         buf.SetBufferOffset(start);  //there is no byte count
      }
      (*config->fStreamer)(buf,addr,conf->fLength);
   }

   template <void (*memberwise)(TBuffer&,void *,const TConfiguration*, Version_t), 
             void (*objectwise)(TBuffer&,void *,const TConfiguration*, Version_t, UInt_t)>
   INLINE_TEMPLATE_ARGS Int_t ReadSTL(TBuffer &buf, void *addr, const TConfiguration *conf)
   {
      TConfigSTL *config = (TConfigSTL*)conf;
      UInt_t start, count;
      Version_t vers = buf.ReadVersion(&start, &count, config->fOldClass);
      if ( vers & TBufferFile::kStreamedMemberWise ) {
         memberwise(buf,((char*)addr)+config->fOffset,config, vers);
      } else {
         objectwise(buf,((char*)addr)+config->fOffset,config, vers, start);
      }
      buf.CheckByteCount(start,count,config->fTypeName);
      return 0;
   }

   template <typename From, typename To>
   struct ConvertBasicType {
      static INLINE_TEMPLATE_ARGS Int_t Action(TBuffer &buf, void *addr, const TConfiguration *config)
      {
         // Simple conversion from a 'From' on disk to a 'To' in memory.
         From temp;
         buf >> temp;
         *(To*)( ((char*)addr) + config->fOffset ) = (To)temp;
         return 0;
      }
   };

   template <typename To>
   struct ConvertBasicType<BitsMarker,To> {
      static INLINE_TEMPLATE_ARGS Int_t Action(TBuffer &buf, void *addr, const TConfiguration *config)
      {
         // Simple conversion from a 'From' on disk to a 'To' in memory
         UInt_t temp;
         buf >> temp;

         if ((temp & kIsReferenced) != 0) {
            HandleReferencedTObject(buf,addr,config);
         }

         *(To*)( ((char*)addr) + config->fOffset ) = (To)temp;
         return 0;
      }
   };

   template <typename From, typename To>
   struct ConvertBasicType<WithFactorMarker<From>,To> {
      static INLINE_TEMPLATE_ARGS Int_t Action(TBuffer &buf, void *addr, const TConfiguration *config)
      {
         // Simple conversion from a 'From' on disk to a 'To' in memory.
         TConfWithFactor *conf = (TConfWithFactor *)config;
         From temp;
         buf.ReadWithFactor(&temp, conf->fFactor, conf->fXmin);
         *(To*)( ((char*)addr) + config->fOffset ) = (To)temp;
         return 0;
      }
   };

   template <typename From, typename To>
   struct ConvertBasicType<NoFactorMarker<From>,To> {
      static INLINE_TEMPLATE_ARGS Int_t Action(TBuffer &buf, void *addr, const TConfiguration *config)
      {
         // Simple conversion from a 'From' on disk to a 'To' in memory.
         TConfNoFactor *conf = (TConfNoFactor *)config;
         From temp;
         buf.ReadWithNbits(&temp, conf->fNbits);
         *(To*)( ((char*)addr) + config->fOffset ) = (To)temp;
         return 0;
      }
   };

   class TConfigurationUseCache : public TConfiguration {
      // Configuration object for the UseCache case.
   public:
      TConfiguredAction fAction;
      Bool_t            fNeedRepeat;
      
      TConfigurationUseCache(TVirtualStreamerInfo *info, TConfiguredAction &action, Bool_t repeat) : 
              TConfiguration(info,action.fConfiguration->fElemId,action.fConfiguration->fOffset),fAction(action),fNeedRepeat(repeat) {};
      virtual void PrintDebug(TBuffer &b, void *addr) const
      {
         if (gDebug > 1) {
            // Idea: We should print the name of the action function.
            TStreamerInfo *info = (TStreamerInfo*)fInfo;
            TStreamerElement *aElement = (TStreamerElement*)info->GetElems()[fElemId];
            fprintf(stdout,"StreamerInfoAction, class:%s, name=%s, fType[%d]=%d,"
                   " %s, bufpos=%d, arr=%p, eoffset=%d, Redirect=%p\n",
                   info->GetClass()->GetName(),aElement->GetName(),fElemId,info->GetTypes()[fElemId],
                   aElement->ClassName(),b.Length(),addr, 0,b.PeekDataCache() ? b.PeekDataCache()->GetObjectAt(0) : 0);
         }            

      }
      virtual ~TConfigurationUseCache() {};
      virtual TConfiguration *Copy() { 
         TConfigurationUseCache *copy = new TConfigurationUseCache(*this);
         fAction.fConfiguration = copy->fAction.fConfiguration->Copy(); // since the previous allocation did a 'move' of fAction we need to fix it.
         return copy;
      }
   };


   INLINE_TEMPLATE_ARGS Int_t UseCache(TBuffer &b, void *addr, const TConfiguration *conf) 
   {
      TConfigurationUseCache *config = (TConfigurationUseCache*)conf;
      
      Int_t bufpos = b.Length();
      TVirtualArray *cached = b.PeekDataCache();
      if (cached==0) {
         TStreamerElement *aElement = (TStreamerElement*)conf->fInfo->GetElems()[conf->fElemId];
         TStreamerInfo *info = (TStreamerInfo*)conf->fInfo;
         Warning("ReadBuffer","Skipping %s::%s because the cache is missing.",info->GetName(),aElement->GetName());
         char *ptr = (char*)addr;
         info->ReadBufferSkip(b,&ptr,config->fElemId,info->GetTypes()[config->fElemId]+TStreamerInfo::kSkip,aElement,1,0);
      } else {
         config->fAction(b, (*cached)[0]);
      }
      // Idea: Factor out this 'if' to a UseCacheRepeat function
      if (config->fNeedRepeat) {
         b.SetBufferOffset(bufpos); 
      }
      return 0;
   }

   INLINE_TEMPLATE_ARGS Int_t UseCacheVectorPtrLoop(TBuffer &b, void *start, const void *end, const TConfiguration *conf) 
   {
      TConfigurationUseCache *config = (TConfigurationUseCache*)conf;
      Int_t bufpos = b.Length();

      TVirtualArray *cached = b.PeekDataCache();
      if (cached==0) {
         TStreamerElement *aElement = (TStreamerElement*)config->fInfo->GetElems()[config->fElemId];
         TStreamerInfo *info = (TStreamerInfo*)config->fInfo;
         Warning("ReadBuffer","Skipping %s::%s because the cache is missing.",info->GetName(),aElement->GetName());
         char *ptr = (char*)start;
         UInt_t n = (((void**)end)-((void**)start));
         info->ReadBufferSkip(b,&ptr,config->fElemId,info->GetTypes()[config->fElemId]+TStreamerInfo::kSkip,aElement,n,0);
      } else {
         TVectorLoopConfig cached_config( cached->fClass->Size(), /* read */ kTRUE );
         void *cached_start = (*cached)[0];
         void *cached_end = ((char*)cached_start) + cached->fSize * cached_config.fIncrement;
         config->fAction(b,cached_start,cached_end,&cached_config);         
      }
      // Idea: Factor out this 'if' to a UseCacheRepeat function
      if (config->fNeedRepeat) {
         b.SetBufferOffset(bufpos); 
      }
      return 0;
   }

   INLINE_TEMPLATE_ARGS Int_t UseCacheVectorLoop(TBuffer &b, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *conf) 
   {
      TConfigurationUseCache *config = (TConfigurationUseCache*)conf;

      Int_t bufpos = b.Length();
      TVirtualArray *cached = b.PeekDataCache();
      if (cached==0) {
         TStreamerElement *aElement = (TStreamerElement*)config->fInfo->GetElems()[config->fElemId];
         TStreamerInfo *info = (TStreamerInfo*)config->fInfo;         
         Warning("ReadBuffer","Skipping %s::%s because the cache is missing.",info->GetName(),aElement->GetName());
         char *ptr = (char*)start;
         UInt_t n = (((char*)end)-((char*)start))/((TVectorLoopConfig*)loopconf)->fIncrement;
         info->ReadBufferSkip(b,&ptr,config->fElemId,info->GetTypes()[config->fElemId]+TStreamerInfo::kSkip,aElement,n,0);
      } else {
         TVectorLoopConfig cached_config( cached->fClass->Size(), /* read */ kTRUE );
         void *cached_start = (*cached)[0];
         void *cached_end = ((char*)cached_start) + cached->fSize * cached_config.fIncrement;
         config->fAction(b,cached_start,cached_end,&cached_config);
      }
      // Idea: Factor out this 'if' to a UseCacheRepeat function
      if (config->fNeedRepeat) {
         b.SetBufferOffset(bufpos); 
      }
      return 0;
   }

   INLINE_TEMPLATE_ARGS Int_t UseCacheGenericCollection(TBuffer &b, void *, const void *, const TLoopConfiguration *loopconfig, const TConfiguration *conf) 
   {
      TConfigurationUseCache *config = (TConfigurationUseCache*)conf;

      Int_t bufpos = b.Length();
      TVirtualArray *cached = b.PeekDataCache();
      if (cached==0) {
         TStreamerElement *aElement = (TStreamerElement*)config->fInfo->GetElems()[config->fElemId];
         TStreamerInfo *info = (TStreamerInfo*)config->fInfo;
         
         TVirtualCollectionProxy *proxy = ((TGenericLoopConfig*)loopconfig)->fProxy;
         Warning("ReadBuffer","Skipping %s::%s because the cache is missing.",info->GetName(),aElement->GetName());
         UInt_t n = proxy->Size();
         info->ReadBufferSkip(b, *proxy,config->fElemId,info->GetTypes()[config->fElemId]+TStreamerInfo::kSkip,aElement,n,0);
      } else {
         TVectorLoopConfig cached_config( cached->fClass->Size(), /* read */ kTRUE );
         void *cached_start = (*cached)[0];
         void *cached_end = ((char*)cached_start) + cached->fSize * cached_config.fIncrement;
         config->fAction(b,cached_start,cached_end,&cached_config);
      }
      // Idea: Factor out this 'if' to a UseCacheRepeat function
      if (config->fNeedRepeat) {
         b.SetBufferOffset(bufpos); 
      }
      return 0;
   }

   // Support for collections.
   
   Int_t ReadLoopInvalid(TBuffer &, void *, const void *, const TConfiguration *config)
   {
      Fatal("ApplySequence","The sequence of actions to read %s:%d member-wise was not initialized.",config->fInfo->GetName(),config->fInfo->GetClassVersion());
      return 0;
   }

   Int_t WriteLoopInvalid(TBuffer &, void *, const void *, const TConfiguration *config)
   {
      Fatal("ApplySequence","The sequence of actions to write %s:%d member-wise was not initialized.",config->fInfo->GetName(),config->fInfo->GetClassVersion());
      return 0;
   }

   enum ESelectLooper { kVectorLooper, kVectorPtrLooper, kAssociativeLooper, kGenericLooper };

   ESelectLooper SelectLooper(TVirtualCollectionProxy &proxy)
   {
      if ( (proxy.GetCollectionType() == ROOT::kSTLvector) || (proxy.GetProperties() & TVirtualCollectionProxy::kIsEmulated) ) {
         return kVectorLooper;
      } else if (proxy.GetCollectionType() == ROOT::kSTLset || proxy.GetCollectionType() == ROOT::kSTLmultiset
                 || proxy.GetCollectionType() == ROOT::kSTLmap || proxy.GetCollectionType() == ROOT::kSTLmultimap 
                 || proxy.GetCollectionType() == ROOT::kSTLbitset) {
         return kAssociativeLooper;
      } else {
         return kGenericLooper;
      }
   }

   struct VectorLooper {

      template <typename T> 
      static INLINE_TEMPLATE_ARGS Int_t ReadBasicType(TBuffer &buf, void *iter, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
      {
         const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
         iter = (char*)iter + config->fOffset;
         end = (char*)end + config->fOffset;
         for(; iter != end; iter = (char*)iter + incr ) {
            T *x = (T*) ((char*) iter);
            buf >> *x;
         }
         return 0;
      }

      template <typename From, typename To>
      struct ConvertBasicType {
         static INLINE_TEMPLATE_ARGS Int_t Action(TBuffer &buf, void *iter, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
         {
            // Simple conversion from a 'From' on disk to a 'To' in memory.
            From temp;
            const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
            iter = (char*)iter + config->fOffset;
            end = (char*)end + config->fOffset;
            for(; iter != end; iter = (char*)iter + incr ) {
               buf >> temp;
               *(To*)( ((char*)iter) ) = (To)temp;
            }
            return 0;
         }
      };

      template <typename To>
      struct ConvertBasicType<BitsMarker,To> {
         static INLINE_TEMPLATE_ARGS Int_t Action(TBuffer &buf, void *iter, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
         {
            // Simple conversion from a 'From' on disk to a 'To' in memory.
            UInt_t temp;
            const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
            iter = (char*)iter + config->fOffset;
            end = (char*)end + config->fOffset;
            for(; iter != end; iter = (char*)iter + incr ) {
               buf >> temp;

               if ((temp & kIsReferenced) != 0) {
                  HandleReferencedTObject(buf, (char*)iter - config->fOffset, config);
               }

               *(To*)( ((char*)iter) ) = (To)temp;
            }
            return 0;
         }
      };

      template <typename From, typename To>
      struct ConvertBasicType<WithFactorMarker<From>,To> {
         static INLINE_TEMPLATE_ARGS Int_t Action(TBuffer &buf, void *iter, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
         {
            // Simple conversion from a 'From' on disk to a 'To' in memory.
            TConfWithFactor *conf = (TConfWithFactor *)config;
            From temp;
            const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
            iter = (char*)iter + config->fOffset;
            end = (char*)end + config->fOffset;
            for(; iter != end; iter = (char*)iter + incr ) {
               buf.ReadWithFactor(&temp, conf->fFactor, conf->fXmin);
               *(To*)( ((char*)iter) ) = (To)temp;
            }
            return 0;
         }
      };

      template <typename From, typename To>
      struct ConvertBasicType<NoFactorMarker<From>,To> {
         static INLINE_TEMPLATE_ARGS Int_t Action(TBuffer &buf, void *iter, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
         {
            // Simple conversion from a 'From' on disk to a 'To' in memory.
            TConfNoFactor *conf = (TConfNoFactor *)config;
            From temp;
            const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
            iter = (char*)iter + config->fOffset;
            end = (char*)end + config->fOffset;
            for(; iter != end; iter = (char*)iter + incr ) {
               buf.ReadWithNbits(&temp, conf->fNbits);
               *(To*)( ((char*)iter) ) = (To)temp;
            }
            return 0;
         }
      };

      template <typename T> 
      static INLINE_TEMPLATE_ARGS Int_t WriteBasicType(TBuffer &buf, void *iter, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
      {
         const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
         iter = (char*)iter + config->fOffset;
         end = (char*)end + config->fOffset;
         for(; iter != end; iter = (char*)iter + incr ) {
            T *x = (T*) ((char*) iter);
            buf << *x;
         }
         return 0;
      }

      template <Int_t (*iter_action)(TBuffer&,void *,const TConfiguration*)>
      static INLINE_TEMPLATE_ARGS Int_t ReadAction(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config) 
      {     
         const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
         //Idea: can we factor out the addition of fOffset
         //  iter = (char*)iter + config->fOffset;
         for(void *iter = start; iter != end; iter = (char*)iter + incr ) {
            iter_action(buf, iter, config);
         }
         return 0;
      }

      static INLINE_TEMPLATE_ARGS Int_t ReadBase(TBuffer &buf, void *start, const void *end, const TLoopConfiguration * loopconfig, const TConfiguration *config) 
      {
         // Well the implementation is non trivial since we do not have a proxy for the container of _only_ the base class.  For now
         // punt.
         
         UInt_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
         UInt_t n = (((char*)end)-((char*)start))/incr;
         char **arrptr = new char*[n];
         UInt_t i = 0;
         for(void *iter = start; iter != end; iter = (char*)iter + incr, ++i ) {
            arrptr[i] = (char*)iter;
         }
         ((TStreamerInfo*)config->fInfo)->ReadBuffer(buf, arrptr, config->fElemId, n, config->fOffset, 1|2 );
         delete [] arrptr;
         
         //      // Idea: need to cache this result!
         //      TStreamerInfo *info = (TStreamerInfo*)config->fInfo;
         //      TStreamerElement *aElement = (TStreamerElement*)info->GetElems()[config->fElemId];
         //
         //      *Int_t clversion = ((TStreamerBase*)aElement)->Get BaseVersion();
         //      *TClass *cle = aElement->GetNewBaseClass();
         //      *(TSequence *actions = CreateReadMemberWiseActions( cle->GetStreamerInfo(clversion), ???? );
         //
         //      TSequence *actions = CreateReadMemberWiseActions( ((TStreamerBase*)aElement)->GetBaseStreamerInfo(), ???? );
         //
         //      actions->ReadBuffer(b,start,end);
         //      delete actions;
         
         //      const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
         //      for(void *iter = start; iter != end; iter = (char*)iter + incr ) 
         //      {
         //         ((TStreamerInfo*)(((TStreamerBase*)aElement)->GetBaseStreamerInfo())->ReadBuffer(b,arr,-1,narr,ioffset,arrayMode);
         //
         //         ((TStreamerInfo*)config->fInfo)->ReadBuffer(buf, (char**)&iter, config->fElemId, 1, config->fOffset, 1|2 );
         //      }
         return 0;
      }

      static INLINE_TEMPLATE_ARGS Int_t GenericRead(TBuffer &buf, void *start, const void *end, const TLoopConfiguration * loopconfig, const TConfiguration *config) 
      {
         // Well the implementation is non trivial. For now punt.
         
         UInt_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
         UInt_t n = (((char*)end)-((char*)start))/incr;
         char **arrptr = new char*[n];
         UInt_t i = 0;
         for(void *iter = start; iter != end; iter = (char*)iter + incr, ++i ) {
            arrptr[i] = (char*)iter;
         }
         ((TStreamerInfo*)config->fInfo)->ReadBuffer(buf, arrptr, config->fElemId, n, config->fOffset, 1|2 );
         delete [] arrptr;
         return 0;
      }

      static INLINE_TEMPLATE_ARGS Int_t GenericWrite(TBuffer &buf, void *start, const void *end, const TLoopConfiguration * loopconfig, const TConfiguration *config) 
      {
         // Well the implementation is non trivial. For now punt.
         
         UInt_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
         UInt_t n = (((char*)end)-((char*)start))/incr;
         char **arrptr = new char*[n];
         UInt_t i = 0;
         for(void *iter = start; iter != end; iter = (char*)iter + incr, ++i ) {
            arrptr[i] = (char*)iter;
         }
         ((TStreamerInfo*)config->fInfo)->WriteBufferAux(buf, arrptr, config->fElemId, n, config->fOffset, 1|2 );
         delete [] arrptr;
         return 0;
      }

      template <typename T>
      static INLINE_TEMPLATE_ARGS Int_t ReadCollectionBasicType(TBuffer &buf, void *addr, const TConfiguration *conf)
      {
         // Collection of numbers.  Memberwise or not, it is all the same.
         
         TConfigSTL *config = (TConfigSTL*)conf;
         UInt_t start, count;
         /* Version_t vers = */ buf.ReadVersion(&start, &count, config->fOldClass);
         
         std::vector<T> *const vec = (std::vector<T>*)(((char*)addr)+config->fOffset);     
         Int_t nvalues;
         buf.ReadInt(nvalues);
         vec->resize(nvalues);
         
#ifdef R__VISUAL_CPLUSPLUS
         if (nvalues <= 0) {
            buf.CheckByteCount(start,count,config->fTypeName);
            return 0;
         }
#endif
         T *begin = &(*vec->begin());
         buf.ReadFastArray(begin, nvalues);

         buf.CheckByteCount(start,count,config->fTypeName);
         return 0;
      }

      static INLINE_TEMPLATE_ARGS Int_t ReadCollectionBool(TBuffer &buf, void *addr, const TConfiguration *conf)
      {
         // Collection of numbers.  Memberwise or not, it is all the same.
         
         TConfigSTL *config = (TConfigSTL*)conf;
         UInt_t start, count;
         /* Version_t vers = */ buf.ReadVersion(&start, &count, config->fOldClass);
         
         std::vector<bool> *const vec = (std::vector<bool>*)(((char*)addr)+config->fOffset);     
         Int_t nvalues;
         buf.ReadInt(nvalues);
         vec->resize(nvalues);
         
         bool *items = new bool[nvalues];
         buf.ReadFastArray(items, nvalues);
         for(Int_t i = 0 ; i < nvalues; ++i) {
            (*vec)[i] = items[i];
         }
         delete [] items;

         // We could avoid the call to ReadFastArray, and we could
         // the following, however this breaks TBufferXML ...
         // for(Int_t i = 0 ; i < nvalues; ++i) {
         //    bool tmp; buf >> tmp;
         //    (*vec)[i] = tmp;
         // }
         
         buf.CheckByteCount(start,count,config->fTypeName);
         return 0;
      }

      static INLINE_TEMPLATE_ARGS Int_t ReadCollectionFloat16(TBuffer &buf, void *addr, const TConfiguration *conf)
      {
         // Collection of numbers.  Memberwise or not, it is all the same.
         
         TConfigSTL *config = (TConfigSTL*)conf;
         UInt_t start, count;
         /* Version_t vers = */ buf.ReadVersion(&start, &count, config->fOldClass);
         
         std::vector<float> *const vec = (std::vector<float>*)(((char*)addr)+config->fOffset);     
         Int_t nvalues;
         buf.ReadInt(nvalues);
         vec->resize(nvalues);
         
#ifdef R__VISUAL_CPLUSPLUS
         if (nvalues <= 0) {
            buf.CheckByteCount(start,count,config->fTypeName);
            return 0;
         }
#endif
         float *begin = &(*vec->begin());
         buf.ReadFastArrayFloat16(begin, nvalues);
         
         buf.CheckByteCount(start,count,config->fTypeName);
         return 0;
      }

      static INLINE_TEMPLATE_ARGS Int_t ReadCollectionDouble32(TBuffer &buf, void *addr, const TConfiguration *conf)
      {
         // Collection of numbers.  Memberwise or not, it is all the same.
         
         TConfigSTL *config = (TConfigSTL*)conf;
         UInt_t start, count;
         /* Version_t vers = */ buf.ReadVersion(&start, &count, config->fOldClass);
         
         std::vector<double> *const vec = (std::vector<double>*)(((char*)addr)+config->fOffset);     
         Int_t nvalues;
         buf.ReadInt(nvalues);
         vec->resize(nvalues);
         
#ifdef R__VISUAL_CPLUSPLUS
         if (nvalues <= 0) {
            buf.CheckByteCount(start,count,config->fTypeName);
            return 0;
         }
#endif
         double *begin = &(*vec->begin());
         buf.ReadFastArrayDouble32(begin, nvalues);
         
         buf.CheckByteCount(start,count,config->fTypeName);
         return 0;
      }

      template <typename From, typename To>
      struct ConvertCollectionBasicType {
         static INLINE_TEMPLATE_ARGS Int_t Action(TBuffer &buf, void *addr, const TConfiguration *conf)
         {
            // Collection of numbers.  Memberwise or not, it is all the same.
            
            TConfigSTL *config = (TConfigSTL*)conf;
            UInt_t start, count;
            /* Version_t vers = */ buf.ReadVersion(&start, &count, config->fOldClass);
         
            std::vector<To> *const vec = (std::vector<To>*)(((char*)addr)+config->fOffset);     
            Int_t nvalues;
            buf.ReadInt(nvalues);
            vec->resize(nvalues);
         
            From *temp = new From[nvalues];
            buf.ReadFastArray(temp, nvalues);
            for(Int_t ind = 0; ind < nvalues; ++ind) {
               (*vec)[ind] = (To)temp[ind];
            }
            delete [] temp;
         
            buf.CheckByteCount(start,count,config->fTypeName);
            return 0;
         }
      };

      template <typename From, typename To>
      struct ConvertCollectionBasicType<NoFactorMarker<From>,To> {
         static INLINE_TEMPLATE_ARGS Int_t Action(TBuffer &buf, void *addr, const TConfiguration *conf)
         {
            // Collection of numbers.  Memberwise or not, it is all the same.
            
            TConfigSTL *config = (TConfigSTL*)conf;
            UInt_t start, count;
            /* Version_t vers = */ buf.ReadVersion(&start, &count, config->fOldClass);
            
            std::vector<To> *const vec = (std::vector<To>*)(((char*)addr)+config->fOffset);     
            Int_t nvalues;
            buf.ReadInt(nvalues);
            vec->resize(nvalues);
            
            From *temp = new From[nvalues];
            buf.ReadFastArrayWithNbits(temp, nvalues, 0);
            for(Int_t ind = 0; ind < nvalues; ++ind) {
               (*vec)[ind] = (To)temp[ind];
            }
            delete [] temp;
            
            buf.CheckByteCount(start,count,config->fTypeName);
            return 0;
         }
      };

      template <typename To>
      static INLINE_TEMPLATE_ARGS Int_t ConvertCollectionDouble32(TBuffer &buf, void *addr, const TConfiguration *conf)
      {
         // Collection of numbers.  Memberwise or not, it is all the same.
         
         TConfigSTL *config = (TConfigSTL*)conf;
         UInt_t start, count;
         /* Version_t vers = */ buf.ReadVersion(&start, &count, config->fOldClass);
         
         std::vector<To> *const vec = (std::vector<To>*)(((char*)addr)+config->fOffset);     
         Int_t nvalues;
         buf.ReadInt(nvalues);
         vec->resize(nvalues);
         
         Double32_t *temp = new Double32_t[nvalues];
         buf.ReadFastArrayDouble32(temp, nvalues);
         for(Int_t ind = 0; ind < nvalues; ++ind) {
            (*vec)[ind] = (To)temp[ind];
         }
         delete [] temp;
         
         buf.CheckByteCount(start,count,config->fTypeName);
         return 0;
      }

   };

   struct VectorPtrLooper {

      template <typename T> 
      static INLINE_TEMPLATE_ARGS Int_t ReadBasicType(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
      {
         const Int_t offset = config->fOffset;
         
         for(; iter != end; iter = (char*)iter + sizeof(void*) ) {
            T *x = (T*)( ((char*) (*(void**)iter) ) + offset );
            buf >> *x;
         }
         return 0;
      }
      
      template <typename From, typename To>
      struct ConvertBasicType {
         static INLINE_TEMPLATE_ARGS Int_t Action(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
         {
            // Simple conversion from a 'From' on disk to a 'To' in memory.
            From temp;
            const Int_t offset = config->fOffset;
            for(; iter != end; iter = (char*)iter + sizeof(void*) ) {
               buf >> temp;
               To *x = (To*)( ((char*) (*(void**)iter) ) + offset );
               *x = (To)temp;
            }
            return 0;
         }
      };

      template <typename To>
      struct ConvertBasicType<BitsMarker,To> {
         static INLINE_TEMPLATE_ARGS Int_t Action(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
         {
            // Simple conversion from a 'From' on disk to a 'To' in memory.
            UInt_t temp;
            const Int_t offset = config->fOffset;
            for(; iter != end; iter = (char*)iter + sizeof(void*) ) {
               buf >> temp;

               if ((temp & kIsReferenced) != 0) {
                  HandleReferencedTObject(buf,*(void**)iter,config);
               }   

               To *x = (To*)( ((char*) (*(void**)iter) ) + offset );
               *x = (To)temp;
            }
            return 0;
         }
      };

      template <typename From, typename To>
      struct ConvertBasicType<WithFactorMarker<From>,To> {
         static INLINE_TEMPLATE_ARGS Int_t Action(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
         {
            // Simple conversion from a 'From' on disk to a 'To' in memory.
            TConfWithFactor *conf = (TConfWithFactor *)config;
            From temp;
            const Int_t offset = config->fOffset;
            for(; iter != end; iter = (char*)iter + sizeof(void*) ) {
               buf.ReadWithFactor(&temp, conf->fFactor, conf->fXmin);
               To *x = (To*)( ((char*) (*(void**)iter) ) + offset );
               *x = (To)temp;
            }
            return 0;
         }
      };

      template <typename From, typename To>
      struct ConvertBasicType<NoFactorMarker<From>,To> {
         static INLINE_TEMPLATE_ARGS Int_t Action(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
         {
            // Simple conversion from a 'From' on disk to a 'To' in memory.
            TConfNoFactor *conf = (TConfNoFactor *)config;
            From temp;
            const Int_t offset = config->fOffset;
            for(; iter != end; iter = (char*)iter + sizeof(void*) ) {
               buf.ReadWithNbits(&temp, conf->fNbits);
               To *x = (To*)( ((char*) (*(void**)iter) ) + offset );
               *x = (To)temp;
            }
            return 0;
         }
      };

      template <typename T> 
      static INLINE_TEMPLATE_ARGS Int_t WriteBasicType(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
      {
         const Int_t offset = config->fOffset;
         
         for(; iter != end; iter = (char*)iter + sizeof(void*) ) {
            T *x = (T*)( ((char*) (*(void**)iter) ) + offset );
            buf << *x;
         }
         return 0;
      }

      template <Int_t (*action)(TBuffer&,void *,const TConfiguration*)>
      static INLINE_TEMPLATE_ARGS Int_t ReadAction(TBuffer &buf, void *start, const void *end, const TConfiguration *config) 
      {     
         for(void *iter = start; iter != end; iter = (char*)iter + sizeof(void*) ) {
            action(buf, *(void**)iter, config);
         }
         return 0;
      }

      static INLINE_TEMPLATE_ARGS Int_t ReadBase(TBuffer &buf, void *start, const void *end, const TConfiguration *config) 
      {
         // Well the implementation is non trivial since we do not have a proxy for the container of _only_ the base class.  For now
         // punt.
         
         return GenericRead(buf,start,end,config);
      }

      static INLINE_TEMPLATE_ARGS Int_t GenericRead(TBuffer &buf, void *iter, const void *end, const TConfiguration *config) 
      {
         Int_t n = ( ((void**)end) - ((void**)iter) );
         char **arr = (char**)iter;
         return ((TStreamerInfo*)config->fInfo)->ReadBuffer(buf, arr, config->fElemId, n, config->fOffset, 1|2 );
      }

      static INLINE_TEMPLATE_ARGS Int_t GenericWrite(TBuffer &buf, void *iter, const void *end, const TConfiguration *config) 
      {
         Int_t n = ( ((void**)end) - ((void**)iter) );
         char **arr = (char**)iter;
         return ((TStreamerInfo*)config->fInfo)->WriteBufferAux(buf, arr, config->fElemId, n, config->fOffset, 1|2 );
      }

   };

   struct AssociativeLooper {

      template <typename T>
      static INLINE_TEMPLATE_ARGS void SimpleRead(TBuffer &buf, void *addr, Int_t nvalues)
      {
         buf.ReadFastArray((T*)addr, nvalues);
      }

      static INLINE_TEMPLATE_ARGS void SimpleReadFloat16(TBuffer &buf, void *addr, Int_t nvalues)
      {
         buf.ReadFastArrayFloat16((float*)addr, nvalues);
      }
     
      static INLINE_TEMPLATE_ARGS void SimpleReadDouble32(TBuffer &buf, void *addr, Int_t nvalues)
      {
         buf.ReadFastArrayDouble32((double*)addr, nvalues);
      }
     
      template <typename T,void (*action)(TBuffer&,void *,Int_t)>
      static INLINE_TEMPLATE_ARGS Int_t ReadNumericalCollection(TBuffer &buf, void *addr, const TConfiguration *conf)
      {
         // Collection of numbers.  Memberwise or not, it is all the same.

         TConfigSTL *config = (TConfigSTL*)conf;
         UInt_t start, count;
         /* Version_t vers = */ buf.ReadVersion(&start, &count, config->fOldClass);

         TClass *newClass = config->fNewClass;
         TVirtualCollectionProxy *newProxy = newClass->GetCollectionProxy();
         TVirtualCollectionProxy::TPushPop helper( newProxy, ((char*)addr)+config->fOffset );

         Int_t nvalues;
         buf.ReadInt(nvalues);
         void* alternative = newProxy->Allocate(nvalues,true);
         if (nvalues) {         
            char startbuf[TVirtualCollectionProxy::fgIteratorArenaSize];
            char endbuf[TVirtualCollectionProxy::fgIteratorArenaSize];
            void *begin = &(startbuf[0]);
            void *end = &(endbuf[0]);
            config->fCreateIterators(alternative, &begin, &end, newProxy);
            // We can not get here with a split vector of pointer, so we can indeed assume
            // that actions->fConfiguration != null.

            action(buf,begin,nvalues);

            if (begin != &(startbuf[0])) {
               // assert(end != endbuf);
               config->fDeleteTwoIterators(begin,end);
            }
         }
         newProxy->Commit(alternative);

         buf.CheckByteCount(start,count,config->fTypeName);
         return 0;
      }

      static INLINE_TEMPLATE_ARGS Int_t ReadCollectionBool(TBuffer &buf, void *addr, const TConfiguration *conf)
      {
         return ReadNumericalCollection<bool,SimpleRead<bool> >(buf,addr,conf);
      }
      
      static INLINE_TEMPLATE_ARGS Int_t ReadCollectionFloat16(TBuffer &buf, void *addr, const TConfiguration *conf)
      {
         return ReadNumericalCollection<Float_t,SimpleReadFloat16 >(buf,addr,conf);
      }
      
      static INLINE_TEMPLATE_ARGS Int_t ReadCollectionDouble32(TBuffer &buf, void *addr, const TConfiguration *conf)
      {
         return ReadNumericalCollection<Double_t,SimpleReadDouble32 >(buf,addr,conf);
      }
      
      template <typename T>
      static INLINE_TEMPLATE_ARGS Int_t ReadCollectionBasicType(TBuffer &buf, void *addr, const TConfiguration *conf)
      {
         return ReadNumericalCollection<T,SimpleRead<T> >(buf,addr,conf);
      }

      template <typename From, typename To>
      struct ConvertRead {
         static INLINE_TEMPLATE_ARGS void Action(TBuffer &buf, void *addr, Int_t nvalues)
         {
            From *temp = new From[nvalues];
            buf.ReadFastArray(temp, nvalues);
            To *vec = (To*)addr;
            for(Int_t ind = 0; ind < nvalues; ++ind) {
               vec[ind] = (To)temp[ind];
            }
            delete [] temp;
         }
      };

      template <typename From, typename To>
      struct ConvertRead<NoFactorMarker<From>,To> {
         static INLINE_TEMPLATE_ARGS void Action(TBuffer &buf, void *addr, Int_t nvalues)
         {
            From *temp = new From[nvalues];
            buf.ReadFastArrayWithNbits(temp, nvalues,0);
            To *vec = (To*)addr;
            for(Int_t ind = 0; ind < nvalues; ++ind) {
               vec[ind] = (To)temp[ind];
            }
            delete [] temp;
         }
      };

      template <typename From, typename To>
      struct ConvertRead<WithFactorMarker<From>,To> {
         static INLINE_TEMPLATE_ARGS void Action(TBuffer &buf, void *addr, Int_t nvalues)
         {
            From *temp = new From[nvalues];
            double factor,min; // needs to be initialized.
            buf.ReadFastArrayWithFactor(temp, nvalues, factor, min);
            To *vec = (To*)addr;
            for(Int_t ind = 0; ind < nvalues; ++ind) {
               vec[ind] = (To)temp[ind];
            }
            delete [] temp;
         }
      };

      template <typename From, typename To>
      struct ConvertCollectionBasicType {
         static INLINE_TEMPLATE_ARGS Int_t Action(TBuffer &buf, void *addr, const TConfiguration *conf)
         {
            return ReadNumericalCollection<To,ConvertRead<From,To>::Action >(buf,addr,conf);
         }
      };
      
    };

   struct GenericLooper {

      template <typename T> 
      static INLINE_TEMPLATE_ARGS Int_t ReadBasicType(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
      {
         TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
         
         Next_t next = loopconfig->fNext;
         const Int_t offset = config->fOffset;
         
         char iterator[TVirtualCollectionProxy::fgIteratorArenaSize];
         void *iter = loopconfig->fCopyIterator(iterator,start);
         void *addr;
         while( (addr = next(iter,end)) ) {
            T *x =  (T*)( ((char*)addr) + offset );
            buf >> *x;
         }
         if (iter != &iterator[0]) {
            loopconfig->fDeleteIterator(iter);
         }
         return 0;
      }

      template <typename T> 
      static INLINE_TEMPLATE_ARGS Int_t WriteBasicType(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
      {
         TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
         
         Next_t next = loopconfig->fNext;
         const Int_t offset = config->fOffset;
         
         char iterator[TVirtualCollectionProxy::fgIteratorArenaSize];
         void *iter = loopconfig->fCopyIterator(iterator,start);
         void *addr;
         while( (addr = next(iter,end)) ) {
            T *x =  (T*)( ((char*)addr) + offset );
            buf << *x;
         }
         if (iter != &iterator[0]) {
            loopconfig->fDeleteIterator(iter);
         }
         return 0;
      }

      template <Int_t (*iter_action)(TBuffer&,void *,const TConfiguration*)>
      static INLINE_TEMPLATE_ARGS Int_t ReadAction(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config) 
      {
         TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
         
         // const Int_t offset = config->fOffset;
         Next_t next = loopconfig->fNext;
         
         char iterator[TVirtualCollectionProxy::fgIteratorArenaSize];
         void *iter = loopconfig->fCopyIterator(&iterator,start);
         void *addr;
         while( (addr = next(iter,end)) ) {
            iter_action(buf, addr, config);
         }
         if (iter != &iterator[0]) {
            loopconfig->fDeleteIterator(iter);
         }
         return 0;
      }
      
      template <typename From, typename To>
      struct Generic {
         static void ConvertAction(From *items, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config) 
         {
            TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
            
            const Int_t offset = config->fOffset;
            Next_t next = loopconfig->fNext;
            
            char iterator[TVirtualCollectionProxy::fgIteratorArenaSize];
            void *iter = loopconfig->fCopyIterator(&iterator,start);
            void *addr;
            while( (addr = next(iter,end)) ) {
               To *x =  (To*)( ((char*)addr) + offset );
               *x = (To)(*items);
               ++items;
            }
            if (iter != &iterator[0]) {
               loopconfig->fDeleteIterator(iter);
            }
         }
      };
 
      template <typename From, typename To>
      struct Numeric {
         static void ConvertAction(From *items, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration * /* config */) 
         {
            // The difference with ConvertAction is that we can modify the start
            // iterator and skip the copy.  We also never have an offset.
            
            TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;         
            Next_t next = loopconfig->fNext;
            
            void *iter = start;
            void *addr;
            while( (addr = next(iter,end)) ) {
               To *x =  (To*)(addr);
               *x = (To)(*items);
               ++items;
            }
         }
      };

      template <typename From, typename To, template <typename F, typename T> class Converter = Generic >
      struct ConvertBasicType {
         static INLINE_TEMPLATE_ARGS Int_t Action(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
         {
            // Simple conversion from a 'From' on disk to a 'To' in memory.

            TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
            TVirtualCollectionProxy *proxy = loopconfig->fProxy;
            Int_t nvalues = proxy->Size();

            From *items = new From[nvalues];
            buf.ReadFastArray(items, nvalues);
            Converter<From,To>::ConvertAction(items,start,end,loopconfig,config);
            delete [] items;
            return 0;
         }
      };

      template <typename To>
      struct ConvertBasicType<BitsMarker, To, Generic> {
         static INLINE_TEMPLATE_ARGS Int_t Action(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
         {
            // Simple conversion from a 'From' on disk to a 'To' in memory.

            TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
            TVirtualCollectionProxy *proxy = loopconfig->fProxy;
            Int_t nvalues = proxy->Size();

            UInt_t *items_storage = new UInt_t[nvalues];
            UInt_t *items = items_storage;
           
            const Int_t offset = config->fOffset;
            Next_t next = loopconfig->fNext;
            
            char iterator[TVirtualCollectionProxy::fgIteratorArenaSize];
            void *iter = loopconfig->fCopyIterator(&iterator,start);
            void *addr;
            while( (addr = next(iter,end)) ) {
               buf >> (*items);
               if (((*items) & kIsReferenced) != 0) {
                  HandleReferencedTObject(buf, addr, config);
               }
               To *x =  (To*)( ((char*)addr) + offset );
               *x = (To)(*items);
               ++items;
            }
            if (iter != &iterator[0]) {
               loopconfig->fDeleteIterator(iter);
            }
            
            delete [] items_storage;
            return 0;
         }
      };

      template <typename From, typename To, template <typename F, typename T> class Converter >
      struct ConvertBasicType<WithFactorMarker<From>,To,Converter > {
         static INLINE_TEMPLATE_ARGS Int_t Action(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
         {
            // Simple conversion from a 'From' on disk to a 'To' in memory.

            TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
            TVirtualCollectionProxy *proxy = loopconfig->fProxy;
            Int_t nvalues = proxy->Size();

            TConfSTLWithFactor *conf = (TConfSTLWithFactor *)config;

            From *items = new From[nvalues];
            buf.ReadFastArrayWithFactor(items, nvalues, conf->fFactor, conf->fXmin);
            Converter<From,To>::ConvertAction(items,start,end,loopconfig,config);
            delete [] items;
            return 0;
         }
      };

      template <typename From, typename To, template <typename F, typename T> class Converter >
      struct ConvertBasicType<NoFactorMarker<From>,To,Converter > {
         static INLINE_TEMPLATE_ARGS Int_t Action(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
         {
            // Simple conversion from a 'From' on disk to a 'To' in memory.

            TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
            TVirtualCollectionProxy *proxy = loopconfig->fProxy;
            Int_t nvalues = proxy->Size();

            TConfSTLNoFactor *conf = (TConfSTLNoFactor *)config;

            From *items = new From[nvalues];
            buf.ReadFastArrayWithNbits(items, nvalues, conf->fNbits);
            Converter<From,To>::ConvertAction(items,start,end,loopconfig,config);
            delete [] items;
            return 0;
         }
      };

      static INLINE_TEMPLATE_ARGS Int_t ReadBase(TBuffer &buf, void *start, const void *end, const TLoopConfiguration * loopconfig, const TConfiguration *config) 
      {
         // Well the implementation is non trivial since we do not have a proxy for the container of _only_ the base class.  For now
         // punt.
         
         return GenericRead(buf,start,end,loopconfig, config);
      }

      static INLINE_TEMPLATE_ARGS Int_t GenericRead(TBuffer &buf, void *, const void *, const TLoopConfiguration * loopconf, const TConfiguration *config) 
      {
         TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
         TVirtualCollectionProxy *proxy = loopconfig->fProxy;
         return ((TStreamerInfo*)config->fInfo)->ReadBuffer(buf, *proxy, config->fElemId, proxy->Size(), config->fOffset, 1|2 );
      }
      
      static INLINE_TEMPLATE_ARGS Int_t GenericWrite(TBuffer &buf, void *, const void *, const TLoopConfiguration * loopconf, const TConfiguration *config) 
      {
         TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
         TVirtualCollectionProxy *proxy = loopconfig->fProxy;
         return ((TStreamerInfo*)config->fInfo)->WriteBufferAux(buf, *proxy, config->fElemId, proxy->Size(), config->fOffset, 1|2 );
      }

      template <typename T>
      static INLINE_TEMPLATE_ARGS void SimpleRead(TBuffer &buf, void *addr)
      {
         buf >> *(T*)addr;
      }

      static INLINE_TEMPLATE_ARGS void SimpleReadFloat16(TBuffer &buf, void *addr)
      {
         buf.ReadWithNbits((float*)addr,12);
      }
     
      static INLINE_TEMPLATE_ARGS void SimpleReadDouble32(TBuffer &buf, void *addr)
      {
         //we read a float and convert it to double
         Float_t afloat;
         buf >> afloat;
         *(double*)addr = (Double_t)afloat;
      }
     
      template <typename ActionHolder>
      static INLINE_TEMPLATE_ARGS Int_t ReadNumericalCollection(TBuffer &buf, void *addr, const TConfiguration *conf)
      {
         // Collection of numbers.  Memberwise or not, it is all the same.

         TConfigSTL *config = (TConfigSTL*)conf;
         UInt_t start, count;
         /* Version_t vers = */ buf.ReadVersion(&start, &count, config->fOldClass);

         TClass *newClass = config->fNewClass;
         TVirtualCollectionProxy *newProxy = newClass->GetCollectionProxy();
         TVirtualCollectionProxy::TPushPop helper( newProxy, ((char*)addr)+config->fOffset );

         Int_t nvalues;
         buf.ReadInt(nvalues);
         void* alternative = newProxy->Allocate(nvalues,true);
         if (nvalues) {         
            char startbuf[TVirtualCollectionProxy::fgIteratorArenaSize];
            char endbuf[TVirtualCollectionProxy::fgIteratorArenaSize];
            void *begin = &(startbuf[0]);
            void *end = &(endbuf[0]);
            config->fCreateIterators(alternative, &begin, &end, newProxy);
            // We can not get here with a split vector of pointer, so we can indeed assume
            // that actions->fConfiguration != null.
            
            TGenericLoopConfig loopconf(newProxy, /* read */ kTRUE);
            ActionHolder::Action(buf,begin,end,&loopconf,config);
            
            if (begin != &(startbuf[0])) {
               // assert(end != endbuf);
               config->fDeleteTwoIterators(begin,end);
            }
         }
         newProxy->Commit(alternative);

         buf.CheckByteCount(start,count,config->fTypeName);
         return 0;
      }

      static INLINE_TEMPLATE_ARGS Int_t ReadCollectionBool(TBuffer &buf, void *addr, const TConfiguration *conf)
      {
         return ReadNumericalCollection<ConvertBasicType<bool,bool,Numeric > >(buf,addr,conf);
      }
      
      static INLINE_TEMPLATE_ARGS Int_t ReadCollectionFloat16(TBuffer &buf, void *addr, const TConfiguration *conf)
      {
         return ReadNumericalCollection<ConvertBasicType<NoFactorMarker<float>,float,Numeric > >(buf,addr,conf);
      }
      
      static INLINE_TEMPLATE_ARGS Int_t ReadCollectionDouble32(TBuffer &buf, void *addr, const TConfiguration *conf)
      {
         return ReadNumericalCollection<ConvertBasicType<float,double,Numeric > >(buf,addr,conf);
         // Could also use:
         // return ReadNumericalCollection<ConvertBasicType<NoFactorMarker<double>,double,Numeric > >(buf,addr,conf);
      }
      
      template <typename T>
      static INLINE_TEMPLATE_ARGS Int_t ReadCollectionBasicType(TBuffer &buf, void *addr, const TConfiguration *conf)
      {
         return ReadNumericalCollection<ConvertBasicType<T,T,Numeric > >(buf,addr,conf);
      }

      template <typename From, typename To>
      struct ConvertCollectionBasicType {
         static INLINE_TEMPLATE_ARGS Int_t Action(TBuffer &buf, void *addr, const TConfiguration *conf)
         {
            // return ReadNumericalCollection<To,ConvertRead<From,To>::Action >(buf,addr,conf);
            return ReadNumericalCollection<ConvertBasicType<From,To,Numeric > >(buf,addr,conf);
         }
      };
 
   };
}

template <typename Looper, typename From> 
static TConfiguredAction GetCollectionReadConvertAction(Int_t newtype, TConfiguration *conf)
{
   switch (newtype) {
      case TStreamerInfo::kBool:    return TConfiguredAction( Looper::template ConvertBasicType<From,bool>::Action, conf ); break;
      case TStreamerInfo::kChar:    return TConfiguredAction( Looper::template ConvertBasicType<From,char>::Action, conf ); break;
      case TStreamerInfo::kShort:   return TConfiguredAction( Looper::template ConvertBasicType<From,short>::Action, conf );  break;
      case TStreamerInfo::kInt:     return TConfiguredAction( Looper::template ConvertBasicType<From,Int_t>::Action, conf ); break;
      case TStreamerInfo::kLong:    return TConfiguredAction( Looper::template ConvertBasicType<From,Long_t>::Action, conf ); break;
      case TStreamerInfo::kLong64:  return TConfiguredAction( Looper::template ConvertBasicType<From,Long64_t>::Action, conf ); break;
      case TStreamerInfo::kFloat:   return TConfiguredAction( Looper::template ConvertBasicType<From,float>::Action, conf ); break;
      case TStreamerInfo::kFloat16: return TConfiguredAction( Looper::template ConvertBasicType<From,float>::Action, conf ); break;
      case TStreamerInfo::kDouble:  return TConfiguredAction( Looper::template ConvertBasicType<From,double>::Action, conf ); break;
      case TStreamerInfo::kDouble32:return TConfiguredAction( Looper::template ConvertBasicType<From,double>::Action, conf ); break;
      case TStreamerInfo::kUChar:   return TConfiguredAction( Looper::template ConvertBasicType<From,UChar_t>::Action, conf ); break;
      case TStreamerInfo::kUShort:  return TConfiguredAction( Looper::template ConvertBasicType<From,UShort_t>::Action, conf ); break;
      case TStreamerInfo::kUInt:    return TConfiguredAction( Looper::template ConvertBasicType<From,UInt_t>::Action, conf ); break;
      case TStreamerInfo::kULong:   return TConfiguredAction( Looper::template ConvertBasicType<From,ULong_t>::Action, conf ); break;
      case TStreamerInfo::kULong64: return TConfiguredAction( Looper::template ConvertBasicType<From,ULong64_t>::Action, conf );  break;
      case TStreamerInfo::kBits:    return TConfiguredAction( Looper::template ConvertBasicType<From,UInt_t>::Action, conf ); break;
      default:
         return TConfiguredAction( Looper::GenericRead, conf );
         break;
   }
   R__ASSERT(0); // We should never be here
   return TConfiguredAction();
}

template <class Looper>
static TConfiguredAction GetNumericCollectionReadAction(Int_t type, TConfigSTL *conf)
{
   // If we ever support std::vector<Double32_t> fValues; //[...] we would get the info from the StreamerElement for fValues.

   switch (type) {
      // Read basic types.
      case /* kBOOL_t = */ 21:
      case TStreamerInfo::kBool:    return TConfiguredAction( Looper::ReadCollectionBool, conf );    break;
      case TStreamerInfo::kChar:    return TConfiguredAction( Looper::template ReadCollectionBasicType<Char_t>, conf );    break;
      case TStreamerInfo::kShort:   return TConfiguredAction( Looper::template ReadCollectionBasicType<Short_t>,conf );   break;
      case TStreamerInfo::kInt:     return TConfiguredAction( Looper::template ReadCollectionBasicType<Int_t>,  conf );     break;
      case TStreamerInfo::kLong:    return TConfiguredAction( Looper::template ReadCollectionBasicType<Long_t>, conf );    break;
      case TStreamerInfo::kLong64:  return TConfiguredAction( Looper::template ReadCollectionBasicType<Long64_t>, conf );  break;
      case TStreamerInfo::kFloat:   return TConfiguredAction( Looper::template ReadCollectionBasicType<Float_t>,  conf );   break;
      case TStreamerInfo::kDouble:  return TConfiguredAction( Looper::template ReadCollectionBasicType<Double_t>, conf );  break;
      case TStreamerInfo::kUChar:   return TConfiguredAction( Looper::template ReadCollectionBasicType<UChar_t>,  conf );   break;
      case TStreamerInfo::kUShort:  return TConfiguredAction( Looper::template ReadCollectionBasicType<UShort_t>, conf );  break;
      case TStreamerInfo::kUInt:    return TConfiguredAction( Looper::template ReadCollectionBasicType<UInt_t>,   conf );    break;
      case TStreamerInfo::kULong:   return TConfiguredAction( Looper::template ReadCollectionBasicType<ULong_t>,  conf );   break;
      case TStreamerInfo::kULong64: return TConfiguredAction( Looper::template ReadCollectionBasicType<ULong64_t>, conf ); break;
      case TStreamerInfo::kBits:    Error("GetNumericCollectionReadAction","There is no support for kBits outside of a TObject."); break;
      case TStreamerInfo::kFloat16: {
         TConfigSTL *alternate = new TConfSTLNoFactor(conf,12);
         delete conf;
         return TConfiguredAction( Looper::ReadCollectionFloat16, alternate );
         // if (element->GetFactor() != 0) {
         //    return TConfiguredAction( Looper::template ReadAction<ReadBasicType_WithFactor<float> >, new TConfWithFactor(info,i,offset,element->GetFactor(),element->GetXmin()) );
         // } else {
         //    Int_t nbits = (Int_t)element->GetXmin();
         //    if (!nbits) nbits = 12;
         //    return TConfiguredAction( Looper::template ReadAction<ReadBasicType_NoFactor<float> >, new TConfNoFactor(info,i,offset,nbits) );
         // }
         break;
      }
      case TStreamerInfo::kDouble32: {
         TConfigSTL *alternate = new TConfSTLNoFactor(conf,0);
         delete conf;
         return TConfiguredAction( Looper::ReadCollectionDouble32, alternate );
         // if (element->GetFactor() != 0) {
         //    return TConfiguredAction( Looper::template ReadAction<ReadBasicType_WithFactor<double> >, new TConfWithFactor(info,i,offset,element->GetFactor(),element->GetXmin()) );
         // } else {
         //    Int_t nbits = (Int_t)element->GetXmin();
         //    if (!nbits) {
         //       return TConfiguredAction( Looper::template ReadAction<ConvertBasicType<float,double> >, new TConfiguration(info,i,offset) );
         //    } else {
         //       return TConfiguredAction( Looper::template ReadAction<ReadBasicType_NoFactor<double> >, new TConfNoFactor(info,i,offset,nbits) );
         //    }
         // }
         break;
      }
   }
   R__ASSERT(0); // We should never be here
   return TConfiguredAction();
}

template <typename Looper, typename From> 
static TConfiguredAction GetConvertCollectionReadActionFrom(Int_t newtype, TConfiguration *conf)
{
   switch (newtype) {
      case TStreamerInfo::kBool:    return TConfiguredAction( Looper::template ConvertCollectionBasicType<From,bool>::Action, conf ); break;
      case TStreamerInfo::kChar:    return TConfiguredAction( Looper::template ConvertCollectionBasicType<From,char>::Action, conf ); break;
      case TStreamerInfo::kShort:   return TConfiguredAction( Looper::template ConvertCollectionBasicType<From,short>::Action, conf );  break;
      case TStreamerInfo::kInt:     return TConfiguredAction( Looper::template ConvertCollectionBasicType<From,Int_t>::Action, conf ); break;
      case TStreamerInfo::kLong:    return TConfiguredAction( Looper::template ConvertCollectionBasicType<From,Long_t>::Action, conf ); break;
      case TStreamerInfo::kLong64:  return TConfiguredAction( Looper::template ConvertCollectionBasicType<From,Long64_t>::Action, conf ); break;
      case TStreamerInfo::kFloat:   return TConfiguredAction( Looper::template ConvertCollectionBasicType<From,float>::Action, conf ); break;
      case TStreamerInfo::kFloat16: return TConfiguredAction( Looper::template ConvertCollectionBasicType<From,float>::Action, conf ); break;
      case TStreamerInfo::kDouble:  return TConfiguredAction( Looper::template ConvertCollectionBasicType<From,double>::Action, conf ); break;
      case TStreamerInfo::kDouble32:return TConfiguredAction( Looper::template ConvertCollectionBasicType<From,double>::Action, conf ); break;
      case TStreamerInfo::kUChar:   return TConfiguredAction( Looper::template ConvertCollectionBasicType<From,UChar_t>::Action, conf ); break;
      case TStreamerInfo::kUShort:  return TConfiguredAction( Looper::template ConvertCollectionBasicType<From,UShort_t>::Action, conf ); break;
      case TStreamerInfo::kUInt:    return TConfiguredAction( Looper::template ConvertCollectionBasicType<From,UInt_t>::Action, conf ); break;
      case TStreamerInfo::kULong:   return TConfiguredAction( Looper::template ConvertCollectionBasicType<From,ULong_t>::Action, conf ); break;
      case TStreamerInfo::kULong64: return TConfiguredAction( Looper::template ConvertCollectionBasicType<From,ULong64_t>::Action, conf );  break;
      case TStreamerInfo::kBits:    return TConfiguredAction( Looper::template ConvertCollectionBasicType<From,UInt_t>::Action, conf );  break;
      default:
         break;
   }
   R__ASSERT(0); // We should never be here
   return TConfiguredAction();
}

template <typename Looper> 
static TConfiguredAction GetConvertCollectionReadAction(Int_t oldtype, Int_t newtype, TConfiguration *conf)
{
   switch (oldtype) {
      case TStreamerInfo::kBool:
         return GetConvertCollectionReadActionFrom<Looper,Bool_t>(newtype, conf );
         break;
      case TStreamerInfo::kChar:
         return GetConvertCollectionReadActionFrom<Looper,Char_t>(newtype, conf );
         break;
      case TStreamerInfo::kShort:
         return GetConvertCollectionReadActionFrom<Looper,Short_t>(newtype, conf );
         break;
      case TStreamerInfo::kInt:
         return GetConvertCollectionReadActionFrom<Looper,Int_t>(newtype, conf );
         break;
      case TStreamerInfo::kLong:
         return GetConvertCollectionReadActionFrom<Looper,Long_t>(newtype, conf );
         break;
      case TStreamerInfo::kLong64:
         return GetConvertCollectionReadActionFrom<Looper,Long64_t>(newtype, conf );
         break;
      case TStreamerInfo::kFloat:
         return GetConvertCollectionReadActionFrom<Looper,Float_t>( newtype, conf );
         break;
      case TStreamerInfo::kDouble:
         return GetConvertCollectionReadActionFrom<Looper,Double_t>(newtype, conf );
         break;
      case TStreamerInfo::kUChar:
         return GetConvertCollectionReadActionFrom<Looper,UChar_t>(newtype, conf );
         break;
      case TStreamerInfo::kUShort:
         return GetConvertCollectionReadActionFrom<Looper,UShort_t>(newtype, conf );
         break;
      case TStreamerInfo::kUInt:
         return GetConvertCollectionReadActionFrom<Looper,UInt_t>(newtype, conf );
         break;
      case TStreamerInfo::kULong:
         return GetConvertCollectionReadActionFrom<Looper,ULong_t>(newtype, conf );
         break;
      case TStreamerInfo::kULong64:
         return GetConvertCollectionReadActionFrom<Looper,ULong64_t>(newtype, conf );
         break;
      case TStreamerInfo::kFloat16:
         return GetConvertCollectionReadActionFrom<Looper,NoFactorMarker<Float16_t> >( newtype, conf );
         break;
      case TStreamerInfo::kDouble32:
         return GetConvertCollectionReadActionFrom<Looper,NoFactorMarker<Double32_t> >( newtype, conf );
         break;
      case TStreamerInfo::kBits:
         Error("GetConvertCollectionReadAction","There is no support for kBits outside of a TObject."); 
         break;
      default:
         break;
   }
   R__ASSERT(0); // We should never be here
   return TConfiguredAction();
}

template <class Looper>
static TConfiguredAction GetCollectionReadAction(TVirtualStreamerInfo *info, TStreamerElement *element, Int_t type, UInt_t i, Int_t offset)
{
   switch (type) {
      // Read basic types.
      case TStreamerInfo::kBool:    return TConfiguredAction( Looper::template ReadBasicType<Bool_t>, new TConfiguration(info,i,offset) );    break;
      case TStreamerInfo::kChar:    return TConfiguredAction( Looper::template ReadBasicType<Char_t>, new TConfiguration(info,i,offset) );    break;
      case TStreamerInfo::kShort:   return TConfiguredAction( Looper::template ReadBasicType<Short_t>,new TConfiguration(info,i,offset) );   break;
      case TStreamerInfo::kInt:     return TConfiguredAction( Looper::template ReadBasicType<Int_t>,  new TConfiguration(info,i,offset) );     break;
      case TStreamerInfo::kLong:    return TConfiguredAction( Looper::template ReadBasicType<Long_t>, new TConfiguration(info,i,offset) );    break;
      case TStreamerInfo::kLong64:  return TConfiguredAction( Looper::template ReadBasicType<Long64_t>, new TConfiguration(info,i,offset) );  break;
      case TStreamerInfo::kFloat:   return TConfiguredAction( Looper::template ReadBasicType<Float_t>,  new TConfiguration(info,i,offset) );   break;
      case TStreamerInfo::kDouble:  return TConfiguredAction( Looper::template ReadBasicType<Double_t>, new TConfiguration(info,i,offset) );  break;
      case TStreamerInfo::kUChar:   return TConfiguredAction( Looper::template ReadBasicType<UChar_t>,  new TConfiguration(info,i,offset) );   break;
      case TStreamerInfo::kUShort:  return TConfiguredAction( Looper::template ReadBasicType<UShort_t>, new TConfiguration(info,i,offset) );  break;
      case TStreamerInfo::kUInt:    return TConfiguredAction( Looper::template ReadBasicType<UInt_t>,   new TConfiguration(info,i,offset) );    break;
      case TStreamerInfo::kULong:   return TConfiguredAction( Looper::template ReadBasicType<ULong_t>,  new TConfiguration(info,i,offset) );   break;
      case TStreamerInfo::kULong64: return TConfiguredAction( Looper::template ReadBasicType<ULong64_t>, new TConfiguration(info,i,offset) ); break;
      case TStreamerInfo::kBits: return TConfiguredAction( Looper::template ReadAction<TStreamerInfoActions::ReadBasicType<BitsMarker> > , new TBitsConfiguration(info,i,offset) ); break;
      case TStreamerInfo::kFloat16: {
         if (element->GetFactor() != 0) {
            return TConfiguredAction( Looper::template ReadAction<ReadBasicType_WithFactor<float> >, new TConfWithFactor(info,i,offset,element->GetFactor(),element->GetXmin()) );
         } else {
            Int_t nbits = (Int_t)element->GetXmin();
            if (!nbits) nbits = 12;
            return TConfiguredAction( Looper::template ReadAction<ReadBasicType_NoFactor<float> >, new TConfNoFactor(info,i,offset,nbits) );
         }
         break;
      }
      case TStreamerInfo::kDouble32: {
         if (element->GetFactor() != 0) {
            return TConfiguredAction( Looper::template ReadAction<ReadBasicType_WithFactor<double> >, new TConfWithFactor(info,i,offset,element->GetFactor(),element->GetXmin()) );
         } else {
            Int_t nbits = (Int_t)element->GetXmin();
            if (!nbits) {
               return TConfiguredAction( Looper::template ReadAction<ConvertBasicType<float,double>::Action >, new TConfiguration(info,i,offset) );
            } else {
               return TConfiguredAction( Looper::template ReadAction<ReadBasicType_NoFactor<double> >, new TConfNoFactor(info,i,offset,nbits) );
            }
         }
         break;
      }
      case TStreamerInfo::kTNamed:  return TConfiguredAction( Looper::template ReadAction<ReadTNamed >, new TConfiguration(info,i,offset) );    break;
         // Idea: We should calculate the CanIgnoreTObjectStreamer here and avoid calling the
         // Streamer alltogether.
      case TStreamerInfo::kTObject: return TConfiguredAction( Looper::template ReadAction<ReadTObject >, new TConfiguration(info,i,offset) );    break;
      case TStreamerInfo::kTString: return TConfiguredAction( Looper::template ReadAction<ReadTString >, new TConfiguration(info,i,offset) );    break;
      case TStreamerInfo::kArtificial:
      case TStreamerInfo::kCacheNew:
      case TStreamerInfo::kCacheDelete:
      case TStreamerInfo::kSTL:  return TConfiguredAction( Looper::GenericRead, new TGenericConfiguration(info,i) ); break;
      case TStreamerInfo::kBase: return TConfiguredAction( Looper::ReadBase, new TGenericConfiguration(info,i) ); break;

      // Conversions.
      case TStreamerInfo::kConv + TStreamerInfo::kBool:
         return GetCollectionReadConvertAction<Looper,Bool_t>(element->GetNewType(), new TConfiguration(info,i,offset) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kChar:
         return GetCollectionReadConvertAction<Looper,Char_t>(element->GetNewType(), new TConfiguration(info,i,offset) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kShort:
         return GetCollectionReadConvertAction<Looper,Short_t>(element->GetNewType(), new TConfiguration(info,i,offset) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kInt:
         return GetCollectionReadConvertAction<Looper,Int_t>(element->GetNewType(), new TConfiguration(info,i,offset) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kLong:
         return GetCollectionReadConvertAction<Looper,Long_t>(element->GetNewType(), new TConfiguration(info,i,offset) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kLong64:
         return GetCollectionReadConvertAction<Looper,Long64_t>(element->GetNewType(), new TConfiguration(info,i,offset) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kFloat:
         return GetCollectionReadConvertAction<Looper,Float_t>( element->GetNewType(), new TConfiguration(info,i,offset) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kDouble:
         return GetCollectionReadConvertAction<Looper,Double_t>(element->GetNewType(), new TConfiguration(info,i,offset) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kUChar:
         return GetCollectionReadConvertAction<Looper,UChar_t>(element->GetNewType(), new TConfiguration(info,i,offset) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kUShort:
         return GetCollectionReadConvertAction<Looper,UShort_t>(element->GetNewType(), new TConfiguration(info,i,offset) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kUInt:
         return GetCollectionReadConvertAction<Looper,UInt_t>(element->GetNewType(), new TConfiguration(info,i,offset) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kULong:
         return GetCollectionReadConvertAction<Looper,ULong_t>(element->GetNewType(), new TConfiguration(info,i,offset) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kULong64:
         return GetCollectionReadConvertAction<Looper,ULong64_t>(element->GetNewType(), new TConfiguration(info,i,offset) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kBits:
         return GetCollectionReadConvertAction<Looper,BitsMarker>(element->GetNewType(), new TBitsConfiguration(info,i,offset) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kFloat16: {
         if (element->GetFactor() != 0) {
            return GetCollectionReadConvertAction<Looper,WithFactorMarker<float> >(element->GetNewType(), new TConfWithFactor(info,i,offset,element->GetFactor(),element->GetXmin()) );
         } else {
            Int_t nbits = (Int_t)element->GetXmin();
            if (!nbits) nbits = 12;
            return GetCollectionReadConvertAction<Looper,NoFactorMarker<float> >(element->GetNewType(), new TConfNoFactor(info,i,offset,nbits) );               
         }
         break;
      }
      case TStreamerInfo::kConv + TStreamerInfo::kDouble32: {
         if (element->GetFactor() != 0) {
            return GetCollectionReadConvertAction<Looper,WithFactorMarker<double> >(element->GetNewType(), new TConfWithFactor(info,i,offset,element->GetFactor(),element->GetXmin()) );
         } else {
            Int_t nbits = (Int_t)element->GetXmin();
            if (!nbits) {
               return GetCollectionReadConvertAction<Looper,Float_t>(element->GetNewType(), new TConfiguration(info,i,offset) );
            } else {
               return GetCollectionReadConvertAction<Looper,NoFactorMarker<double> >(element->GetNewType(), new TConfNoFactor(info,i,offset,nbits) );
            }
         }
         break;
      }
      default:
         return TConfiguredAction( Looper::GenericRead, new TGenericConfiguration(info,i) );
         break;
   }
   R__ASSERT(0); // We should never be here
   return TConfiguredAction();
}

template <class Looper>
static TConfiguredAction GetCollectionWriteAction(TVirtualStreamerInfo *info, TStreamerElement * /*element*/, Int_t type, UInt_t i, Int_t offset) {
   switch (type) {
      // read basic types
      case TStreamerInfo::kBool:    return TConfiguredAction( Looper::template WriteBasicType<Bool_t>,   new TConfiguration(info,i,offset) ); break;
      case TStreamerInfo::kChar:    return TConfiguredAction( Looper::template WriteBasicType<Char_t>,   new TConfiguration(info,i,offset) ); break;
      case TStreamerInfo::kShort:   return TConfiguredAction( Looper::template WriteBasicType<Short_t>,  new TConfiguration(info,i,offset) ); break;
      case TStreamerInfo::kInt:     return TConfiguredAction( Looper::template WriteBasicType<Int_t>,    new TConfiguration(info,i,offset) ); break;
      case TStreamerInfo::kLong:    return TConfiguredAction( Looper::template WriteBasicType<Long_t>,   new TConfiguration(info,i,offset) ); break;
      case TStreamerInfo::kLong64:  return TConfiguredAction( Looper::template WriteBasicType<Long64_t>, new TConfiguration(info,i,offset) ); break;
      case TStreamerInfo::kFloat:   return TConfiguredAction( Looper::template WriteBasicType<Float_t>,  new TConfiguration(info,i,offset) ); break;
      case TStreamerInfo::kDouble:  return TConfiguredAction( Looper::template WriteBasicType<Double_t>, new TConfiguration(info,i,offset) ); break;
      case TStreamerInfo::kUChar:   return TConfiguredAction( Looper::template WriteBasicType<UChar_t>,  new TConfiguration(info,i,offset) ); break;
      case TStreamerInfo::kUShort:  return TConfiguredAction( Looper::template WriteBasicType<UShort_t>, new TConfiguration(info,i,offset) ); break;
      case TStreamerInfo::kUInt:    return TConfiguredAction( Looper::template WriteBasicType<UInt_t>,   new TConfiguration(info,i,offset) ); break;
      case TStreamerInfo::kULong:   return TConfiguredAction( Looper::template WriteBasicType<ULong_t>,  new TConfiguration(info,i,offset) ); break;
      case TStreamerInfo::kULong64: return TConfiguredAction( Looper::template WriteBasicType<ULong64_t>,new TConfiguration(info,i,offset) ); break;
      // the simple type missing are kBits and kCounter.
      default:
         return TConfiguredAction( Looper::GenericWrite, new TConfiguration(info,i,0 /* 0 because we call the legacy code */) );  
   }
   R__ASSERT(0); // We should never be here
   return TConfiguredAction();
}


//______________________________________________________________________________
void TStreamerInfo::Compile()
{
   // loop on the TStreamerElement list
   // regroup members with same type
   // Store predigested information into local arrays. This saves a huge amount
   // of time compared to an explicit iteration on all elements.

   R__LOCKGUARD(gInterpreterMutex);

   // fprintf(stderr,"Running Compile for %s %d %d req=%d,%d\n",GetName(),fClassVersion,fOptimized,CanOptimize(),TestBit(kCannotOptimize));

   // if (IsCompiled() && (!fOptimized || (CanOptimize() && !TestBit(kCannotOptimize)))) return;

   fOptimized = kFALSE;
   fNdata = 0;

   TObjArray* infos = (TObjArray*) gROOT->GetListOfStreamerInfo();
   if (fNumber >= infos->GetSize()) {
      infos->AddAtAndExpand(this, fNumber);
   } else {
      if (!infos->At(fNumber)) {
         infos->AddAt(this, fNumber);
      }
   }

   delete[] fType;
   fType = 0;
   delete[] fNewType;
   fNewType = 0;
   delete[] fOffset;
   fOffset = 0;
   delete[] fLength;
   fLength = 0;
   delete[] fElem;
   fElem = 0;
   delete[] fMethod;
   fMethod = 0;
   delete[] fComp;
   fComp = 0;

   if (fReadObjectWise) {
      fReadObjectWise->fActions.clear();
   }
   if (fWriteObjectWise) {
      fWriteObjectWise->fActions.clear();
   }
   Int_t ndata = fElements->GetEntries();

   fOffset = new Int_t[ndata+1];
   fType   = new Int_t[ndata+1];

   SetBit(kIsCompiled);
   if (!fReadObjectWise) fReadObjectWise = new TStreamerInfoActions::TActionSequence(this,ndata);
   if (!fWriteObjectWise) fWriteObjectWise = new TStreamerInfoActions::TActionSequence(this,ndata);

   if (!ndata) {
      // This may be the case for empty classes (e.g., TAtt3D).
      // We still need to properly set the size of emulated classes (i.e. add the virtual table)
      if (fClass->TestBit(TClass::kIsEmulation) && fNVirtualInfoLoc!=0) {
         fSize = sizeof(TStreamerInfo*);
      }
      return;
   }


   fComp = new TCompInfo[ndata];
   fNewType = new Int_t[ndata];
   fLength = new Int_t[ndata];
   fElem = new ULong_t[ndata];
   fMethod = new ULong_t[ndata];

   TStreamerElement* element;
   TStreamerElement* previous = 0;
   Int_t keep = -1;
   Int_t i;

   if (!CanOptimize()) {
      SetBit(kCannotOptimize);
   }

   Bool_t isOptimized = kFALSE;

   for (i = 0; i < ndata; ++i) {
      element = (TStreamerElement*) fElements->At(i);
      if (!element) {
         break;
      }
      if (element->GetType() < 0) {
         // -- Skip an ignored TObject base class.
         // Note: The only allowed negative value here is -1,
         // and signifies that Build() has found a TObject
         // base class and TClass::IgnoreTObjectStreamer() was
         // called.  In this case the compiled version of the
         // elements omits the TObject base class element,
         // which has to be compensated for by TTree::Bronch()
         // when it is making branches for a split object.
         continue;
      }
      if (TestBit(kCannotOptimize) && element->IsBase()) 
      {
         // Make sure the StreamerInfo for the base class is also
         // not optimized.
         TClass *bclass = element->GetClassPointer();
         TStreamerInfo *binfo;
         if (element->IsA() == TStreamerBase::Class()) {
            binfo = ((TStreamerInfo*)((TStreamerBase*)element)->GetBaseStreamerInfo());
         } else {
            binfo = ((TStreamerInfo*)bclass->GetStreamerInfo(0));
         }
         if (binfo) {
            // binfo might be null in cases where:
            // a) the class on file inherit from an abstract class
            // b) the class in memory does no longer inherit from an abstract class
            // c) the abstract class is still loaded in memory
            binfo->SetBit(kCannotOptimize);
            if (binfo->IsOptimized())
            {
               // Optimizing does not work with splitting.
               binfo->Compile();
            }
         }
      }
      Int_t asize = element->GetSize();
      if (element->GetArrayLength()) {
         asize /= element->GetArrayLength();
      }
      fType[fNdata] = element->GetType();
      fNewType[fNdata] = element->GetNewType();
      fOffset[fNdata] = element->GetOffset();
      fLength[fNdata] = element->GetArrayLength();
      fElem[fNdata] = (ULong_t) element;
      fMethod[fNdata] = element->GetMethod();
      // try to group consecutive members of the same type
      if (!TestBit(kCannotOptimize) 
          && (keep >= 0) 
          && (element->GetType() < 10) 
          && (fType[fNdata] == fNewType[fNdata]) 
          && (fMethod[keep] == 0) 
          && (element->GetType() > 0) 
          && (element->GetArrayDim() == 0) 
          && (fType[keep] < kObject) 
          && (fType[keep] != kCharStar) /* do not optimize char* */ 
          && (element->GetType() == (fType[keep]%kRegrouped)) 
          && ((element->GetOffset()-fOffset[keep]) == (fLength[keep])*asize)
          && ((fOldVersion<6) || !previous || /* In version of TStreamerInfo less than 6, the Double32_t were merged even if their annotation (aka factor) were different */
              ((element->GetFactor() == previous->GetFactor())
               && (element->GetXmin() == previous->GetXmin())
               && (element->GetXmax() == previous->GetXmax())
               )
              )
          && (element->TestBit(TStreamerElement::kCache) == previous->TestBit(TStreamerElement::kCache))
          ) 
      {
         if (fLength[keep] == 0) {
            fLength[keep]++;
         }
         fLength[keep]++;
         fType[keep] = element->GetType() + kRegrouped;
         isOptimized = kTRUE;
      } else {
         if (fNewType[fNdata] != fType[fNdata]) {
            if (fNewType[fNdata] > 0) {
               if ( (fNewType[fNdata] == kObjectp || fNewType[fNdata] == kAnyp
                     || fNewType[fNdata] == kObject || fNewType[fNdata] == kAny
                     || fNewType[fNdata] == kTObject || fNewType[fNdata] == kTNamed || fNewType[fNdata] == kTString)
                   && (fType[fNdata] == kObjectp || fType[fNdata] == kAnyp
                       || fType[fNdata] == kObject || fType[fNdata] == kAny
                       || fType[fNdata] == kTObject || fType[fNdata] == kTNamed || fType[fNdata] == kTString )
                   ) {
                  fType[fNdata] = fNewType[fNdata];
               } else if (fType[fNdata] != kCounter) {
                  fType[fNdata] += kConv;
               }
            } else {
               if (fType[fNdata] == kCounter) {
                  Warning("Compile", "Counter %s should not be skipped from class %s", element->GetName(), GetName());
               }
               fType[fNdata] += kSkip;
            }
         }
         keep = fNdata;
         if (fLength[keep] == 0) {
            fLength[keep] = 1;
         }
         fNdata++;
      }
      // The test 'fMethod[keep] == 0' fails to detect a variable size array
      // if the counter happens to have an offset of zero, so let's explicitly
      // prevent for here.
      if (element->HasCounter()) keep = -1;
      previous = element;
   }

   if (fReadMemberWise) {
      fReadMemberWise->fActions.clear();
   } else {
      fReadMemberWise = new TStreamerInfoActions::TActionSequence(this,ndata);
   }
   if (fWriteMemberWise) {
      fWriteMemberWise->fActions.clear();
   } else {
      fWriteMemberWise = new TStreamerInfoActions::TActionSequence(this,ndata);
   }
   if ( isOptimized ) {
      fReadMemberWise->AddAction( ReadLoopInvalid, new TConfiguration(this,0,0) );
      fWriteMemberWise->AddAction( WriteLoopInvalid, new TConfiguration(this,0,0) );
   }

   for (i = 0; i < fNdata; ++i) {
      element = (TStreamerElement*) fElem[i];
      if (!element) {
         continue;
      }
      fComp[i].fClass = element->GetClassPointer();
      fComp[i].fNewClass = element->GetNewClass();
      fComp[i].fClassName = TString(element->GetTypeName()).Strip(TString::kTrailing, '*');
      fComp[i].fStreamer = element->GetStreamer();
      AddReadAction(i,element);
      AddWriteAction(i,element);
   }
   ComputeSize();

   fOptimized = isOptimized;

   if (gDebug > 0) {
      ls();
   }
}

template <typename From> 
static void AddReadConvertAction(TStreamerInfoActions::TActionSequence *sequence, Int_t newtype, TConfiguration *conf)
{
   switch (newtype) {
      case TStreamerInfo::kBool:    sequence->AddAction( ConvertBasicType<From,bool>::Action,  conf ); break;
      case TStreamerInfo::kChar:    sequence->AddAction( ConvertBasicType<From,char>::Action,  conf ); break;
      case TStreamerInfo::kShort:   sequence->AddAction( ConvertBasicType<From,short>::Action, conf );  break;
      case TStreamerInfo::kInt:     sequence->AddAction( ConvertBasicType<From,Int_t>::Action, conf ); break;
      case TStreamerInfo::kLong:    sequence->AddAction( ConvertBasicType<From,Long_t>::Action,conf ); break;
      case TStreamerInfo::kLong64:  sequence->AddAction( ConvertBasicType<From,Long64_t>::Action, conf ); break;
      case TStreamerInfo::kFloat:   sequence->AddAction( ConvertBasicType<From,float>::Action,    conf ); break;
      case TStreamerInfo::kFloat16: sequence->AddAction( ConvertBasicType<From,float>::Action,    conf ); break;
      case TStreamerInfo::kDouble:  sequence->AddAction( ConvertBasicType<From,double>::Action,   conf ); break;
      case TStreamerInfo::kDouble32:sequence->AddAction( ConvertBasicType<From,double>::Action,   conf ); break;
      case TStreamerInfo::kUChar:   sequence->AddAction( ConvertBasicType<From,UChar_t>::Action,  conf ); break;
      case TStreamerInfo::kUShort:  sequence->AddAction( ConvertBasicType<From,UShort_t>::Action, conf ); break;
      case TStreamerInfo::kUInt:    sequence->AddAction( ConvertBasicType<From,UInt_t>::Action,   conf ); break;
      case TStreamerInfo::kULong:   sequence->AddAction( ConvertBasicType<From,ULong_t>::Action,  conf ); break;
      case TStreamerInfo::kULong64: sequence->AddAction( ConvertBasicType<From,ULong64_t>::Action,conf );  break;
      case TStreamerInfo::kBits:    sequence->AddAction( ConvertBasicType<From,UInt_t>::Action,   conf ); break;
   }
}

//______________________________________________________________________________
void TStreamerInfo::AddReadAction(Int_t i, TStreamerElement* element)
{
   // Add a read action for the given element.

   if (element->TestBit(TStreamerElement::kWrite)) return;

   switch (fType[i]) {
      // read basic types
      case TStreamerInfo::kBool:    fReadObjectWise->AddAction( ReadBasicType<Bool_t>, new TConfiguration(this,i,fOffset[i]) );    break;
      case TStreamerInfo::kChar:    fReadObjectWise->AddAction( ReadBasicType<Char_t>, new TConfiguration(this,i,fOffset[i]) );    break;
      case TStreamerInfo::kShort:   fReadObjectWise->AddAction( ReadBasicType<Short_t>, new TConfiguration(this,i,fOffset[i]) );   break;
      case TStreamerInfo::kInt:     fReadObjectWise->AddAction( ReadBasicType<Int_t>, new TConfiguration(this,i,fOffset[i]) );     break;
      case TStreamerInfo::kLong:    fReadObjectWise->AddAction( ReadBasicType<Long_t>, new TConfiguration(this,i,fOffset[i]) );    break;
      case TStreamerInfo::kLong64:  fReadObjectWise->AddAction( ReadBasicType<Long64_t>, new TConfiguration(this,i,fOffset[i]) );  break;
      case TStreamerInfo::kFloat:   fReadObjectWise->AddAction( ReadBasicType<Float_t>, new TConfiguration(this,i,fOffset[i]) );   break;
      case TStreamerInfo::kDouble:  fReadObjectWise->AddAction( ReadBasicType<Double_t>, new TConfiguration(this,i,fOffset[i]) );  break;
      case TStreamerInfo::kUChar:   fReadObjectWise->AddAction( ReadBasicType<UChar_t>, new TConfiguration(this,i,fOffset[i]) );   break;
      case TStreamerInfo::kUShort:  fReadObjectWise->AddAction( ReadBasicType<UShort_t>, new TConfiguration(this,i,fOffset[i]) );  break;
      case TStreamerInfo::kUInt:    fReadObjectWise->AddAction( ReadBasicType<UInt_t>, new TConfiguration(this,i,fOffset[i]) );    break;
      case TStreamerInfo::kULong:   fReadObjectWise->AddAction( ReadBasicType<ULong_t>, new TConfiguration(this,i,fOffset[i]) );   break;
      case TStreamerInfo::kULong64: fReadObjectWise->AddAction( ReadBasicType<ULong64_t>, new TConfiguration(this,i,fOffset[i]) ); break;
      case TStreamerInfo::kBits:    fReadObjectWise->AddAction( ReadBasicType<BitsMarker>, new TBitsConfiguration(this,i,fOffset[i]) );     break;
      case TStreamerInfo::kFloat16: {
         if (element->GetFactor() != 0) {
            fReadObjectWise->AddAction( ReadBasicType_WithFactor<float>, new TConfWithFactor(this,i,fOffset[i],element->GetFactor(),element->GetXmin()) );
         } else {
            Int_t nbits = (Int_t)element->GetXmin();
            if (!nbits) nbits = 12;
            fReadObjectWise->AddAction( ReadBasicType_NoFactor<float>, new TConfNoFactor(this,i,fOffset[i],nbits) );               
         }
         break;
      }
      case TStreamerInfo::kDouble32: {
         if (element->GetFactor() != 0) {
            fReadObjectWise->AddAction( ReadBasicType_WithFactor<double>, new TConfWithFactor(this,i,fOffset[i],element->GetFactor(),element->GetXmin()) );
         } else {
            Int_t nbits = (Int_t)element->GetXmin();
            if (!nbits) {
               fReadObjectWise->AddAction( ConvertBasicType<float,double>::Action, new TConfiguration(this,i,fOffset[i]) );
            } else {
               fReadObjectWise->AddAction( ReadBasicType_NoFactor<double>, new TConfNoFactor(this,i,fOffset[i],nbits) );
            }
         }
         break;
      }
      case TStreamerInfo::kTNamed:  fReadObjectWise->AddAction( ReadTNamed, new TConfiguration(this,i,fOffset[i]) );    break;
         // Idea: We should calculate the CanIgnoreTObjectStreamer here and avoid calling the
         // Streamer alltogether.
      case TStreamerInfo::kTObject: fReadObjectWise->AddAction( ReadTObject, new TConfiguration(this,i,fOffset[i]) );    break;
      case TStreamerInfo::kTString: fReadObjectWise->AddAction( ReadTString, new TConfiguration(this,i,fOffset[i]) );    break;
      case TStreamerInfo::kSTL: {
         TClass *newClass = element->GetNewClass();
         TClass *oldClass = element->GetClassPointer();
         Bool_t isSTLbase = element->IsBase() && element->IsA()!=TStreamerBase::Class();
         
         if (element->GetArrayLength() <= 1) {
            if (fOldVersion<3){   // case of old TStreamerInfo
               if (newClass && newClass != oldClass) {
                  if (element->GetStreamer()) {
                     fReadObjectWise->AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseStreamerV2>, new TConfigSTL(this,i,fOffset[i],1,oldClass,newClass,element->GetStreamer(),element->GetTypeName(),isSTLbase));
                  } else {
                     fReadObjectWise->AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseFastArrayV2>, new TConfigSTL(this,i,fOffset[i],1,oldClass,newClass,element->GetTypeName(),isSTLbase));                     
                  }
               } else {
                  if (element->GetStreamer()) {
                     fReadObjectWise->AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseStreamerV2>, new TConfigSTL(this,i,fOffset[i],1,oldClass,element->GetStreamer(),element->GetTypeName(),isSTLbase));
                  } else {
                     fReadObjectWise->AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseFastArrayV2>, new TConfigSTL(this,i,fOffset[i],1,oldClass,element->GetTypeName(),isSTLbase));
                  }                  
               }
            } else {
               if (newClass && newClass != oldClass) {
                  if (element->GetStreamer()) {
                     fReadObjectWise->AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseStreamer>, new TConfigSTL(this,i,fOffset[i],1,oldClass,newClass,element->GetStreamer(),element->GetTypeName(),isSTLbase));
                  } else {
                     if (oldClass->GetCollectionProxy() == 0 || oldClass->GetCollectionProxy()->GetValueClass() || oldClass->GetCollectionProxy()->HasPointers() ) {
                        fReadObjectWise->AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseFastArray>, new TConfigSTL(this,i,fOffset[i],1,oldClass,newClass,element->GetTypeName(),isSTLbase));
                     } else {
                        switch (SelectLooper(*newClass->GetCollectionProxy())) {
                        case kVectorLooper:
                           fReadObjectWise->AddAction(GetConvertCollectionReadAction<VectorLooper>(oldClass->GetCollectionProxy()->GetType(), newClass->GetCollectionProxy()->GetType(), new TConfigSTL(this,i,fOffset[i],1,oldClass,newClass,element->GetTypeName(),isSTLbase)));
                           break;
                        case kAssociativeLooper:
                           fReadObjectWise->AddAction(GetConvertCollectionReadAction<AssociativeLooper>(oldClass->GetCollectionProxy()->GetType(), newClass->GetCollectionProxy()->GetType(), new TConfigSTL(this,i,fOffset[i],1,oldClass,newClass,element->GetTypeName(),isSTLbase)));
                           break;
                        case kVectorPtrLooper:
                        case kGenericLooper:
                        default:
                           // For now TBufferXML would force use to allocate the data buffer each time and copy into the real thing.
                           fReadObjectWise->AddAction(GetConvertCollectionReadAction<GenericLooper>(oldClass->GetCollectionProxy()->GetType(), newClass->GetCollectionProxy()->GetType(), new TConfigSTL(this,i,fOffset[i],1,oldClass,newClass,element->GetTypeName(),isSTLbase)));
                           break;
                        }
                     }             
                  }
               } else {
                  if (element->GetStreamer()) {
                     fReadObjectWise->AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseStreamer>, new TConfigSTL(this,i,fOffset[i],1,oldClass,element->GetStreamer(),element->GetTypeName(),isSTLbase));
                  } else {
                     if (oldClass->GetCollectionProxy() == 0 || oldClass->GetCollectionProxy()->GetValueClass() || oldClass->GetCollectionProxy()->HasPointers() ) {
                        fReadObjectWise->AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseFastArray>, new TConfigSTL(this,i,fOffset[i],1,oldClass,element->GetTypeName(),isSTLbase));
                     } else {
                        switch (SelectLooper(*oldClass->GetCollectionProxy())) {
                        case kVectorLooper:
                           fReadObjectWise->AddAction(GetNumericCollectionReadAction<VectorLooper>(oldClass->GetCollectionProxy()->GetType(), new TConfigSTL(this,i,fOffset[i],1,oldClass,element->GetTypeName(),isSTLbase)));
                           break;
                        case kAssociativeLooper:
                           fReadObjectWise->AddAction(GetNumericCollectionReadAction<AssociativeLooper>(oldClass->GetCollectionProxy()->GetType(), new TConfigSTL(this,i,fOffset[i],1,oldClass,element->GetTypeName(),isSTLbase)));
                           break;
                        case kVectorPtrLooper:
                        case kGenericLooper:
                        default:
                           // For now TBufferXML would force use to allocate the data buffer each time and copy into the real thing.
                           fReadObjectWise->AddAction(GetNumericCollectionReadAction<GenericLooper>(oldClass->GetCollectionProxy()->GetType(), new TConfigSTL(this,i,fOffset[i],1,oldClass,element->GetTypeName(),isSTLbase)));
                           break;
                        }
                     }
                  }
               }
            }
         } else {
            if (fOldVersion<3){   // case of old TStreamerInfo
               if (newClass && newClass != oldClass) {
                  if (element->GetStreamer()) {
                     fReadObjectWise->AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseStreamerV2>, new TConfigSTL(this,i,fOffset[i],element->GetArrayLength(),oldClass,newClass,element->GetStreamer(),element->GetTypeName(),isSTLbase));
                  } else {
                     fReadObjectWise->AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseFastArrayV2>, new TConfigSTL(this,i,fOffset[i],element->GetArrayLength(),oldClass,newClass,element->GetTypeName(),isSTLbase));                     
                  }
               } else {
                  if (element->GetStreamer()) {
                     fReadObjectWise->AddAction(ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseStreamerV2>, new TConfigSTL(this,i,fOffset[i],element->GetArrayLength(),oldClass,element->GetStreamer(),element->GetTypeName(),isSTLbase));
                  } else {
                     fReadObjectWise->AddAction(ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseFastArrayV2>, new TConfigSTL(this,i,fOffset[i],element->GetArrayLength(),oldClass,element->GetTypeName(),isSTLbase));
                  }                  
               }
            } else {
               if (newClass && newClass != oldClass) {
                  if (element->GetStreamer()) {
                     fReadObjectWise->AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseStreamer>, new TConfigSTL(this,i,fOffset[i],element->GetArrayLength(),oldClass,newClass,element->GetStreamer(),element->GetTypeName(),isSTLbase));
                  } else {
                     fReadObjectWise->AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseFastArray>, new TConfigSTL(this,i,fOffset[i],element->GetArrayLength(),oldClass,newClass,element->GetTypeName(),isSTLbase));                     
                  }
               } else {
                  if (element->GetStreamer()) {
                     fReadObjectWise->AddAction(ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseStreamer>, new TConfigSTL(this,i,fOffset[i],element->GetArrayLength(),oldClass,element->GetStreamer(),element->GetTypeName(),isSTLbase));
                  } else {
                     fReadObjectWise->AddAction(ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseFastArray>, new TConfigSTL(this,i,fOffset[i],element->GetArrayLength(),oldClass,element->GetTypeName(),isSTLbase));
                  }
               }
            }
         }
         break;
      }

      case TStreamerInfo::kConv + TStreamerInfo::kBool:
         AddReadConvertAction<Bool_t>(fReadObjectWise, fNewType[i], new TConfiguration(this,i,fOffset[i]) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kChar:
         AddReadConvertAction<Char_t>(fReadObjectWise, fNewType[i], new TConfiguration(this,i,fOffset[i]) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kShort:
         AddReadConvertAction<Short_t>(fReadObjectWise, fNewType[i], new TConfiguration(this,i,fOffset[i]) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kInt:
         AddReadConvertAction<Int_t>(fReadObjectWise, fNewType[i], new TConfiguration(this,i,fOffset[i]) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kLong:
         AddReadConvertAction<Long_t>(fReadObjectWise, fNewType[i], new TConfiguration(this,i,fOffset[i]) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kLong64:
         AddReadConvertAction<Long64_t>(fReadObjectWise, fNewType[i], new TConfiguration(this,i,fOffset[i]) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kFloat:
         AddReadConvertAction<Float_t>(fReadObjectWise, fNewType[i], new TConfiguration(this,i,fOffset[i]) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kDouble:
         AddReadConvertAction<Double_t>(fReadObjectWise, fNewType[i], new TConfiguration(this,i,fOffset[i]) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kUChar:
         AddReadConvertAction<UChar_t>(fReadObjectWise, fNewType[i], new TConfiguration(this,i,fOffset[i]) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kUShort:
         AddReadConvertAction<UShort_t>(fReadObjectWise, fNewType[i], new TConfiguration(this,i,fOffset[i]) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kUInt:
         AddReadConvertAction<UInt_t>(fReadObjectWise, fNewType[i], new TConfiguration(this,i,fOffset[i]) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kULong:
         AddReadConvertAction<ULong_t>(fReadObjectWise, fNewType[i], new TConfiguration(this,i,fOffset[i]) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kULong64:
         AddReadConvertAction<ULong64_t>(fReadObjectWise, fNewType[i], new TConfiguration(this,i,fOffset[i]) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kBits:
         AddReadConvertAction<BitsMarker>(fReadObjectWise, fNewType[i], new TBitsConfiguration(this,i,fOffset[i]) );
         break;
      case TStreamerInfo::kConv + TStreamerInfo::kFloat16: {
         if (element->GetFactor() != 0) {
            AddReadConvertAction<WithFactorMarker<float> >(fReadObjectWise, fNewType[i], new TConfWithFactor(this,i,fOffset[i],element->GetFactor(),element->GetXmin()) );
         } else {
            Int_t nbits = (Int_t)element->GetXmin();
            if (!nbits) nbits = 12;
            AddReadConvertAction<NoFactorMarker<float> >(fReadObjectWise, fNewType[i], new TConfNoFactor(this,i,fOffset[i],nbits) );               
         }
         break;
      }
      case TStreamerInfo::kConv + TStreamerInfo::kDouble32: {
         if (element->GetFactor() != 0) {
            AddReadConvertAction<WithFactorMarker<double> >(fReadObjectWise, fNewType[i], new TConfWithFactor(this,i,fOffset[i],element->GetFactor(),element->GetXmin()) );
         } else {
            Int_t nbits = (Int_t)element->GetXmin();
            if (!nbits) {
               AddReadConvertAction<Float_t>(fReadObjectWise, fNewType[i], new TConfiguration(this,i,fOffset[i]) );
            } else {
               AddReadConvertAction<NoFactorMarker<double> >(fReadObjectWise, fNewType[i], new TConfNoFactor(this,i,fOffset[i],nbits) );
            }
         }
         break;
      }
      default:
         fReadObjectWise->AddAction( GenericReadAction, new TGenericConfiguration(this,i) );
         break;
   }
   if (element->TestBit(TStreamerElement::kCache)) {
      TConfiguredAction action( fReadObjectWise->fActions.back() );  // Action is moved, we must pop it next.
      fReadObjectWise->fActions.pop_back();
      fReadObjectWise->AddAction( UseCache, new TConfigurationUseCache(this,action,element->TestBit(TStreamerElement::kRepeat)) );
   }            
   if (fReadMemberWise) {
      // This is for streaming via a TClonesArray (or a vector of pointers of this type).

      if (element->TestBit(TStreamerElement::kCache)) {
         TConfiguredAction action( GetCollectionReadAction<VectorLooper>(this,element,fType[i],i,fOffset[i]) );
         fReadMemberWise->AddAction( UseCacheVectorPtrLoop, new TConfigurationUseCache(this,action,element->TestBit(TStreamerElement::kRepeat)) );
      } else {
         fReadMemberWise->AddAction( GetCollectionReadAction<VectorPtrLooper>(this,element,fType[i],i,fOffset[i]) );
      }
   }
}

//______________________________________________________________________________
void TStreamerInfo::AddWriteAction(Int_t i, TStreamerElement *element )
{
   if (element->TestBit(TStreamerElement::kCache) && !element->TestBit(TStreamerElement::kWrite)) {
      // Skip element cached for reading purposes.
      return;
   }
   if (element->GetType() >= kArtificial &&  !element->TestBit(TStreamerElement::kWrite)) {
      // Skip artificial element used for reading purposes.
      return;
   }
   switch (fType[i]) {
      // write basic types
      case TStreamerInfo::kBool:    fWriteObjectWise->AddAction( WriteBasicType<Bool_t>, new TConfiguration(this,i,fOffset[i]) );    break;
      case TStreamerInfo::kChar:    fWriteObjectWise->AddAction( WriteBasicType<Char_t>, new TConfiguration(this,i,fOffset[i]) );    break;
      case TStreamerInfo::kShort:   fWriteObjectWise->AddAction( WriteBasicType<Short_t>, new TConfiguration(this,i,fOffset[i]) );   break;
      case TStreamerInfo::kInt:     fWriteObjectWise->AddAction( WriteBasicType<Int_t>, new TConfiguration(this,i,fOffset[i]) );     break;
      case TStreamerInfo::kLong:    fWriteObjectWise->AddAction( WriteBasicType<Long_t>, new TConfiguration(this,i,fOffset[i]) );    break;
      case TStreamerInfo::kLong64:  fWriteObjectWise->AddAction( WriteBasicType<Long64_t>, new TConfiguration(this,i,fOffset[i]) );  break;
      case TStreamerInfo::kFloat:   fWriteObjectWise->AddAction( WriteBasicType<Float_t>, new TConfiguration(this,i,fOffset[i]) );   break;
      case TStreamerInfo::kDouble:  fWriteObjectWise->AddAction( WriteBasicType<Double_t>, new TConfiguration(this,i,fOffset[i]) );  break;
      case TStreamerInfo::kUChar:   fWriteObjectWise->AddAction( WriteBasicType<UChar_t>, new TConfiguration(this,i,fOffset[i]) );   break;
      case TStreamerInfo::kUShort:  fWriteObjectWise->AddAction( WriteBasicType<UShort_t>, new TConfiguration(this,i,fOffset[i]) );  break;
      case TStreamerInfo::kUInt:    fWriteObjectWise->AddAction( WriteBasicType<UInt_t>, new TConfiguration(this,i,fOffset[i]) );    break;
      case TStreamerInfo::kULong:   fWriteObjectWise->AddAction( WriteBasicType<ULong_t>, new TConfiguration(this,i,fOffset[i]) );   break;
      case TStreamerInfo::kULong64: fWriteObjectWise->AddAction( WriteBasicType<ULong64_t>, new TConfiguration(this,i,fOffset[i]) ); break;
       // case TStreamerInfo::kBits:    fWriteObjectWise->AddAction( WriteBasicType<BitsMarker>, new TConfiguration(this,i,fOffset[i]) );    break;
     /*case TStreamerInfo::kFloat16: {
         if (element->GetFactor() != 0) {
            fWriteObjectWise->AddAction( WriteBasicType_WithFactor<float>, new TConfWithFactor(this,i,fOffset[i],element->GetFactor(),element->GetXmin()) );
         } else {
            Int_t nbits = (Int_t)element->GetXmin();
            if (!nbits) nbits = 12;
            fWriteObjectWise->AddAction( WriteBasicType_NoFactor<float>, new TConfNoFactor(this,i,fOffset[i],nbits) );               
         }
         break;
      } */
     /*case TStreamerInfo::kDouble32: {
        if (element->GetFactor() != 0) {
           fWriteObjectWise->AddAction( WriteBasicType_WithFactor<double>, new TConfWithFactor(this,i,fOffset[i],element->GetFactor(),element->GetXmin()) );
        } else {
           Int_t nbits = (Int_t)element->GetXmin();
           if (!nbits) {
              fWriteObjectWise->AddAction( ConvertBasicType<float,double>, new TConfiguration(this,i,fOffset[i]) );
           } else {
              fWriteObjectWise->AddAction( WriteBasicType_NoFactor<double>, new TConfNoFactor(this,i,fOffset[i],nbits) );
           }
        }
        break;
     } */
     //case TStreamerInfo::kTNamed:  fWriteObjectWise->AddAction( WriteTNamed, new TConfiguration(this,i,fOffset[i]) );    break;
        // Idea: We should calculate the CanIgnoreTObjectStreamer here and avoid calling the
        // Streamer alltogether.
     //case TStreamerInfo::kTObject: fWriteObjectWise->AddAction( WriteTObject, new TConfiguration(this,i,fOffset[i]) );    break;
     //case TStreamerInfo::kTString: fWriteObjectWise->AddAction( WriteTString, new TConfiguration(this,i,fOffset[i]) );    break;
     /*case TStreamerInfo::kSTL: {
        TClass *newClass = element->GetNewClass();
        TClass *oldClass = element->GetClassPointer();
        Bool_t isSTLbase = element->IsBase() && element->IsA()!=TStreamerBase::Class();
        
        if (element->GetArrayLength() <= 1) {
           if (newClass && newClass != oldClass) {
              if (element->GetStreamer()) {
                 fWriteObjectWise->AddAction(WriteSTL<WriteSTLMemberWiseChangedClass,WriteSTLObjectWiseStreamer>, new TConfigSTL(this,i,fOffset[i],1,oldClass,newClass,element->GetStreamer(),element->GetTypeName(),isSTLbase));
              } else {
                 fWriteObjectWise->AddAction(WriteSTL<WriteSTLMemberWiseChangedClass,WriteSTLObjectWiseFastArray>, new TConfigSTL(this,i,fOffset[i],1,oldClass,newClass,element->GetTypeName(),isSTLbase));                     
              }
           } else {
              if (element->GetStreamer()) {
                 fWriteObjectWise->AddAction(WriteSTL<WriteSTLMemberWiseSameClass,WriteSTLObjectWiseStreamer>, new TConfigSTL(this,i,fOffset[i],1,oldClass,element->GetStreamer(),element->GetTypeName(),isSTLbase));
              } else {
                 fWriteObjectWise->AddAction(WriteSTL<WriteSTLMemberWiseSameClass,WriteSTLObjectWiseFastArray>, new TConfigSTL(this,i,fOffset[i],1,oldClass,element->GetTypeName(),isSTLbase));
              }                  
           }                  
        } else {
           if (newClass && newClass != oldClass) {
              if (element->GetStreamer()) {
                 fWriteObjectWise->AddAction(WriteSTL<WriteArraySTLMemberWiseChangedClass,WriteSTLObjectWiseStreamer>, new TConfigSTL(this,i,fOffset[i],element->GetArrayLength(),oldClass,newClass,element->GetStreamer(),element->GetTypeName(),isSTLbase));
              } else {
                 fWriteObjectWise->AddAction(WriteSTL<WriteArraySTLMemberWiseChangedClass,WriteSTLObjectWiseFastArray>, new TConfigSTL(this,i,fOffset[i],element->GetArrayLength(),oldClass,newClass,element->GetTypeName(),isSTLbase));                     
              }
           } else {
              if (element->GetStreamer()) {
                 fWriteObjectWise->AddAction(WriteSTL<WriteArraySTLMemberWiseSameClass,WriteSTLObjectWiseStreamer>, new TConfigSTL(this,i,fOffset[i],element->GetArrayLength(),oldClass,element->GetStreamer(),element->GetTypeName(),isSTLbase));
              } else {
                 fWriteObjectWise->AddAction(WriteSTL<WriteArraySTLMemberWiseSameClass,WriteSTLObjectWiseFastArray>, new TConfigSTL(this,i,fOffset[i],element->GetArrayLength(),oldClass,element->GetTypeName(),isSTLbase));
              }                  
           }                                    
        }
        break;
     } */
      default:
         fWriteObjectWise->AddAction( GenericWriteAction, new TGenericConfiguration(this,i) );
         break;
   }
#if defined(CDJ_NO_COMPILE)
   if (element->TestBit(TStreamerElement::kCache)) {
      TConfiguredAction action( fWriteObjectWise->fActions.back() );  // Action is moved, we must pop it next.
      fWriteObjectWise->fActions.pop_back();
      fWriteObjectWise->AddAction( UseCache, new TConfigurationUseCache(this,action,element->TestBit(TStreamerElement::kRepeat)) );
   }
#endif
   if (fWriteMemberWise) {
      // This is for streaming via a TClonesArray (or a vector of pointers of this type).

#if defined(CDJ_NO_COMPILE)
      if (element->TestBit(TStreamerElement::kCache)) {
         TConfiguredAction action( GetCollectionWriteAction<VectorLooper>(this,element,fType[i],i,fOffset[i]) );
         fWriteMemberWise->AddAction( UseCacheVectorPtrLoop, new TConfigurationUseCache(this,action,element->TestBit(TStreamerElement::kRepeat)) );
      } else {
         fWriteMemberWise->Addaction( GetCollectionWriteAction<VectorPtrLooper>(this,element,fType[i],i,fOffset[i]) );
      }
#else
      fWriteMemberWise->AddAction( VectorPtrLooper::GenericWrite, new TGenericConfiguration(this,i) );
#endif
  }
}

//______________________________________________________________________________
TStreamerInfoActions::TActionSequence *TStreamerInfoActions::TActionSequence::CreateReadMemberWiseActions(TVirtualStreamerInfo *info, TVirtualCollectionProxy &proxy)
{
   // Create the bundle of the actions necessary for the streaming memberwise of the content described by 'info' into the collection described by 'proxy'

   if (info == 0) {
      return new TStreamerInfoActions::TActionSequence(0,0);
   }

   if (info->IsOptimized()) {
      // For now insures that the StreamerInfo is not optimized
      info->SetBit(TVirtualStreamerInfo::kCannotOptimize);
      info->Compile();
   }
   UInt_t ndata = info->GetElements()->GetEntries();
   TStreamerInfoActions::TActionSequence *sequence = new TStreamerInfoActions::TActionSequence(info,ndata);
   if ( (proxy.GetCollectionType() == ROOT::kSTLvector) || (proxy.GetProperties() & TVirtualCollectionProxy::kIsEmulated) ) 
   {
      if (proxy.HasPointers()) {
         // Instead of the creating a new one let's copy the one from the StreamerInfo.
         delete sequence;
         
         sequence = static_cast<TStreamerInfo*>(info)->GetReadMemberWiseActions(kTRUE)->CreateCopy();
         
         return sequence;
      }
      
      // We can speed up the iteration in case of vector.  We also know that all emulated collection are stored internally as a vector.
      Long_t increment = proxy.GetIncrement();
      sequence->fLoopConfig = new TVectorLoopConfig(increment, /* read */ kTRUE);
   } else if (proxy.GetCollectionType() == ROOT::kSTLset || proxy.GetCollectionType() == ROOT::kSTLmultiset
              || proxy.GetCollectionType() == ROOT::kSTLmap || proxy.GetCollectionType() == ROOT::kSTLmultimap) 
   {
      Long_t increment = proxy.GetIncrement();
      sequence->fLoopConfig = new TVectorLoopConfig(increment, /* read */ kTRUE);
      // sequence->fLoopConfig = new TAssocLoopConfig(proxy);
   } else {
      sequence->fLoopConfig = new TGenericLoopConfig(&proxy, /* read */ kTRUE);
   }
   for (UInt_t i = 0; i < ndata; ++i) {
      TStreamerElement *element = (TStreamerElement*) info->GetElements()->At(i);
      if (!element) {
         break;
      }
      if (element->GetType() < 0) {
         // -- Skip an ignored TObject base class.
         // Note: The only allowed negative value here is -1, and signifies that Build() has found a TObject
         // base class and TClass::IgnoreTObjectStreamer() was called.  In this case the compiled version of the
         // elements omits the TObject base class element, which has to be compensated for by TTree::Bronch()
         // when it is making branches for a split object.
         continue;
      }
      if (element->TestBit(TStreamerElement::kWrite)) {
         // Skip element that only for writing.
         continue;
      }
      TStreamerBase *baseEl = dynamic_cast<TStreamerBase*>(element);
      if (baseEl) {
         if (baseEl->GetErrorMessage()[0]) {
            // There was a problem with the checksum, the user likely did not
            // increment the version number of the derived class when the
            // base class changed.  Since we will be member wise streaming
            // this class, let's warn the user that something is wrong.
            ::Warning("CreateReadMemberWiseActions","%s",
                      baseEl->GetErrorMessage());
         }
      }
      Int_t asize = element->GetSize();
      if (element->GetArrayLength()) {
         asize /= element->GetArrayLength();
      }
      Int_t oldType = element->GetType();
      Int_t newType = element->GetNewType();

      Int_t offset = element->GetOffset();
      if (newType != oldType) {
         if (newType > 0) {
            if (oldType != TVirtualStreamerInfo::kCounter) {
               oldType += TVirtualStreamerInfo::kConv;
            }
         } else {
            oldType += TVirtualStreamerInfo::kSkip;
         }
      }
      switch (SelectLooper(proxy)) {
      case kAssociativeLooper:
//         } else if (proxy.GetCollectionType() == ROOT::kSTLset || proxy.GetCollectionType() == ROOT::kSTLmultiset
//                    || proxy.GetCollectionType() == ROOT::kSTLmap || proxy.GetCollectionType() == ROOT::kSTLmultimap) {
//            sequence->AddAction( GenericAssocCollectionAction, new TConfigSTL(info,i,offset,0,proxy.GetCollectionClass(),0,0) );
      case kVectorLooper:
      case kVectorPtrLooper:
         // We can speed up the iteration in case of vector.  We also know that all emulated collection are stored internally as a vector.
         if (element->TestBit(TStreamerElement::kCache)) {
            TConfiguredAction action( GetCollectionReadAction<VectorLooper>(info,element,oldType,i,offset) );
            sequence->AddAction( UseCacheVectorLoop,  new TConfigurationUseCache(info,action,element->TestBit(TStreamerElement::kRepeat)) );
         } else {
            sequence->AddAction( GetCollectionReadAction<VectorLooper>(info,element,oldType,i,offset));
         }
         break;
      case kGenericLooper:
      default:
         // The usual collection case.
         if (element->TestBit(TStreamerElement::kCache)) {
            TConfiguredAction action( GetCollectionReadAction<VectorLooper>(info,element,oldType,i,offset) );
            sequence->AddAction( UseCacheGenericCollection, new TConfigurationUseCache(info,action,element->TestBit(TStreamerElement::kRepeat)) );
         } else {
            sequence->AddAction( GetCollectionReadAction<GenericLooper>(info,element,oldType,i,offset) );
         }
         break;
      }
   }
   return sequence;
}

//______________________________________________________________________________
TStreamerInfoActions::TActionSequence *TStreamerInfoActions::TActionSequence::CreateWriteMemberWiseActions(TVirtualStreamerInfo *info, TVirtualCollectionProxy &proxy)
{
      // Create the bundle of the actions necessary for the streaming memberwise of the content described by 'info' into the collection described by 'proxy'

      if (info == 0) {
         return new TStreamerInfoActions::TActionSequence(0,0);
      }

      if (info->IsOptimized()) {
         // For now insures that the StreamerInfo is not optimized
         info->SetBit(TVirtualStreamerInfo::kCannotOptimize);
         info->Compile();
      }
      UInt_t ndata = info->GetElements()->GetEntries();
      TStreamerInfoActions::TActionSequence *sequence = new TStreamerInfoActions::TActionSequence(info,ndata);
      if ( (proxy.GetCollectionType() == ROOT::kSTLvector) || (proxy.GetProperties() & TVirtualCollectionProxy::kIsEmulated) ) 
      {
         if (proxy.HasPointers()) {
            // Instead of the creating a new one let's copy the one from the StreamerInfo.
            delete sequence;

            sequence = static_cast<TStreamerInfo*>(info)->GetWriteMemberWiseActions(kTRUE)->CreateCopy();

            return sequence;
         }

         // We can speed up the iteration in case of vector.  We also know that all emulated collection are stored internally as a vector.
         Long_t increment = proxy.GetIncrement();
         sequence->fLoopConfig = new TVectorLoopConfig(increment, /* read */ kFALSE);
      /*} else if (proxy.GetCollectionType() == ROOT::kSTLset || proxy.GetCollectionType() == ROOT::kSTLmultiset
                 || proxy.GetCollectionType() == ROOT::kSTLmap || proxy.GetCollectionType() == ROOT::kSTLmultimap) 
      {
         Long_t increment = proxy.GetIncrement();
         sequence->fLoopConfig = new TVectorLoopConfig(increment);
         // sequence->fLoopConfig = new TAssocLoopConfig(proxy); */
      } else {        
         sequence->fLoopConfig = new TGenericLoopConfig(&proxy, /* read */ kFALSE);
      }
      for (UInt_t i = 0; i < ndata; ++i) {
         TStreamerElement *element = (TStreamerElement*) info->GetElements()->At(i);
         if (!element) {
            break;
         }
         if (element->GetType() < 0) {
            // -- Skip an ignored TObject base class.
            // Note: The only allowed negative value here is -1, and signifies that Build() has found a TObject
            // base class and TClass::IgnoreTObjectStreamer() was called.  In this case the compiled version of the
            // elements omits the TObject base class element, which has to be compensated for by TTree::Bronch()
            // when it is making branches for a split object.
            continue;
         }
         if (element->TestBit(TStreamerElement::kCache) && !element->TestBit(TStreamerElement::kWrite)) {
            // Skip element cached for reading purposes.
            continue;
         }
         if (element->GetType() >= TVirtualStreamerInfo::kArtificial &&  !element->TestBit(TStreamerElement::kWrite)) {
            // Skip artificial element used for reading purposes.
            continue;
         }
         Int_t asize = element->GetSize();
         if (element->GetArrayLength()) {
            asize /= element->GetArrayLength();
         }
         Int_t oldType = element->GetType();
         Int_t offset = element->GetOffset();
#if defined(CDJ_NO_COMPILE)
         Int_t newType = element->GetNewType();

         if (newType != oldType) {
            if (newType > 0) {
               if (oldType != TVirtualStreamerInfo::kCounter) {
                  oldType += TVirtualStreamerInfo::kConv;
               }
            } else {
               oldType += TVirtualStreamerInfo::kSkip;
            }
         }
         if ( (proxy.GetCollectionType() == ROOT::kSTLvector) || (proxy.GetProperties() & TVirtualCollectionProxy::kIsEmulated)  
               /*|| (proxy.GetCollectionType() == ROOT::kSTLset || proxy.GetCollectionType() == ROOT::kSTLmultiset
               || proxy.GetCollectionType() == ROOT::kSTLmap || proxy.GetCollectionType() == ROOT::kSTLmultimap) */ )
         {

            // We can speed up the iteration in case of vector.  We also know that all emulated collection are stored internally as a vector.
            if (element->TestBit(TStreamerElement::kCache)) {
               TConfiguredAction action( GetCollectionWriteAction<VectorLooper>(info,element,oldType,i,offset) );
               sequence->AddAction( UseCacheVectorLoop,  new TConfigurationUseCache(info,action,element->TestBit(TStreamerElement::kRepeat)) );
            } else {            
               sequence->AddAction(GetCollectionWriteAction<VectorLooper>(info,element,oldType,i,offset));
            }

   //         } else if (proxy.GetCollectionType() == ROOT::kSTLset || proxy.GetCollectionType() == ROOT::kSTLmultiset
   //                    || proxy.GetCollectionType() == ROOT::kSTLmap || proxy.GetCollectionType() == ROOT::kSTLmultimap) {
   //            sequence->AddAction( GenericAssocCollectionAction, new TConfigSTL(info,i,offset,0,proxy.GetCollectionClass(),0,0) );
         } else {
            // The usual collection case.
            if (element->TestBit(TStreamerElement::kCache)) {
               TConfiguredAction action( GetWriteAction<VectorLooper>(info,element,oldType,i,offset) );
               sequence->AddAction( UseCacheGenericCollection, new TConfigurationUseCache(info,action,element->TestBit(TStreamerElement::kRepeat)) );
            } else {
               switch (oldType) {
                     // read basic types
                  case TVirtualStreamerInfo::kBool:    sequence->AddAction( WriteBasicTypeGenericLoop<Bool_t>, new TConfiguration(info,i,offset) );    break;
                  case TVirtualStreamerInfo::kChar:    sequence->AddAction( WriteBasicTypeGenericLoop<Char_t>, new TConfiguration(info,i,offset) );    break;
                  case TVirtualStreamerInfo::kShort:   sequence->AddAction( WriteBasicTypeGenericLoop<Short_t>, new TConfiguration(info,i,offset) );   break;
                  case TVirtualStreamerInfo::kInt:     sequence->AddAction( WriteBasicTypeGenericLoop<Int_t>, new TConfiguration(info,i,offset) );     break;
                  case TVirtualStreamerInfo::kLong:    sequence->AddAction( WriteBasicTypeGenericLoop<Long_t>, new TConfiguration(info,i,offset) );    break;
                  case TVirtualStreamerInfo::kLong64:  sequence->AddAction( WriteBasicTypeGenericLoop<Long64_t>, new TConfiguration(info,i,offset) );  break;
                  case TVirtualStreamerInfo::kFloat:   sequence->AddAction( WriteBasicTypeGenericLoop<Float_t>, new TConfiguration(info,i,offset) );   break;
                  case TVirtualStreamerInfo::kDouble:  sequence->AddAction( WriteBasicTypeGenericLoop<Double_t>, new TConfiguration(info,i,offset) );  break;
                  case TVirtualStreamerInfo::kUChar:   sequence->AddAction( WriteBasicTypeGenericLoop<UChar_t>, new TConfiguration(info,i,offset) );   break;
                  case TVirtualStreamerInfo::kUShort:  sequence->AddAction( WriteBasicTypeGenericLoop<UShort_t>, new TConfiguration(info,i,offset) );  break;
                  case TVirtualStreamerInfo::kUInt:    sequence->AddAction( WriteBasicTypeGenericLoop<UInt_t>, new TConfiguration(info,i,offset) );    break;
                  case TVirtualStreamerInfo::kULong:   sequence->AddAction( WriteBasicTypeGenericLoop<ULong_t>, new TConfiguration(info,i,offset) );   break;
                  case TVirtualStreamerInfo::kULong64: sequence->AddAction( WriteBasicTypeGenericLoop<ULong64_t>, new TConfiguration(info,i,offset) ); break;
                  // case TVirtualStreamerInfo::kBits:    sequence->AddAction( WriteBasicTypeGenericLoop<BitsMarker>, new TConfiguration(info,i,offset) );    break;
                  case TVirtualStreamerInfo::kFloat16: {
                     if (element->GetFactor() != 0) {
                        sequence->AddAction( GenericLooper<WriteBasicType_WithFactor<float> >, new TConfWithFactor(info,i,offset,element->GetFactor(),element->GetXmin()) );
                     } else {
                        Int_t nbits = (Int_t)element->GetXmin();
                        if (!nbits) nbits = 12;
                        sequence->AddAction( GenericLooper<WriteBasicType_NoFactor<float> >, new TConfNoFactor(info,i,offset,nbits) );               
                     }
                     break;
                  }
                  case TVirtualStreamerInfo::kDouble32: {
                     if (element->GetFactor() != 0) {
                        sequence->AddAction( GenericLooper<WriteBasicType_WithFactor<double> >, new TConfWithFactor(info,i,offset,element->GetFactor(),element->GetXmin()) );
                     } else {
                        Int_t nbits = (Int_t)element->GetXmin();
                        if (!nbits) {
                           sequence->AddAction( GenericLooper<ConvertBasicType<float,double> >, new TConfiguration(info,i,offset) );
                        } else {
                           sequence->AddAction( GenericLooper<WriteBasicType_NoFactor<double> >, new TConfNoFactor(info,i,offset,nbits) );
                        }
                     }
                     break;
                  }
                  case TVirtualStreamerInfo::kTNamed:  sequence->AddAction( GenericLooper<WriteTNamed >, new TConfiguration(info,i,offset) );    break;
                     // Idea: We should calculate the CanIgnoreTObjectStreamer here and avoid calling the
                     // Streamer alltogether.
                  case TVirtualStreamerInfo::kTObject: sequence->AddAction( GenericLooper<WriteTObject >, new TConfiguration(info,i,offset) );    break;
                  case TVirtualStreamerInfo::kTString: sequence->AddAction( GenericLooper<WriteTString >, new TConfiguration(info,i,offset) );    break;
                  default:
                     sequence->AddAction( GenericCollectionWriteAction, new TConfigSTL(info,i,0 /* the offset will be used from TStreamerInfo */,0,proxy.GetCollectionClass(),0,0) );
                     break;
               }
            }
         }
#else
         if ( (proxy.GetCollectionType() == ROOT::kSTLvector) || (proxy.GetProperties() & TVirtualCollectionProxy::kIsEmulated)  
               /*|| (proxy.GetCollectionType() == ROOT::kSTLset || proxy.GetCollectionType() == ROOT::kSTLmultiset
               || proxy.GetCollectionType() == ROOT::kSTLmap || proxy.GetCollectionType() == ROOT::kSTLmultimap)*/ )
         {
            sequence->AddAction( GetCollectionWriteAction<VectorLooper>(info,element,oldType,i,offset) );
         } else {
            // NOTE: TBranch::FillLeavesCollection[Member] is not yet ready to handle the sequence
            // as it does not create/use a TStaging as expected ... but then again it might
            // not be the right things to expect ...
            // sequence->AddAction( GetCollectionWriteAction<GenericLooper>(info,element,oldType,i,offset) );
            sequence->AddAction( GenericLooper::GenericWrite, new TConfigSTL(info,i,0 /* the offset will be used from TStreamerInfo */,0,proxy.GetCollectionClass(),0,0) );
         }
#endif
      }
      return sequence;
}
void TStreamerInfoActions::TActionSequence::AddToOffset(Int_t delta)
{
   // Add the (potentially negative) delta to all the configuration's offset.  This is used by
   // TBranchElement in the case of split sub-object.

   TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
   for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
       iter != end;
       ++iter) 
   {
      if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(TStreamerElement::kCache))
         iter->fConfiguration->AddToOffset(delta);
   }
}

TStreamerInfoActions::TActionSequence *TStreamerInfoActions::TActionSequence::CreateCopy()
{
   // Create a copy of this sequence.
   
   TStreamerInfoActions::TActionSequence *sequence = new TStreamerInfoActions::TActionSequence(fStreamerInfo,fActions.size());

   sequence->fLoopConfig = fLoopConfig ? fLoopConfig->Copy() : 0;

   TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
   for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
       iter != end;
       ++iter) 
   {
      TConfiguration *conf = iter->fConfiguration->Copy();
      sequence->AddAction( iter->fAction, conf );
   }
   return sequence;
}

TStreamerInfoActions::TActionSequence *TStreamerInfoActions::TActionSequence::CreateSubSequence(const std::vector<Int_t> &element_ids, size_t offset)
{
   // Create a sequence containing the subset of the action corresponding to the SteamerElement whose ids is contained in the vector.
   // 'offset' is the location of this 'class' within the object (address) that will be passed to ReadBuffer when using this sequence.
   
   TStreamerInfoActions::TActionSequence *sequence = new TStreamerInfoActions::TActionSequence(fStreamerInfo,element_ids.size());
   
   sequence->fLoopConfig = fLoopConfig ? fLoopConfig->Copy() : 0;
   
   for(UInt_t id = 0; id < element_ids.size(); ++id) {
      if ( element_ids[id] < 0 ) {
         TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
         for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
             iter != end;
             ++iter) 
         {
            TConfiguration *conf = iter->fConfiguration->Copy();
            if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(TStreamerElement::kCache))
               conf->AddToOffset(offset);
            sequence->AddAction( iter->fAction, conf );
         }
      } else {
         TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
         for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
             iter != end;
             ++iter) {
            if ( iter->fConfiguration->fElemId == (UInt_t)element_ids[id] ) {
               TConfiguration *conf = iter->fConfiguration->Copy();
               if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(TStreamerElement::kCache))
                  conf->AddToOffset(offset);
               sequence->AddAction( iter->fAction, conf );
            }
         }
      }
   }
   return sequence;
}
 
#if !defined(R__WIN32) && !defined(_AIX)

#include <dlfcn.h>

#endif

typedef void (*voidfunc)();
static const char *R__GetSymbolName(voidfunc func)
{
#if defined(R__WIN32) || defined(__CYGWIN__) || defined(_AIX)
   return "not available on this platform";
#if 0
   MEMORY_BASIC_INFORMATION mbi;
   if (!VirtualQuery (func, &mbi, sizeof (mbi)))
   {
      return 0;
   }
   
   HMODULE hMod = (HMODULE) mbi.AllocationBase;
   static char moduleName[MAX_PATH];
   
   if (!GetModuleFileNameA (hMod, moduleName, sizeof (moduleName)))
   {
      return 0;
   }
   return moduleName;
#endif
#else
   Dl_info info;
   if (dladdr((void*)func,&info)==0) {
      // Not in a known share library, let's give up
      return "name not found";
   } else {
      //fprintf(stdout,"Found address in %s\n",info.dli_fname);
      return info.dli_sname;
   }
#endif 
}

void TStreamerInfoActions::TActionSequence::Print(Option_t *opt) const
{
   // Add the (potentially negative) delta to all the configuration's offset.  This is used by
   // TTBranchElement in the case of split sub-object.
   // If opt contains 'func', also print the (mangled) name of the function that will be executed.

   if (fLoopConfig) {
      fLoopConfig->Print();
   }
   TStreamerInfoActions::ActionContainer_t::const_iterator end = fActions.end();
   for(TStreamerInfoActions::ActionContainer_t::const_iterator iter = fActions.begin();
       iter != end;
       ++iter) 
   {
      iter->fConfiguration->Print();
      if (strstr(opt,"func")) {
         printf("StreamerInfoAction func: %s\n",R__GetSymbolName((voidfunc)iter->fAction));
      }
   }
}


 TStreamerInfoActions.cxx:1
 TStreamerInfoActions.cxx:2
 TStreamerInfoActions.cxx:3
 TStreamerInfoActions.cxx:4
 TStreamerInfoActions.cxx:5
 TStreamerInfoActions.cxx:6
 TStreamerInfoActions.cxx:7
 TStreamerInfoActions.cxx:8
 TStreamerInfoActions.cxx:9
 TStreamerInfoActions.cxx:10
 TStreamerInfoActions.cxx:11
 TStreamerInfoActions.cxx:12
 TStreamerInfoActions.cxx:13
 TStreamerInfoActions.cxx:14
 TStreamerInfoActions.cxx:15
 TStreamerInfoActions.cxx:16
 TStreamerInfoActions.cxx:17
 TStreamerInfoActions.cxx:18
 TStreamerInfoActions.cxx:19
 TStreamerInfoActions.cxx:20
 TStreamerInfoActions.cxx:21
 TStreamerInfoActions.cxx:22
 TStreamerInfoActions.cxx:23
 TStreamerInfoActions.cxx:24
 TStreamerInfoActions.cxx:25
 TStreamerInfoActions.cxx:26
 TStreamerInfoActions.cxx:27
 TStreamerInfoActions.cxx:28
 TStreamerInfoActions.cxx:29
 TStreamerInfoActions.cxx:30
 TStreamerInfoActions.cxx:31
 TStreamerInfoActions.cxx:32
 TStreamerInfoActions.cxx:33
 TStreamerInfoActions.cxx:34
 TStreamerInfoActions.cxx:35
 TStreamerInfoActions.cxx:36
 TStreamerInfoActions.cxx:37
 TStreamerInfoActions.cxx:38
 TStreamerInfoActions.cxx:39
 TStreamerInfoActions.cxx:40
 TStreamerInfoActions.cxx:41
 TStreamerInfoActions.cxx:42
 TStreamerInfoActions.cxx:43
 TStreamerInfoActions.cxx:44
 TStreamerInfoActions.cxx:45
 TStreamerInfoActions.cxx:46
 TStreamerInfoActions.cxx:47
 TStreamerInfoActions.cxx:48
 TStreamerInfoActions.cxx:49
 TStreamerInfoActions.cxx:50
 TStreamerInfoActions.cxx:51
 TStreamerInfoActions.cxx:52
 TStreamerInfoActions.cxx:53
 TStreamerInfoActions.cxx:54
 TStreamerInfoActions.cxx:55
 TStreamerInfoActions.cxx:56
 TStreamerInfoActions.cxx:57
 TStreamerInfoActions.cxx:58
 TStreamerInfoActions.cxx:59
 TStreamerInfoActions.cxx:60
 TStreamerInfoActions.cxx:61
 TStreamerInfoActions.cxx:62
 TStreamerInfoActions.cxx:63
 TStreamerInfoActions.cxx:64
 TStreamerInfoActions.cxx:65
 TStreamerInfoActions.cxx:66
 TStreamerInfoActions.cxx:67
 TStreamerInfoActions.cxx:68
 TStreamerInfoActions.cxx:69
 TStreamerInfoActions.cxx:70
 TStreamerInfoActions.cxx:71
 TStreamerInfoActions.cxx:72
 TStreamerInfoActions.cxx:73
 TStreamerInfoActions.cxx:74
 TStreamerInfoActions.cxx:75
 TStreamerInfoActions.cxx:76
 TStreamerInfoActions.cxx:77
 TStreamerInfoActions.cxx:78
 TStreamerInfoActions.cxx:79
 TStreamerInfoActions.cxx:80
 TStreamerInfoActions.cxx:81
 TStreamerInfoActions.cxx:82
 TStreamerInfoActions.cxx:83
 TStreamerInfoActions.cxx:84
 TStreamerInfoActions.cxx:85
 TStreamerInfoActions.cxx:86
 TStreamerInfoActions.cxx:87
 TStreamerInfoActions.cxx:88
 TStreamerInfoActions.cxx:89
 TStreamerInfoActions.cxx:90
 TStreamerInfoActions.cxx:91
 TStreamerInfoActions.cxx:92
 TStreamerInfoActions.cxx:93
 TStreamerInfoActions.cxx:94
 TStreamerInfoActions.cxx:95
 TStreamerInfoActions.cxx:96
 TStreamerInfoActions.cxx:97
 TStreamerInfoActions.cxx:98
 TStreamerInfoActions.cxx:99
 TStreamerInfoActions.cxx:100
 TStreamerInfoActions.cxx:101
 TStreamerInfoActions.cxx:102
 TStreamerInfoActions.cxx:103
 TStreamerInfoActions.cxx:104
 TStreamerInfoActions.cxx:105
 TStreamerInfoActions.cxx:106
 TStreamerInfoActions.cxx:107
 TStreamerInfoActions.cxx:108
 TStreamerInfoActions.cxx:109
 TStreamerInfoActions.cxx:110
 TStreamerInfoActions.cxx:111
 TStreamerInfoActions.cxx:112
 TStreamerInfoActions.cxx:113
 TStreamerInfoActions.cxx:114
 TStreamerInfoActions.cxx:115
 TStreamerInfoActions.cxx:116
 TStreamerInfoActions.cxx:117
 TStreamerInfoActions.cxx:118
 TStreamerInfoActions.cxx:119
 TStreamerInfoActions.cxx:120
 TStreamerInfoActions.cxx:121
 TStreamerInfoActions.cxx:122
 TStreamerInfoActions.cxx:123
 TStreamerInfoActions.cxx:124
 TStreamerInfoActions.cxx:125
 TStreamerInfoActions.cxx:126
 TStreamerInfoActions.cxx:127
 TStreamerInfoActions.cxx:128
 TStreamerInfoActions.cxx:129
 TStreamerInfoActions.cxx:130
 TStreamerInfoActions.cxx:131
 TStreamerInfoActions.cxx:132
 TStreamerInfoActions.cxx:133
 TStreamerInfoActions.cxx:134
 TStreamerInfoActions.cxx:135
 TStreamerInfoActions.cxx:136
 TStreamerInfoActions.cxx:137
 TStreamerInfoActions.cxx:138
 TStreamerInfoActions.cxx:139
 TStreamerInfoActions.cxx:140
 TStreamerInfoActions.cxx:141
 TStreamerInfoActions.cxx:142
 TStreamerInfoActions.cxx:143
 TStreamerInfoActions.cxx:144
 TStreamerInfoActions.cxx:145
 TStreamerInfoActions.cxx:146
 TStreamerInfoActions.cxx:147
 TStreamerInfoActions.cxx:148
 TStreamerInfoActions.cxx:149
 TStreamerInfoActions.cxx:150
 TStreamerInfoActions.cxx:151
 TStreamerInfoActions.cxx:152
 TStreamerInfoActions.cxx:153
 TStreamerInfoActions.cxx:154
 TStreamerInfoActions.cxx:155
 TStreamerInfoActions.cxx:156
 TStreamerInfoActions.cxx:157
 TStreamerInfoActions.cxx:158
 TStreamerInfoActions.cxx:159
 TStreamerInfoActions.cxx:160
 TStreamerInfoActions.cxx:161
 TStreamerInfoActions.cxx:162
 TStreamerInfoActions.cxx:163
 TStreamerInfoActions.cxx:164
 TStreamerInfoActions.cxx:165
 TStreamerInfoActions.cxx:166
 TStreamerInfoActions.cxx:167
 TStreamerInfoActions.cxx:168
 TStreamerInfoActions.cxx:169
 TStreamerInfoActions.cxx:170
 TStreamerInfoActions.cxx:171
 TStreamerInfoActions.cxx:172
 TStreamerInfoActions.cxx:173
 TStreamerInfoActions.cxx:174
 TStreamerInfoActions.cxx:175
 TStreamerInfoActions.cxx:176
 TStreamerInfoActions.cxx:177
 TStreamerInfoActions.cxx:178
 TStreamerInfoActions.cxx:179
 TStreamerInfoActions.cxx:180
 TStreamerInfoActions.cxx:181
 TStreamerInfoActions.cxx:182
 TStreamerInfoActions.cxx:183
 TStreamerInfoActions.cxx:184
 TStreamerInfoActions.cxx:185
 TStreamerInfoActions.cxx:186
 TStreamerInfoActions.cxx:187
 TStreamerInfoActions.cxx:188
 TStreamerInfoActions.cxx:189
 TStreamerInfoActions.cxx:190
 TStreamerInfoActions.cxx:191
 TStreamerInfoActions.cxx:192
 TStreamerInfoActions.cxx:193
 TStreamerInfoActions.cxx:194
 TStreamerInfoActions.cxx:195
 TStreamerInfoActions.cxx:196
 TStreamerInfoActions.cxx:197
 TStreamerInfoActions.cxx:198
 TStreamerInfoActions.cxx:199
 TStreamerInfoActions.cxx:200
 TStreamerInfoActions.cxx:201
 TStreamerInfoActions.cxx:202
 TStreamerInfoActions.cxx:203
 TStreamerInfoActions.cxx:204
 TStreamerInfoActions.cxx:205
 TStreamerInfoActions.cxx:206
 TStreamerInfoActions.cxx:207
 TStreamerInfoActions.cxx:208
 TStreamerInfoActions.cxx:209
 TStreamerInfoActions.cxx:210
 TStreamerInfoActions.cxx:211
 TStreamerInfoActions.cxx:212
 TStreamerInfoActions.cxx:213
 TStreamerInfoActions.cxx:214
 TStreamerInfoActions.cxx:215
 TStreamerInfoActions.cxx:216
 TStreamerInfoActions.cxx:217
 TStreamerInfoActions.cxx:218
 TStreamerInfoActions.cxx:219
 TStreamerInfoActions.cxx:220
 TStreamerInfoActions.cxx:221
 TStreamerInfoActions.cxx:222
 TStreamerInfoActions.cxx:223
 TStreamerInfoActions.cxx:224
 TStreamerInfoActions.cxx:225
 TStreamerInfoActions.cxx:226
 TStreamerInfoActions.cxx:227
 TStreamerInfoActions.cxx:228
 TStreamerInfoActions.cxx:229
 TStreamerInfoActions.cxx:230
 TStreamerInfoActions.cxx:231
 TStreamerInfoActions.cxx:232
 TStreamerInfoActions.cxx:233
 TStreamerInfoActions.cxx:234
 TStreamerInfoActions.cxx:235
 TStreamerInfoActions.cxx:236
 TStreamerInfoActions.cxx:237
 TStreamerInfoActions.cxx:238
 TStreamerInfoActions.cxx:239
 TStreamerInfoActions.cxx:240
 TStreamerInfoActions.cxx:241
 TStreamerInfoActions.cxx:242
 TStreamerInfoActions.cxx:243
 TStreamerInfoActions.cxx:244
 TStreamerInfoActions.cxx:245
 TStreamerInfoActions.cxx:246
 TStreamerInfoActions.cxx:247
 TStreamerInfoActions.cxx:248
 TStreamerInfoActions.cxx:249
 TStreamerInfoActions.cxx:250
 TStreamerInfoActions.cxx:251
 TStreamerInfoActions.cxx:252
 TStreamerInfoActions.cxx:253
 TStreamerInfoActions.cxx:254
 TStreamerInfoActions.cxx:255
 TStreamerInfoActions.cxx:256
 TStreamerInfoActions.cxx:257
 TStreamerInfoActions.cxx:258
 TStreamerInfoActions.cxx:259
 TStreamerInfoActions.cxx:260
 TStreamerInfoActions.cxx:261
 TStreamerInfoActions.cxx:262
 TStreamerInfoActions.cxx:263
 TStreamerInfoActions.cxx:264
 TStreamerInfoActions.cxx:265
 TStreamerInfoActions.cxx:266
 TStreamerInfoActions.cxx:267
 TStreamerInfoActions.cxx:268
 TStreamerInfoActions.cxx:269
 TStreamerInfoActions.cxx:270
 TStreamerInfoActions.cxx:271
 TStreamerInfoActions.cxx:272
 TStreamerInfoActions.cxx:273
 TStreamerInfoActions.cxx:274
 TStreamerInfoActions.cxx:275
 TStreamerInfoActions.cxx:276
 TStreamerInfoActions.cxx:277
 TStreamerInfoActions.cxx:278
 TStreamerInfoActions.cxx:279
 TStreamerInfoActions.cxx:280
 TStreamerInfoActions.cxx:281
 TStreamerInfoActions.cxx:282
 TStreamerInfoActions.cxx:283
 TStreamerInfoActions.cxx:284
 TStreamerInfoActions.cxx:285
 TStreamerInfoActions.cxx:286
 TStreamerInfoActions.cxx:287
 TStreamerInfoActions.cxx:288
 TStreamerInfoActions.cxx:289
 TStreamerInfoActions.cxx:290
 TStreamerInfoActions.cxx:291
 TStreamerInfoActions.cxx:292
 TStreamerInfoActions.cxx:293
 TStreamerInfoActions.cxx:294
 TStreamerInfoActions.cxx:295
 TStreamerInfoActions.cxx:296
 TStreamerInfoActions.cxx:297
 TStreamerInfoActions.cxx:298
 TStreamerInfoActions.cxx:299
 TStreamerInfoActions.cxx:300
 TStreamerInfoActions.cxx:301
 TStreamerInfoActions.cxx:302
 TStreamerInfoActions.cxx:303
 TStreamerInfoActions.cxx:304
 TStreamerInfoActions.cxx:305
 TStreamerInfoActions.cxx:306
 TStreamerInfoActions.cxx:307
 TStreamerInfoActions.cxx:308
 TStreamerInfoActions.cxx:309
 TStreamerInfoActions.cxx:310
 TStreamerInfoActions.cxx:311
 TStreamerInfoActions.cxx:312
 TStreamerInfoActions.cxx:313
 TStreamerInfoActions.cxx:314
 TStreamerInfoActions.cxx:315
 TStreamerInfoActions.cxx:316
 TStreamerInfoActions.cxx:317
 TStreamerInfoActions.cxx:318
 TStreamerInfoActions.cxx:319
 TStreamerInfoActions.cxx:320
 TStreamerInfoActions.cxx:321
 TStreamerInfoActions.cxx:322
 TStreamerInfoActions.cxx:323
 TStreamerInfoActions.cxx:324
 TStreamerInfoActions.cxx:325
 TStreamerInfoActions.cxx:326
 TStreamerInfoActions.cxx:327
 TStreamerInfoActions.cxx:328
 TStreamerInfoActions.cxx:329
 TStreamerInfoActions.cxx:330
 TStreamerInfoActions.cxx:331
 TStreamerInfoActions.cxx:332
 TStreamerInfoActions.cxx:333
 TStreamerInfoActions.cxx:334
 TStreamerInfoActions.cxx:335
 TStreamerInfoActions.cxx:336
 TStreamerInfoActions.cxx:337
 TStreamerInfoActions.cxx:338
 TStreamerInfoActions.cxx:339
 TStreamerInfoActions.cxx:340
 TStreamerInfoActions.cxx:341
 TStreamerInfoActions.cxx:342
 TStreamerInfoActions.cxx:343
 TStreamerInfoActions.cxx:344
 TStreamerInfoActions.cxx:345
 TStreamerInfoActions.cxx:346
 TStreamerInfoActions.cxx:347
 TStreamerInfoActions.cxx:348
 TStreamerInfoActions.cxx:349
 TStreamerInfoActions.cxx:350
 TStreamerInfoActions.cxx:351
 TStreamerInfoActions.cxx:352
 TStreamerInfoActions.cxx:353
 TStreamerInfoActions.cxx:354
 TStreamerInfoActions.cxx:355
 TStreamerInfoActions.cxx:356
 TStreamerInfoActions.cxx:357
 TStreamerInfoActions.cxx:358
 TStreamerInfoActions.cxx:359
 TStreamerInfoActions.cxx:360
 TStreamerInfoActions.cxx:361
 TStreamerInfoActions.cxx:362
 TStreamerInfoActions.cxx:363
 TStreamerInfoActions.cxx:364
 TStreamerInfoActions.cxx:365
 TStreamerInfoActions.cxx:366
 TStreamerInfoActions.cxx:367
 TStreamerInfoActions.cxx:368
 TStreamerInfoActions.cxx:369
 TStreamerInfoActions.cxx:370
 TStreamerInfoActions.cxx:371
 TStreamerInfoActions.cxx:372
 TStreamerInfoActions.cxx:373
 TStreamerInfoActions.cxx:374
 TStreamerInfoActions.cxx:375
 TStreamerInfoActions.cxx:376
 TStreamerInfoActions.cxx:377
 TStreamerInfoActions.cxx:378
 TStreamerInfoActions.cxx:379
 TStreamerInfoActions.cxx:380
 TStreamerInfoActions.cxx:381
 TStreamerInfoActions.cxx:382
 TStreamerInfoActions.cxx:383
 TStreamerInfoActions.cxx:384
 TStreamerInfoActions.cxx:385
 TStreamerInfoActions.cxx:386
 TStreamerInfoActions.cxx:387
 TStreamerInfoActions.cxx:388
 TStreamerInfoActions.cxx:389
 TStreamerInfoActions.cxx:390
 TStreamerInfoActions.cxx:391
 TStreamerInfoActions.cxx:392
 TStreamerInfoActions.cxx:393
 TStreamerInfoActions.cxx:394
 TStreamerInfoActions.cxx:395
 TStreamerInfoActions.cxx:396
 TStreamerInfoActions.cxx:397
 TStreamerInfoActions.cxx:398
 TStreamerInfoActions.cxx:399
 TStreamerInfoActions.cxx:400
 TStreamerInfoActions.cxx:401
 TStreamerInfoActions.cxx:402
 TStreamerInfoActions.cxx:403
 TStreamerInfoActions.cxx:404
 TStreamerInfoActions.cxx:405
 TStreamerInfoActions.cxx:406
 TStreamerInfoActions.cxx:407
 TStreamerInfoActions.cxx:408
 TStreamerInfoActions.cxx:409
 TStreamerInfoActions.cxx:410
 TStreamerInfoActions.cxx:411
 TStreamerInfoActions.cxx:412
 TStreamerInfoActions.cxx:413
 TStreamerInfoActions.cxx:414
 TStreamerInfoActions.cxx:415
 TStreamerInfoActions.cxx:416
 TStreamerInfoActions.cxx:417
 TStreamerInfoActions.cxx:418
 TStreamerInfoActions.cxx:419
 TStreamerInfoActions.cxx:420
 TStreamerInfoActions.cxx:421
 TStreamerInfoActions.cxx:422
 TStreamerInfoActions.cxx:423
 TStreamerInfoActions.cxx:424
 TStreamerInfoActions.cxx:425
 TStreamerInfoActions.cxx:426
 TStreamerInfoActions.cxx:427
 TStreamerInfoActions.cxx:428
 TStreamerInfoActions.cxx:429
 TStreamerInfoActions.cxx:430
 TStreamerInfoActions.cxx:431
 TStreamerInfoActions.cxx:432
 TStreamerInfoActions.cxx:433
 TStreamerInfoActions.cxx:434
 TStreamerInfoActions.cxx:435
 TStreamerInfoActions.cxx:436
 TStreamerInfoActions.cxx:437
 TStreamerInfoActions.cxx:438
 TStreamerInfoActions.cxx:439
 TStreamerInfoActions.cxx:440
 TStreamerInfoActions.cxx:441
 TStreamerInfoActions.cxx:442
 TStreamerInfoActions.cxx:443
 TStreamerInfoActions.cxx:444
 TStreamerInfoActions.cxx:445
 TStreamerInfoActions.cxx:446
 TStreamerInfoActions.cxx:447
 TStreamerInfoActions.cxx:448
 TStreamerInfoActions.cxx:449
 TStreamerInfoActions.cxx:450
 TStreamerInfoActions.cxx:451
 TStreamerInfoActions.cxx:452
 TStreamerInfoActions.cxx:453
 TStreamerInfoActions.cxx:454
 TStreamerInfoActions.cxx:455
 TStreamerInfoActions.cxx:456
 TStreamerInfoActions.cxx:457
 TStreamerInfoActions.cxx:458
 TStreamerInfoActions.cxx:459
 TStreamerInfoActions.cxx:460
 TStreamerInfoActions.cxx:461
 TStreamerInfoActions.cxx:462
 TStreamerInfoActions.cxx:463
 TStreamerInfoActions.cxx:464
 TStreamerInfoActions.cxx:465
 TStreamerInfoActions.cxx:466
 TStreamerInfoActions.cxx:467
 TStreamerInfoActions.cxx:468
 TStreamerInfoActions.cxx:469
 TStreamerInfoActions.cxx:470
 TStreamerInfoActions.cxx:471
 TStreamerInfoActions.cxx:472
 TStreamerInfoActions.cxx:473
 TStreamerInfoActions.cxx:474
 TStreamerInfoActions.cxx:475
 TStreamerInfoActions.cxx:476
 TStreamerInfoActions.cxx:477
 TStreamerInfoActions.cxx:478
 TStreamerInfoActions.cxx:479
 TStreamerInfoActions.cxx:480
 TStreamerInfoActions.cxx:481
 TStreamerInfoActions.cxx:482
 TStreamerInfoActions.cxx:483
 TStreamerInfoActions.cxx:484
 TStreamerInfoActions.cxx:485
 TStreamerInfoActions.cxx:486
 TStreamerInfoActions.cxx:487
 TStreamerInfoActions.cxx:488
 TStreamerInfoActions.cxx:489
 TStreamerInfoActions.cxx:490
 TStreamerInfoActions.cxx:491
 TStreamerInfoActions.cxx:492
 TStreamerInfoActions.cxx:493
 TStreamerInfoActions.cxx:494
 TStreamerInfoActions.cxx:495
 TStreamerInfoActions.cxx:496
 TStreamerInfoActions.cxx:497
 TStreamerInfoActions.cxx:498
 TStreamerInfoActions.cxx:499
 TStreamerInfoActions.cxx:500
 TStreamerInfoActions.cxx:501
 TStreamerInfoActions.cxx:502
 TStreamerInfoActions.cxx:503
 TStreamerInfoActions.cxx:504
 TStreamerInfoActions.cxx:505
 TStreamerInfoActions.cxx:506
 TStreamerInfoActions.cxx:507
 TStreamerInfoActions.cxx:508
 TStreamerInfoActions.cxx:509
 TStreamerInfoActions.cxx:510
 TStreamerInfoActions.cxx:511
 TStreamerInfoActions.cxx:512
 TStreamerInfoActions.cxx:513
 TStreamerInfoActions.cxx:514
 TStreamerInfoActions.cxx:515
 TStreamerInfoActions.cxx:516
 TStreamerInfoActions.cxx:517
 TStreamerInfoActions.cxx:518
 TStreamerInfoActions.cxx:519
 TStreamerInfoActions.cxx:520
 TStreamerInfoActions.cxx:521
 TStreamerInfoActions.cxx:522
 TStreamerInfoActions.cxx:523
 TStreamerInfoActions.cxx:524
 TStreamerInfoActions.cxx:525
 TStreamerInfoActions.cxx:526
 TStreamerInfoActions.cxx:527
 TStreamerInfoActions.cxx:528
 TStreamerInfoActions.cxx:529
 TStreamerInfoActions.cxx:530
 TStreamerInfoActions.cxx:531
 TStreamerInfoActions.cxx:532
 TStreamerInfoActions.cxx:533
 TStreamerInfoActions.cxx:534
 TStreamerInfoActions.cxx:535
 TStreamerInfoActions.cxx:536
 TStreamerInfoActions.cxx:537
 TStreamerInfoActions.cxx:538
 TStreamerInfoActions.cxx:539
 TStreamerInfoActions.cxx:540
 TStreamerInfoActions.cxx:541
 TStreamerInfoActions.cxx:542
 TStreamerInfoActions.cxx:543
 TStreamerInfoActions.cxx:544
 TStreamerInfoActions.cxx:545
 TStreamerInfoActions.cxx:546
 TStreamerInfoActions.cxx:547
 TStreamerInfoActions.cxx:548
 TStreamerInfoActions.cxx:549
 TStreamerInfoActions.cxx:550
 TStreamerInfoActions.cxx:551
 TStreamerInfoActions.cxx:552
 TStreamerInfoActions.cxx:553
 TStreamerInfoActions.cxx:554
 TStreamerInfoActions.cxx:555
 TStreamerInfoActions.cxx:556
 TStreamerInfoActions.cxx:557
 TStreamerInfoActions.cxx:558
 TStreamerInfoActions.cxx:559
 TStreamerInfoActions.cxx:560
 TStreamerInfoActions.cxx:561
 TStreamerInfoActions.cxx:562
 TStreamerInfoActions.cxx:563
 TStreamerInfoActions.cxx:564
 TStreamerInfoActions.cxx:565
 TStreamerInfoActions.cxx:566
 TStreamerInfoActions.cxx:567
 TStreamerInfoActions.cxx:568
 TStreamerInfoActions.cxx:569
 TStreamerInfoActions.cxx:570
 TStreamerInfoActions.cxx:571
 TStreamerInfoActions.cxx:572
 TStreamerInfoActions.cxx:573
 TStreamerInfoActions.cxx:574
 TStreamerInfoActions.cxx:575
 TStreamerInfoActions.cxx:576
 TStreamerInfoActions.cxx:577
 TStreamerInfoActions.cxx:578
 TStreamerInfoActions.cxx:579
 TStreamerInfoActions.cxx:580
 TStreamerInfoActions.cxx:581
 TStreamerInfoActions.cxx:582
 TStreamerInfoActions.cxx:583
 TStreamerInfoActions.cxx:584
 TStreamerInfoActions.cxx:585
 TStreamerInfoActions.cxx:586
 TStreamerInfoActions.cxx:587
 TStreamerInfoActions.cxx:588
 TStreamerInfoActions.cxx:589
 TStreamerInfoActions.cxx:590
 TStreamerInfoActions.cxx:591
 TStreamerInfoActions.cxx:592
 TStreamerInfoActions.cxx:593
 TStreamerInfoActions.cxx:594
 TStreamerInfoActions.cxx:595
 TStreamerInfoActions.cxx:596
 TStreamerInfoActions.cxx:597
 TStreamerInfoActions.cxx:598
 TStreamerInfoActions.cxx:599
 TStreamerInfoActions.cxx:600
 TStreamerInfoActions.cxx:601
 TStreamerInfoActions.cxx:602
 TStreamerInfoActions.cxx:603
 TStreamerInfoActions.cxx:604
 TStreamerInfoActions.cxx:605
 TStreamerInfoActions.cxx:606
 TStreamerInfoActions.cxx:607
 TStreamerInfoActions.cxx:608
 TStreamerInfoActions.cxx:609
 TStreamerInfoActions.cxx:610
 TStreamerInfoActions.cxx:611
 TStreamerInfoActions.cxx:612
 TStreamerInfoActions.cxx:613
 TStreamerInfoActions.cxx:614
 TStreamerInfoActions.cxx:615
 TStreamerInfoActions.cxx:616
 TStreamerInfoActions.cxx:617
 TStreamerInfoActions.cxx:618
 TStreamerInfoActions.cxx:619
 TStreamerInfoActions.cxx:620
 TStreamerInfoActions.cxx:621
 TStreamerInfoActions.cxx:622
 TStreamerInfoActions.cxx:623
 TStreamerInfoActions.cxx:624
 TStreamerInfoActions.cxx:625
 TStreamerInfoActions.cxx:626
 TStreamerInfoActions.cxx:627
 TStreamerInfoActions.cxx:628
 TStreamerInfoActions.cxx:629
 TStreamerInfoActions.cxx:630
 TStreamerInfoActions.cxx:631
 TStreamerInfoActions.cxx:632
 TStreamerInfoActions.cxx:633
 TStreamerInfoActions.cxx:634
 TStreamerInfoActions.cxx:635
 TStreamerInfoActions.cxx:636
 TStreamerInfoActions.cxx:637
 TStreamerInfoActions.cxx:638
 TStreamerInfoActions.cxx:639
 TStreamerInfoActions.cxx:640
 TStreamerInfoActions.cxx:641
 TStreamerInfoActions.cxx:642
 TStreamerInfoActions.cxx:643
 TStreamerInfoActions.cxx:644
 TStreamerInfoActions.cxx:645
 TStreamerInfoActions.cxx:646
 TStreamerInfoActions.cxx:647
 TStreamerInfoActions.cxx:648
 TStreamerInfoActions.cxx:649
 TStreamerInfoActions.cxx:650
 TStreamerInfoActions.cxx:651
 TStreamerInfoActions.cxx:652
 TStreamerInfoActions.cxx:653
 TStreamerInfoActions.cxx:654
 TStreamerInfoActions.cxx:655
 TStreamerInfoActions.cxx:656
 TStreamerInfoActions.cxx:657
 TStreamerInfoActions.cxx:658
 TStreamerInfoActions.cxx:659
 TStreamerInfoActions.cxx:660
 TStreamerInfoActions.cxx:661
 TStreamerInfoActions.cxx:662
 TStreamerInfoActions.cxx:663
 TStreamerInfoActions.cxx:664
 TStreamerInfoActions.cxx:665
 TStreamerInfoActions.cxx:666
 TStreamerInfoActions.cxx:667
 TStreamerInfoActions.cxx:668
 TStreamerInfoActions.cxx:669
 TStreamerInfoActions.cxx:670
 TStreamerInfoActions.cxx:671
 TStreamerInfoActions.cxx:672
 TStreamerInfoActions.cxx:673
 TStreamerInfoActions.cxx:674
 TStreamerInfoActions.cxx:675
 TStreamerInfoActions.cxx:676
 TStreamerInfoActions.cxx:677
 TStreamerInfoActions.cxx:678
 TStreamerInfoActions.cxx:679
 TStreamerInfoActions.cxx:680
 TStreamerInfoActions.cxx:681
 TStreamerInfoActions.cxx:682
 TStreamerInfoActions.cxx:683
 TStreamerInfoActions.cxx:684
 TStreamerInfoActions.cxx:685
 TStreamerInfoActions.cxx:686
 TStreamerInfoActions.cxx:687
 TStreamerInfoActions.cxx:688
 TStreamerInfoActions.cxx:689
 TStreamerInfoActions.cxx:690
 TStreamerInfoActions.cxx:691
 TStreamerInfoActions.cxx:692
 TStreamerInfoActions.cxx:693
 TStreamerInfoActions.cxx:694
 TStreamerInfoActions.cxx:695
 TStreamerInfoActions.cxx:696
 TStreamerInfoActions.cxx:697
 TStreamerInfoActions.cxx:698
 TStreamerInfoActions.cxx:699
 TStreamerInfoActions.cxx:700
 TStreamerInfoActions.cxx:701
 TStreamerInfoActions.cxx:702
 TStreamerInfoActions.cxx:703
 TStreamerInfoActions.cxx:704
 TStreamerInfoActions.cxx:705
 TStreamerInfoActions.cxx:706
 TStreamerInfoActions.cxx:707
 TStreamerInfoActions.cxx:708
 TStreamerInfoActions.cxx:709
 TStreamerInfoActions.cxx:710
 TStreamerInfoActions.cxx:711
 TStreamerInfoActions.cxx:712
 TStreamerInfoActions.cxx:713
 TStreamerInfoActions.cxx:714
 TStreamerInfoActions.cxx:715
 TStreamerInfoActions.cxx:716
 TStreamerInfoActions.cxx:717
 TStreamerInfoActions.cxx:718
 TStreamerInfoActions.cxx:719
 TStreamerInfoActions.cxx:720
 TStreamerInfoActions.cxx:721
 TStreamerInfoActions.cxx:722
 TStreamerInfoActions.cxx:723
 TStreamerInfoActions.cxx:724
 TStreamerInfoActions.cxx:725
 TStreamerInfoActions.cxx:726
 TStreamerInfoActions.cxx:727
 TStreamerInfoActions.cxx:728
 TStreamerInfoActions.cxx:729
 TStreamerInfoActions.cxx:730
 TStreamerInfoActions.cxx:731
 TStreamerInfoActions.cxx:732
 TStreamerInfoActions.cxx:733
 TStreamerInfoActions.cxx:734
 TStreamerInfoActions.cxx:735
 TStreamerInfoActions.cxx:736
 TStreamerInfoActions.cxx:737
 TStreamerInfoActions.cxx:738
 TStreamerInfoActions.cxx:739
 TStreamerInfoActions.cxx:740
 TStreamerInfoActions.cxx:741
 TStreamerInfoActions.cxx:742
 TStreamerInfoActions.cxx:743
 TStreamerInfoActions.cxx:744
 TStreamerInfoActions.cxx:745
 TStreamerInfoActions.cxx:746
 TStreamerInfoActions.cxx:747
 TStreamerInfoActions.cxx:748
 TStreamerInfoActions.cxx:749
 TStreamerInfoActions.cxx:750
 TStreamerInfoActions.cxx:751
 TStreamerInfoActions.cxx:752
 TStreamerInfoActions.cxx:753
 TStreamerInfoActions.cxx:754
 TStreamerInfoActions.cxx:755
 TStreamerInfoActions.cxx:756
 TStreamerInfoActions.cxx:757
 TStreamerInfoActions.cxx:758
 TStreamerInfoActions.cxx:759
 TStreamerInfoActions.cxx:760
 TStreamerInfoActions.cxx:761
 TStreamerInfoActions.cxx:762
 TStreamerInfoActions.cxx:763
 TStreamerInfoActions.cxx:764
 TStreamerInfoActions.cxx:765
 TStreamerInfoActions.cxx:766
 TStreamerInfoActions.cxx:767
 TStreamerInfoActions.cxx:768
 TStreamerInfoActions.cxx:769
 TStreamerInfoActions.cxx:770
 TStreamerInfoActions.cxx:771
 TStreamerInfoActions.cxx:772
 TStreamerInfoActions.cxx:773
 TStreamerInfoActions.cxx:774
 TStreamerInfoActions.cxx:775
 TStreamerInfoActions.cxx:776
 TStreamerInfoActions.cxx:777
 TStreamerInfoActions.cxx:778
 TStreamerInfoActions.cxx:779
 TStreamerInfoActions.cxx:780
 TStreamerInfoActions.cxx:781
 TStreamerInfoActions.cxx:782
 TStreamerInfoActions.cxx:783
 TStreamerInfoActions.cxx:784
 TStreamerInfoActions.cxx:785
 TStreamerInfoActions.cxx:786
 TStreamerInfoActions.cxx:787
 TStreamerInfoActions.cxx:788
 TStreamerInfoActions.cxx:789
 TStreamerInfoActions.cxx:790
 TStreamerInfoActions.cxx:791
 TStreamerInfoActions.cxx:792
 TStreamerInfoActions.cxx:793
 TStreamerInfoActions.cxx:794
 TStreamerInfoActions.cxx:795
 TStreamerInfoActions.cxx:796
 TStreamerInfoActions.cxx:797
 TStreamerInfoActions.cxx:798
 TStreamerInfoActions.cxx:799
 TStreamerInfoActions.cxx:800
 TStreamerInfoActions.cxx:801
 TStreamerInfoActions.cxx:802
 TStreamerInfoActions.cxx:803
 TStreamerInfoActions.cxx:804
 TStreamerInfoActions.cxx:805
 TStreamerInfoActions.cxx:806
 TStreamerInfoActions.cxx:807
 TStreamerInfoActions.cxx:808
 TStreamerInfoActions.cxx:809
 TStreamerInfoActions.cxx:810
 TStreamerInfoActions.cxx:811
 TStreamerInfoActions.cxx:812
 TStreamerInfoActions.cxx:813
 TStreamerInfoActions.cxx:814
 TStreamerInfoActions.cxx:815
 TStreamerInfoActions.cxx:816
 TStreamerInfoActions.cxx:817
 TStreamerInfoActions.cxx:818
 TStreamerInfoActions.cxx:819
 TStreamerInfoActions.cxx:820
 TStreamerInfoActions.cxx:821
 TStreamerInfoActions.cxx:822
 TStreamerInfoActions.cxx:823
 TStreamerInfoActions.cxx:824
 TStreamerInfoActions.cxx:825
 TStreamerInfoActions.cxx:826
 TStreamerInfoActions.cxx:827
 TStreamerInfoActions.cxx:828
 TStreamerInfoActions.cxx:829
 TStreamerInfoActions.cxx:830
 TStreamerInfoActions.cxx:831
 TStreamerInfoActions.cxx:832
 TStreamerInfoActions.cxx:833
 TStreamerInfoActions.cxx:834
 TStreamerInfoActions.cxx:835
 TStreamerInfoActions.cxx:836
 TStreamerInfoActions.cxx:837
 TStreamerInfoActions.cxx:838
 TStreamerInfoActions.cxx:839
 TStreamerInfoActions.cxx:840
 TStreamerInfoActions.cxx:841
 TStreamerInfoActions.cxx:842
 TStreamerInfoActions.cxx:843
 TStreamerInfoActions.cxx:844
 TStreamerInfoActions.cxx:845
 TStreamerInfoActions.cxx:846
 TStreamerInfoActions.cxx:847
 TStreamerInfoActions.cxx:848
 TStreamerInfoActions.cxx:849
 TStreamerInfoActions.cxx:850
 TStreamerInfoActions.cxx:851
 TStreamerInfoActions.cxx:852
 TStreamerInfoActions.cxx:853
 TStreamerInfoActions.cxx:854
 TStreamerInfoActions.cxx:855
 TStreamerInfoActions.cxx:856
 TStreamerInfoActions.cxx:857
 TStreamerInfoActions.cxx:858
 TStreamerInfoActions.cxx:859
 TStreamerInfoActions.cxx:860
 TStreamerInfoActions.cxx:861
 TStreamerInfoActions.cxx:862
 TStreamerInfoActions.cxx:863
 TStreamerInfoActions.cxx:864
 TStreamerInfoActions.cxx:865
 TStreamerInfoActions.cxx:866
 TStreamerInfoActions.cxx:867
 TStreamerInfoActions.cxx:868
 TStreamerInfoActions.cxx:869
 TStreamerInfoActions.cxx:870
 TStreamerInfoActions.cxx:871
 TStreamerInfoActions.cxx:872
 TStreamerInfoActions.cxx:873
 TStreamerInfoActions.cxx:874
 TStreamerInfoActions.cxx:875
 TStreamerInfoActions.cxx:876
 TStreamerInfoActions.cxx:877
 TStreamerInfoActions.cxx:878
 TStreamerInfoActions.cxx:879
 TStreamerInfoActions.cxx:880
 TStreamerInfoActions.cxx:881
 TStreamerInfoActions.cxx:882
 TStreamerInfoActions.cxx:883
 TStreamerInfoActions.cxx:884
 TStreamerInfoActions.cxx:885
 TStreamerInfoActions.cxx:886
 TStreamerInfoActions.cxx:887
 TStreamerInfoActions.cxx:888
 TStreamerInfoActions.cxx:889
 TStreamerInfoActions.cxx:890
 TStreamerInfoActions.cxx:891
 TStreamerInfoActions.cxx:892
 TStreamerInfoActions.cxx:893
 TStreamerInfoActions.cxx:894
 TStreamerInfoActions.cxx:895
 TStreamerInfoActions.cxx:896
 TStreamerInfoActions.cxx:897
 TStreamerInfoActions.cxx:898
 TStreamerInfoActions.cxx:899
 TStreamerInfoActions.cxx:900
 TStreamerInfoActions.cxx:901
 TStreamerInfoActions.cxx:902
 TStreamerInfoActions.cxx:903
 TStreamerInfoActions.cxx:904
 TStreamerInfoActions.cxx:905
 TStreamerInfoActions.cxx:906
 TStreamerInfoActions.cxx:907
 TStreamerInfoActions.cxx:908
 TStreamerInfoActions.cxx:909
 TStreamerInfoActions.cxx:910
 TStreamerInfoActions.cxx:911
 TStreamerInfoActions.cxx:912
 TStreamerInfoActions.cxx:913
 TStreamerInfoActions.cxx:914
 TStreamerInfoActions.cxx:915
 TStreamerInfoActions.cxx:916
 TStreamerInfoActions.cxx:917
 TStreamerInfoActions.cxx:918
 TStreamerInfoActions.cxx:919
 TStreamerInfoActions.cxx:920
 TStreamerInfoActions.cxx:921
 TStreamerInfoActions.cxx:922
 TStreamerInfoActions.cxx:923
 TStreamerInfoActions.cxx:924
 TStreamerInfoActions.cxx:925
 TStreamerInfoActions.cxx:926
 TStreamerInfoActions.cxx:927
 TStreamerInfoActions.cxx:928
 TStreamerInfoActions.cxx:929
 TStreamerInfoActions.cxx:930
 TStreamerInfoActions.cxx:931
 TStreamerInfoActions.cxx:932
 TStreamerInfoActions.cxx:933
 TStreamerInfoActions.cxx:934
 TStreamerInfoActions.cxx:935
 TStreamerInfoActions.cxx:936
 TStreamerInfoActions.cxx:937
 TStreamerInfoActions.cxx:938
 TStreamerInfoActions.cxx:939
 TStreamerInfoActions.cxx:940
 TStreamerInfoActions.cxx:941
 TStreamerInfoActions.cxx:942
 TStreamerInfoActions.cxx:943
 TStreamerInfoActions.cxx:944
 TStreamerInfoActions.cxx:945
 TStreamerInfoActions.cxx:946
 TStreamerInfoActions.cxx:947
 TStreamerInfoActions.cxx:948
 TStreamerInfoActions.cxx:949
 TStreamerInfoActions.cxx:950
 TStreamerInfoActions.cxx:951
 TStreamerInfoActions.cxx:952
 TStreamerInfoActions.cxx:953
 TStreamerInfoActions.cxx:954
 TStreamerInfoActions.cxx:955
 TStreamerInfoActions.cxx:956
 TStreamerInfoActions.cxx:957
 TStreamerInfoActions.cxx:958
 TStreamerInfoActions.cxx:959
 TStreamerInfoActions.cxx:960
 TStreamerInfoActions.cxx:961
 TStreamerInfoActions.cxx:962
 TStreamerInfoActions.cxx:963
 TStreamerInfoActions.cxx:964
 TStreamerInfoActions.cxx:965
 TStreamerInfoActions.cxx:966
 TStreamerInfoActions.cxx:967
 TStreamerInfoActions.cxx:968
 TStreamerInfoActions.cxx:969
 TStreamerInfoActions.cxx:970
 TStreamerInfoActions.cxx:971
 TStreamerInfoActions.cxx:972
 TStreamerInfoActions.cxx:973
 TStreamerInfoActions.cxx:974
 TStreamerInfoActions.cxx:975
 TStreamerInfoActions.cxx:976
 TStreamerInfoActions.cxx:977
 TStreamerInfoActions.cxx:978
 TStreamerInfoActions.cxx:979
 TStreamerInfoActions.cxx:980
 TStreamerInfoActions.cxx:981
 TStreamerInfoActions.cxx:982
 TStreamerInfoActions.cxx:983
 TStreamerInfoActions.cxx:984
 TStreamerInfoActions.cxx:985
 TStreamerInfoActions.cxx:986
 TStreamerInfoActions.cxx:987
 TStreamerInfoActions.cxx:988
 TStreamerInfoActions.cxx:989
 TStreamerInfoActions.cxx:990
 TStreamerInfoActions.cxx:991
 TStreamerInfoActions.cxx:992
 TStreamerInfoActions.cxx:993
 TStreamerInfoActions.cxx:994
 TStreamerInfoActions.cxx:995
 TStreamerInfoActions.cxx:996
 TStreamerInfoActions.cxx:997
 TStreamerInfoActions.cxx:998
 TStreamerInfoActions.cxx:999
 TStreamerInfoActions.cxx:1000
 TStreamerInfoActions.cxx:1001
 TStreamerInfoActions.cxx:1002
 TStreamerInfoActions.cxx:1003
 TStreamerInfoActions.cxx:1004
 TStreamerInfoActions.cxx:1005
 TStreamerInfoActions.cxx:1006
 TStreamerInfoActions.cxx:1007
 TStreamerInfoActions.cxx:1008
 TStreamerInfoActions.cxx:1009
 TStreamerInfoActions.cxx:1010
 TStreamerInfoActions.cxx:1011
 TStreamerInfoActions.cxx:1012
 TStreamerInfoActions.cxx:1013
 TStreamerInfoActions.cxx:1014
 TStreamerInfoActions.cxx:1015
 TStreamerInfoActions.cxx:1016
 TStreamerInfoActions.cxx:1017
 TStreamerInfoActions.cxx:1018
 TStreamerInfoActions.cxx:1019
 TStreamerInfoActions.cxx:1020
 TStreamerInfoActions.cxx:1021
 TStreamerInfoActions.cxx:1022
 TStreamerInfoActions.cxx:1023
 TStreamerInfoActions.cxx:1024
 TStreamerInfoActions.cxx:1025
 TStreamerInfoActions.cxx:1026
 TStreamerInfoActions.cxx:1027
 TStreamerInfoActions.cxx:1028
 TStreamerInfoActions.cxx:1029
 TStreamerInfoActions.cxx:1030
 TStreamerInfoActions.cxx:1031
 TStreamerInfoActions.cxx:1032
 TStreamerInfoActions.cxx:1033
 TStreamerInfoActions.cxx:1034
 TStreamerInfoActions.cxx:1035
 TStreamerInfoActions.cxx:1036
 TStreamerInfoActions.cxx:1037
 TStreamerInfoActions.cxx:1038
 TStreamerInfoActions.cxx:1039
 TStreamerInfoActions.cxx:1040
 TStreamerInfoActions.cxx:1041
 TStreamerInfoActions.cxx:1042
 TStreamerInfoActions.cxx:1043
 TStreamerInfoActions.cxx:1044
 TStreamerInfoActions.cxx:1045
 TStreamerInfoActions.cxx:1046
 TStreamerInfoActions.cxx:1047
 TStreamerInfoActions.cxx:1048
 TStreamerInfoActions.cxx:1049
 TStreamerInfoActions.cxx:1050
 TStreamerInfoActions.cxx:1051
 TStreamerInfoActions.cxx:1052
 TStreamerInfoActions.cxx:1053
 TStreamerInfoActions.cxx:1054
 TStreamerInfoActions.cxx:1055
 TStreamerInfoActions.cxx:1056
 TStreamerInfoActions.cxx:1057
 TStreamerInfoActions.cxx:1058
 TStreamerInfoActions.cxx:1059
 TStreamerInfoActions.cxx:1060
 TStreamerInfoActions.cxx:1061
 TStreamerInfoActions.cxx:1062
 TStreamerInfoActions.cxx:1063
 TStreamerInfoActions.cxx:1064
 TStreamerInfoActions.cxx:1065
 TStreamerInfoActions.cxx:1066
 TStreamerInfoActions.cxx:1067
 TStreamerInfoActions.cxx:1068
 TStreamerInfoActions.cxx:1069
 TStreamerInfoActions.cxx:1070
 TStreamerInfoActions.cxx:1071
 TStreamerInfoActions.cxx:1072
 TStreamerInfoActions.cxx:1073
 TStreamerInfoActions.cxx:1074
 TStreamerInfoActions.cxx:1075
 TStreamerInfoActions.cxx:1076
 TStreamerInfoActions.cxx:1077
 TStreamerInfoActions.cxx:1078
 TStreamerInfoActions.cxx:1079
 TStreamerInfoActions.cxx:1080
 TStreamerInfoActions.cxx:1081
 TStreamerInfoActions.cxx:1082
 TStreamerInfoActions.cxx:1083
 TStreamerInfoActions.cxx:1084
 TStreamerInfoActions.cxx:1085
 TStreamerInfoActions.cxx:1086
 TStreamerInfoActions.cxx:1087
 TStreamerInfoActions.cxx:1088
 TStreamerInfoActions.cxx:1089
 TStreamerInfoActions.cxx:1090
 TStreamerInfoActions.cxx:1091
 TStreamerInfoActions.cxx:1092
 TStreamerInfoActions.cxx:1093
 TStreamerInfoActions.cxx:1094
 TStreamerInfoActions.cxx:1095
 TStreamerInfoActions.cxx:1096
 TStreamerInfoActions.cxx:1097
 TStreamerInfoActions.cxx:1098
 TStreamerInfoActions.cxx:1099
 TStreamerInfoActions.cxx:1100
 TStreamerInfoActions.cxx:1101
 TStreamerInfoActions.cxx:1102
 TStreamerInfoActions.cxx:1103
 TStreamerInfoActions.cxx:1104
 TStreamerInfoActions.cxx:1105
 TStreamerInfoActions.cxx:1106
 TStreamerInfoActions.cxx:1107
 TStreamerInfoActions.cxx:1108
 TStreamerInfoActions.cxx:1109
 TStreamerInfoActions.cxx:1110
 TStreamerInfoActions.cxx:1111
 TStreamerInfoActions.cxx:1112
 TStreamerInfoActions.cxx:1113
 TStreamerInfoActions.cxx:1114
 TStreamerInfoActions.cxx:1115
 TStreamerInfoActions.cxx:1116
 TStreamerInfoActions.cxx:1117
 TStreamerInfoActions.cxx:1118
 TStreamerInfoActions.cxx:1119
 TStreamerInfoActions.cxx:1120
 TStreamerInfoActions.cxx:1121
 TStreamerInfoActions.cxx:1122
 TStreamerInfoActions.cxx:1123
 TStreamerInfoActions.cxx:1124
 TStreamerInfoActions.cxx:1125
 TStreamerInfoActions.cxx:1126
 TStreamerInfoActions.cxx:1127
 TStreamerInfoActions.cxx:1128
 TStreamerInfoActions.cxx:1129
 TStreamerInfoActions.cxx:1130
 TStreamerInfoActions.cxx:1131
 TStreamerInfoActions.cxx:1132
 TStreamerInfoActions.cxx:1133
 TStreamerInfoActions.cxx:1134
 TStreamerInfoActions.cxx:1135
 TStreamerInfoActions.cxx:1136
 TStreamerInfoActions.cxx:1137
 TStreamerInfoActions.cxx:1138
 TStreamerInfoActions.cxx:1139
 TStreamerInfoActions.cxx:1140
 TStreamerInfoActions.cxx:1141
 TStreamerInfoActions.cxx:1142
 TStreamerInfoActions.cxx:1143
 TStreamerInfoActions.cxx:1144
 TStreamerInfoActions.cxx:1145
 TStreamerInfoActions.cxx:1146
 TStreamerInfoActions.cxx:1147
 TStreamerInfoActions.cxx:1148
 TStreamerInfoActions.cxx:1149
 TStreamerInfoActions.cxx:1150
 TStreamerInfoActions.cxx:1151
 TStreamerInfoActions.cxx:1152
 TStreamerInfoActions.cxx:1153
 TStreamerInfoActions.cxx:1154
 TStreamerInfoActions.cxx:1155
 TStreamerInfoActions.cxx:1156
 TStreamerInfoActions.cxx:1157
 TStreamerInfoActions.cxx:1158
 TStreamerInfoActions.cxx:1159
 TStreamerInfoActions.cxx:1160
 TStreamerInfoActions.cxx:1161
 TStreamerInfoActions.cxx:1162
 TStreamerInfoActions.cxx:1163
 TStreamerInfoActions.cxx:1164
 TStreamerInfoActions.cxx:1165
 TStreamerInfoActions.cxx:1166
 TStreamerInfoActions.cxx:1167
 TStreamerInfoActions.cxx:1168
 TStreamerInfoActions.cxx:1169
 TStreamerInfoActions.cxx:1170
 TStreamerInfoActions.cxx:1171
 TStreamerInfoActions.cxx:1172
 TStreamerInfoActions.cxx:1173
 TStreamerInfoActions.cxx:1174
 TStreamerInfoActions.cxx:1175
 TStreamerInfoActions.cxx:1176
 TStreamerInfoActions.cxx:1177
 TStreamerInfoActions.cxx:1178
 TStreamerInfoActions.cxx:1179
 TStreamerInfoActions.cxx:1180
 TStreamerInfoActions.cxx:1181
 TStreamerInfoActions.cxx:1182
 TStreamerInfoActions.cxx:1183
 TStreamerInfoActions.cxx:1184
 TStreamerInfoActions.cxx:1185
 TStreamerInfoActions.cxx:1186
 TStreamerInfoActions.cxx:1187
 TStreamerInfoActions.cxx:1188
 TStreamerInfoActions.cxx:1189
 TStreamerInfoActions.cxx:1190
 TStreamerInfoActions.cxx:1191
 TStreamerInfoActions.cxx:1192
 TStreamerInfoActions.cxx:1193
 TStreamerInfoActions.cxx:1194
 TStreamerInfoActions.cxx:1195
 TStreamerInfoActions.cxx:1196
 TStreamerInfoActions.cxx:1197
 TStreamerInfoActions.cxx:1198
 TStreamerInfoActions.cxx:1199
 TStreamerInfoActions.cxx:1200
 TStreamerInfoActions.cxx:1201
 TStreamerInfoActions.cxx:1202
 TStreamerInfoActions.cxx:1203
 TStreamerInfoActions.cxx:1204
 TStreamerInfoActions.cxx:1205
 TStreamerInfoActions.cxx:1206
 TStreamerInfoActions.cxx:1207
 TStreamerInfoActions.cxx:1208
 TStreamerInfoActions.cxx:1209
 TStreamerInfoActions.cxx:1210
 TStreamerInfoActions.cxx:1211
 TStreamerInfoActions.cxx:1212
 TStreamerInfoActions.cxx:1213
 TStreamerInfoActions.cxx:1214
 TStreamerInfoActions.cxx:1215
 TStreamerInfoActions.cxx:1216
 TStreamerInfoActions.cxx:1217
 TStreamerInfoActions.cxx:1218
 TStreamerInfoActions.cxx:1219
 TStreamerInfoActions.cxx:1220
 TStreamerInfoActions.cxx:1221
 TStreamerInfoActions.cxx:1222
 TStreamerInfoActions.cxx:1223
 TStreamerInfoActions.cxx:1224
 TStreamerInfoActions.cxx:1225
 TStreamerInfoActions.cxx:1226
 TStreamerInfoActions.cxx:1227
 TStreamerInfoActions.cxx:1228
 TStreamerInfoActions.cxx:1229
 TStreamerInfoActions.cxx:1230
 TStreamerInfoActions.cxx:1231
 TStreamerInfoActions.cxx:1232
 TStreamerInfoActions.cxx:1233
 TStreamerInfoActions.cxx:1234
 TStreamerInfoActions.cxx:1235
 TStreamerInfoActions.cxx:1236
 TStreamerInfoActions.cxx:1237
 TStreamerInfoActions.cxx:1238
 TStreamerInfoActions.cxx:1239
 TStreamerInfoActions.cxx:1240
 TStreamerInfoActions.cxx:1241
 TStreamerInfoActions.cxx:1242
 TStreamerInfoActions.cxx:1243
 TStreamerInfoActions.cxx:1244
 TStreamerInfoActions.cxx:1245
 TStreamerInfoActions.cxx:1246
 TStreamerInfoActions.cxx:1247
 TStreamerInfoActions.cxx:1248
 TStreamerInfoActions.cxx:1249
 TStreamerInfoActions.cxx:1250
 TStreamerInfoActions.cxx:1251
 TStreamerInfoActions.cxx:1252
 TStreamerInfoActions.cxx:1253
 TStreamerInfoActions.cxx:1254
 TStreamerInfoActions.cxx:1255
 TStreamerInfoActions.cxx:1256
 TStreamerInfoActions.cxx:1257
 TStreamerInfoActions.cxx:1258
 TStreamerInfoActions.cxx:1259
 TStreamerInfoActions.cxx:1260
 TStreamerInfoActions.cxx:1261
 TStreamerInfoActions.cxx:1262
 TStreamerInfoActions.cxx:1263
 TStreamerInfoActions.cxx:1264
 TStreamerInfoActions.cxx:1265
 TStreamerInfoActions.cxx:1266
 TStreamerInfoActions.cxx:1267
 TStreamerInfoActions.cxx:1268
 TStreamerInfoActions.cxx:1269
 TStreamerInfoActions.cxx:1270
 TStreamerInfoActions.cxx:1271
 TStreamerInfoActions.cxx:1272
 TStreamerInfoActions.cxx:1273
 TStreamerInfoActions.cxx:1274
 TStreamerInfoActions.cxx:1275
 TStreamerInfoActions.cxx:1276
 TStreamerInfoActions.cxx:1277
 TStreamerInfoActions.cxx:1278
 TStreamerInfoActions.cxx:1279
 TStreamerInfoActions.cxx:1280
 TStreamerInfoActions.cxx:1281
 TStreamerInfoActions.cxx:1282
 TStreamerInfoActions.cxx:1283
 TStreamerInfoActions.cxx:1284
 TStreamerInfoActions.cxx:1285
 TStreamerInfoActions.cxx:1286
 TStreamerInfoActions.cxx:1287
 TStreamerInfoActions.cxx:1288
 TStreamerInfoActions.cxx:1289
 TStreamerInfoActions.cxx:1290
 TStreamerInfoActions.cxx:1291
 TStreamerInfoActions.cxx:1292
 TStreamerInfoActions.cxx:1293
 TStreamerInfoActions.cxx:1294
 TStreamerInfoActions.cxx:1295
 TStreamerInfoActions.cxx:1296
 TStreamerInfoActions.cxx:1297
 TStreamerInfoActions.cxx:1298
 TStreamerInfoActions.cxx:1299
 TStreamerInfoActions.cxx:1300
 TStreamerInfoActions.cxx:1301
 TStreamerInfoActions.cxx:1302
 TStreamerInfoActions.cxx:1303
 TStreamerInfoActions.cxx:1304
 TStreamerInfoActions.cxx:1305
 TStreamerInfoActions.cxx:1306
 TStreamerInfoActions.cxx:1307
 TStreamerInfoActions.cxx:1308
 TStreamerInfoActions.cxx:1309
 TStreamerInfoActions.cxx:1310
 TStreamerInfoActions.cxx:1311
 TStreamerInfoActions.cxx:1312
 TStreamerInfoActions.cxx:1313
 TStreamerInfoActions.cxx:1314
 TStreamerInfoActions.cxx:1315
 TStreamerInfoActions.cxx:1316
 TStreamerInfoActions.cxx:1317
 TStreamerInfoActions.cxx:1318
 TStreamerInfoActions.cxx:1319
 TStreamerInfoActions.cxx:1320
 TStreamerInfoActions.cxx:1321
 TStreamerInfoActions.cxx:1322
 TStreamerInfoActions.cxx:1323
 TStreamerInfoActions.cxx:1324
 TStreamerInfoActions.cxx:1325
 TStreamerInfoActions.cxx:1326
 TStreamerInfoActions.cxx:1327
 TStreamerInfoActions.cxx:1328
 TStreamerInfoActions.cxx:1329
 TStreamerInfoActions.cxx:1330
 TStreamerInfoActions.cxx:1331
 TStreamerInfoActions.cxx:1332
 TStreamerInfoActions.cxx:1333
 TStreamerInfoActions.cxx:1334
 TStreamerInfoActions.cxx:1335
 TStreamerInfoActions.cxx:1336
 TStreamerInfoActions.cxx:1337
 TStreamerInfoActions.cxx:1338
 TStreamerInfoActions.cxx:1339
 TStreamerInfoActions.cxx:1340
 TStreamerInfoActions.cxx:1341
 TStreamerInfoActions.cxx:1342
 TStreamerInfoActions.cxx:1343
 TStreamerInfoActions.cxx:1344
 TStreamerInfoActions.cxx:1345
 TStreamerInfoActions.cxx:1346
 TStreamerInfoActions.cxx:1347
 TStreamerInfoActions.cxx:1348
 TStreamerInfoActions.cxx:1349
 TStreamerInfoActions.cxx:1350
 TStreamerInfoActions.cxx:1351
 TStreamerInfoActions.cxx:1352
 TStreamerInfoActions.cxx:1353
 TStreamerInfoActions.cxx:1354
 TStreamerInfoActions.cxx:1355
 TStreamerInfoActions.cxx:1356
 TStreamerInfoActions.cxx:1357
 TStreamerInfoActions.cxx:1358
 TStreamerInfoActions.cxx:1359
 TStreamerInfoActions.cxx:1360
 TStreamerInfoActions.cxx:1361
 TStreamerInfoActions.cxx:1362
 TStreamerInfoActions.cxx:1363
 TStreamerInfoActions.cxx:1364
 TStreamerInfoActions.cxx:1365
 TStreamerInfoActions.cxx:1366
 TStreamerInfoActions.cxx:1367
 TStreamerInfoActions.cxx:1368
 TStreamerInfoActions.cxx:1369
 TStreamerInfoActions.cxx:1370
 TStreamerInfoActions.cxx:1371
 TStreamerInfoActions.cxx:1372
 TStreamerInfoActions.cxx:1373
 TStreamerInfoActions.cxx:1374
 TStreamerInfoActions.cxx:1375
 TStreamerInfoActions.cxx:1376
 TStreamerInfoActions.cxx:1377
 TStreamerInfoActions.cxx:1378
 TStreamerInfoActions.cxx:1379
 TStreamerInfoActions.cxx:1380
 TStreamerInfoActions.cxx:1381
 TStreamerInfoActions.cxx:1382
 TStreamerInfoActions.cxx:1383
 TStreamerInfoActions.cxx:1384
 TStreamerInfoActions.cxx:1385
 TStreamerInfoActions.cxx:1386
 TStreamerInfoActions.cxx:1387
 TStreamerInfoActions.cxx:1388
 TStreamerInfoActions.cxx:1389
 TStreamerInfoActions.cxx:1390
 TStreamerInfoActions.cxx:1391
 TStreamerInfoActions.cxx:1392
 TStreamerInfoActions.cxx:1393
 TStreamerInfoActions.cxx:1394
 TStreamerInfoActions.cxx:1395
 TStreamerInfoActions.cxx:1396
 TStreamerInfoActions.cxx:1397
 TStreamerInfoActions.cxx:1398
 TStreamerInfoActions.cxx:1399
 TStreamerInfoActions.cxx:1400
 TStreamerInfoActions.cxx:1401
 TStreamerInfoActions.cxx:1402
 TStreamerInfoActions.cxx:1403
 TStreamerInfoActions.cxx:1404
 TStreamerInfoActions.cxx:1405
 TStreamerInfoActions.cxx:1406
 TStreamerInfoActions.cxx:1407
 TStreamerInfoActions.cxx:1408
 TStreamerInfoActions.cxx:1409
 TStreamerInfoActions.cxx:1410
 TStreamerInfoActions.cxx:1411
 TStreamerInfoActions.cxx:1412
 TStreamerInfoActions.cxx:1413
 TStreamerInfoActions.cxx:1414
 TStreamerInfoActions.cxx:1415
 TStreamerInfoActions.cxx:1416
 TStreamerInfoActions.cxx:1417
 TStreamerInfoActions.cxx:1418
 TStreamerInfoActions.cxx:1419
 TStreamerInfoActions.cxx:1420
 TStreamerInfoActions.cxx:1421
 TStreamerInfoActions.cxx:1422
 TStreamerInfoActions.cxx:1423
 TStreamerInfoActions.cxx:1424
 TStreamerInfoActions.cxx:1425
 TStreamerInfoActions.cxx:1426
 TStreamerInfoActions.cxx:1427
 TStreamerInfoActions.cxx:1428
 TStreamerInfoActions.cxx:1429
 TStreamerInfoActions.cxx:1430
 TStreamerInfoActions.cxx:1431
 TStreamerInfoActions.cxx:1432
 TStreamerInfoActions.cxx:1433
 TStreamerInfoActions.cxx:1434
 TStreamerInfoActions.cxx:1435
 TStreamerInfoActions.cxx:1436
 TStreamerInfoActions.cxx:1437
 TStreamerInfoActions.cxx:1438
 TStreamerInfoActions.cxx:1439
 TStreamerInfoActions.cxx:1440
 TStreamerInfoActions.cxx:1441
 TStreamerInfoActions.cxx:1442
 TStreamerInfoActions.cxx:1443
 TStreamerInfoActions.cxx:1444
 TStreamerInfoActions.cxx:1445
 TStreamerInfoActions.cxx:1446
 TStreamerInfoActions.cxx:1447
 TStreamerInfoActions.cxx:1448
 TStreamerInfoActions.cxx:1449
 TStreamerInfoActions.cxx:1450
 TStreamerInfoActions.cxx:1451
 TStreamerInfoActions.cxx:1452
 TStreamerInfoActions.cxx:1453
 TStreamerInfoActions.cxx:1454
 TStreamerInfoActions.cxx:1455
 TStreamerInfoActions.cxx:1456
 TStreamerInfoActions.cxx:1457
 TStreamerInfoActions.cxx:1458
 TStreamerInfoActions.cxx:1459
 TStreamerInfoActions.cxx:1460
 TStreamerInfoActions.cxx:1461
 TStreamerInfoActions.cxx:1462
 TStreamerInfoActions.cxx:1463
 TStreamerInfoActions.cxx:1464
 TStreamerInfoActions.cxx:1465
 TStreamerInfoActions.cxx:1466
 TStreamerInfoActions.cxx:1467
 TStreamerInfoActions.cxx:1468
 TStreamerInfoActions.cxx:1469
 TStreamerInfoActions.cxx:1470
 TStreamerInfoActions.cxx:1471
 TStreamerInfoActions.cxx:1472
 TStreamerInfoActions.cxx:1473
 TStreamerInfoActions.cxx:1474
 TStreamerInfoActions.cxx:1475
 TStreamerInfoActions.cxx:1476
 TStreamerInfoActions.cxx:1477
 TStreamerInfoActions.cxx:1478
 TStreamerInfoActions.cxx:1479
 TStreamerInfoActions.cxx:1480
 TStreamerInfoActions.cxx:1481
 TStreamerInfoActions.cxx:1482
 TStreamerInfoActions.cxx:1483
 TStreamerInfoActions.cxx:1484
 TStreamerInfoActions.cxx:1485
 TStreamerInfoActions.cxx:1486
 TStreamerInfoActions.cxx:1487
 TStreamerInfoActions.cxx:1488
 TStreamerInfoActions.cxx:1489
 TStreamerInfoActions.cxx:1490
 TStreamerInfoActions.cxx:1491
 TStreamerInfoActions.cxx:1492
 TStreamerInfoActions.cxx:1493
 TStreamerInfoActions.cxx:1494
 TStreamerInfoActions.cxx:1495
 TStreamerInfoActions.cxx:1496
 TStreamerInfoActions.cxx:1497
 TStreamerInfoActions.cxx:1498
 TStreamerInfoActions.cxx:1499
 TStreamerInfoActions.cxx:1500
 TStreamerInfoActions.cxx:1501
 TStreamerInfoActions.cxx:1502
 TStreamerInfoActions.cxx:1503
 TStreamerInfoActions.cxx:1504
 TStreamerInfoActions.cxx:1505
 TStreamerInfoActions.cxx:1506
 TStreamerInfoActions.cxx:1507
 TStreamerInfoActions.cxx:1508
 TStreamerInfoActions.cxx:1509
 TStreamerInfoActions.cxx:1510
 TStreamerInfoActions.cxx:1511
 TStreamerInfoActions.cxx:1512
 TStreamerInfoActions.cxx:1513
 TStreamerInfoActions.cxx:1514
 TStreamerInfoActions.cxx:1515
 TStreamerInfoActions.cxx:1516
 TStreamerInfoActions.cxx:1517
 TStreamerInfoActions.cxx:1518
 TStreamerInfoActions.cxx:1519
 TStreamerInfoActions.cxx:1520
 TStreamerInfoActions.cxx:1521
 TStreamerInfoActions.cxx:1522
 TStreamerInfoActions.cxx:1523
 TStreamerInfoActions.cxx:1524
 TStreamerInfoActions.cxx:1525
 TStreamerInfoActions.cxx:1526
 TStreamerInfoActions.cxx:1527
 TStreamerInfoActions.cxx:1528
 TStreamerInfoActions.cxx:1529
 TStreamerInfoActions.cxx:1530
 TStreamerInfoActions.cxx:1531
 TStreamerInfoActions.cxx:1532
 TStreamerInfoActions.cxx:1533
 TStreamerInfoActions.cxx:1534
 TStreamerInfoActions.cxx:1535
 TStreamerInfoActions.cxx:1536
 TStreamerInfoActions.cxx:1537
 TStreamerInfoActions.cxx:1538
 TStreamerInfoActions.cxx:1539
 TStreamerInfoActions.cxx:1540
 TStreamerInfoActions.cxx:1541
 TStreamerInfoActions.cxx:1542
 TStreamerInfoActions.cxx:1543
 TStreamerInfoActions.cxx:1544
 TStreamerInfoActions.cxx:1545
 TStreamerInfoActions.cxx:1546
 TStreamerInfoActions.cxx:1547
 TStreamerInfoActions.cxx:1548
 TStreamerInfoActions.cxx:1549
 TStreamerInfoActions.cxx:1550
 TStreamerInfoActions.cxx:1551
 TStreamerInfoActions.cxx:1552
 TStreamerInfoActions.cxx:1553
 TStreamerInfoActions.cxx:1554
 TStreamerInfoActions.cxx:1555
 TStreamerInfoActions.cxx:1556
 TStreamerInfoActions.cxx:1557
 TStreamerInfoActions.cxx:1558
 TStreamerInfoActions.cxx:1559
 TStreamerInfoActions.cxx:1560
 TStreamerInfoActions.cxx:1561
 TStreamerInfoActions.cxx:1562
 TStreamerInfoActions.cxx:1563
 TStreamerInfoActions.cxx:1564
 TStreamerInfoActions.cxx:1565
 TStreamerInfoActions.cxx:1566
 TStreamerInfoActions.cxx:1567
 TStreamerInfoActions.cxx:1568
 TStreamerInfoActions.cxx:1569
 TStreamerInfoActions.cxx:1570
 TStreamerInfoActions.cxx:1571
 TStreamerInfoActions.cxx:1572
 TStreamerInfoActions.cxx:1573
 TStreamerInfoActions.cxx:1574
 TStreamerInfoActions.cxx:1575
 TStreamerInfoActions.cxx:1576
 TStreamerInfoActions.cxx:1577
 TStreamerInfoActions.cxx:1578
 TStreamerInfoActions.cxx:1579
 TStreamerInfoActions.cxx:1580
 TStreamerInfoActions.cxx:1581
 TStreamerInfoActions.cxx:1582
 TStreamerInfoActions.cxx:1583
 TStreamerInfoActions.cxx:1584
 TStreamerInfoActions.cxx:1585
 TStreamerInfoActions.cxx:1586
 TStreamerInfoActions.cxx:1587
 TStreamerInfoActions.cxx:1588
 TStreamerInfoActions.cxx:1589
 TStreamerInfoActions.cxx:1590
 TStreamerInfoActions.cxx:1591
 TStreamerInfoActions.cxx:1592
 TStreamerInfoActions.cxx:1593
 TStreamerInfoActions.cxx:1594
 TStreamerInfoActions.cxx:1595
 TStreamerInfoActions.cxx:1596
 TStreamerInfoActions.cxx:1597
 TStreamerInfoActions.cxx:1598
 TStreamerInfoActions.cxx:1599
 TStreamerInfoActions.cxx:1600
 TStreamerInfoActions.cxx:1601
 TStreamerInfoActions.cxx:1602
 TStreamerInfoActions.cxx:1603
 TStreamerInfoActions.cxx:1604
 TStreamerInfoActions.cxx:1605
 TStreamerInfoActions.cxx:1606
 TStreamerInfoActions.cxx:1607
 TStreamerInfoActions.cxx:1608
 TStreamerInfoActions.cxx:1609
 TStreamerInfoActions.cxx:1610
 TStreamerInfoActions.cxx:1611
 TStreamerInfoActions.cxx:1612
 TStreamerInfoActions.cxx:1613
 TStreamerInfoActions.cxx:1614
 TStreamerInfoActions.cxx:1615
 TStreamerInfoActions.cxx:1616
 TStreamerInfoActions.cxx:1617
 TStreamerInfoActions.cxx:1618
 TStreamerInfoActions.cxx:1619
 TStreamerInfoActions.cxx:1620
 TStreamerInfoActions.cxx:1621
 TStreamerInfoActions.cxx:1622
 TStreamerInfoActions.cxx:1623
 TStreamerInfoActions.cxx:1624
 TStreamerInfoActions.cxx:1625
 TStreamerInfoActions.cxx:1626
 TStreamerInfoActions.cxx:1627
 TStreamerInfoActions.cxx:1628
 TStreamerInfoActions.cxx:1629
 TStreamerInfoActions.cxx:1630
 TStreamerInfoActions.cxx:1631
 TStreamerInfoActions.cxx:1632
 TStreamerInfoActions.cxx:1633
 TStreamerInfoActions.cxx:1634
 TStreamerInfoActions.cxx:1635
 TStreamerInfoActions.cxx:1636
 TStreamerInfoActions.cxx:1637
 TStreamerInfoActions.cxx:1638
 TStreamerInfoActions.cxx:1639
 TStreamerInfoActions.cxx:1640
 TStreamerInfoActions.cxx:1641
 TStreamerInfoActions.cxx:1642
 TStreamerInfoActions.cxx:1643
 TStreamerInfoActions.cxx:1644
 TStreamerInfoActions.cxx:1645
 TStreamerInfoActions.cxx:1646
 TStreamerInfoActions.cxx:1647
 TStreamerInfoActions.cxx:1648
 TStreamerInfoActions.cxx:1649
 TStreamerInfoActions.cxx:1650
 TStreamerInfoActions.cxx:1651
 TStreamerInfoActions.cxx:1652
 TStreamerInfoActions.cxx:1653
 TStreamerInfoActions.cxx:1654
 TStreamerInfoActions.cxx:1655
 TStreamerInfoActions.cxx:1656
 TStreamerInfoActions.cxx:1657
 TStreamerInfoActions.cxx:1658
 TStreamerInfoActions.cxx:1659
 TStreamerInfoActions.cxx:1660
 TStreamerInfoActions.cxx:1661
 TStreamerInfoActions.cxx:1662
 TStreamerInfoActions.cxx:1663
 TStreamerInfoActions.cxx:1664
 TStreamerInfoActions.cxx:1665
 TStreamerInfoActions.cxx:1666
 TStreamerInfoActions.cxx:1667
 TStreamerInfoActions.cxx:1668
 TStreamerInfoActions.cxx:1669
 TStreamerInfoActions.cxx:1670
 TStreamerInfoActions.cxx:1671
 TStreamerInfoActions.cxx:1672
 TStreamerInfoActions.cxx:1673
 TStreamerInfoActions.cxx:1674
 TStreamerInfoActions.cxx:1675
 TStreamerInfoActions.cxx:1676
 TStreamerInfoActions.cxx:1677
 TStreamerInfoActions.cxx:1678
 TStreamerInfoActions.cxx:1679
 TStreamerInfoActions.cxx:1680
 TStreamerInfoActions.cxx:1681
 TStreamerInfoActions.cxx:1682
 TStreamerInfoActions.cxx:1683
 TStreamerInfoActions.cxx:1684
 TStreamerInfoActions.cxx:1685
 TStreamerInfoActions.cxx:1686
 TStreamerInfoActions.cxx:1687
 TStreamerInfoActions.cxx:1688
 TStreamerInfoActions.cxx:1689
 TStreamerInfoActions.cxx:1690
 TStreamerInfoActions.cxx:1691
 TStreamerInfoActions.cxx:1692
 TStreamerInfoActions.cxx:1693
 TStreamerInfoActions.cxx:1694
 TStreamerInfoActions.cxx:1695
 TStreamerInfoActions.cxx:1696
 TStreamerInfoActions.cxx:1697
 TStreamerInfoActions.cxx:1698
 TStreamerInfoActions.cxx:1699
 TStreamerInfoActions.cxx:1700
 TStreamerInfoActions.cxx:1701
 TStreamerInfoActions.cxx:1702
 TStreamerInfoActions.cxx:1703
 TStreamerInfoActions.cxx:1704
 TStreamerInfoActions.cxx:1705
 TStreamerInfoActions.cxx:1706
 TStreamerInfoActions.cxx:1707
 TStreamerInfoActions.cxx:1708
 TStreamerInfoActions.cxx:1709
 TStreamerInfoActions.cxx:1710
 TStreamerInfoActions.cxx:1711
 TStreamerInfoActions.cxx:1712
 TStreamerInfoActions.cxx:1713
 TStreamerInfoActions.cxx:1714
 TStreamerInfoActions.cxx:1715
 TStreamerInfoActions.cxx:1716
 TStreamerInfoActions.cxx:1717
 TStreamerInfoActions.cxx:1718
 TStreamerInfoActions.cxx:1719
 TStreamerInfoActions.cxx:1720
 TStreamerInfoActions.cxx:1721
 TStreamerInfoActions.cxx:1722
 TStreamerInfoActions.cxx:1723
 TStreamerInfoActions.cxx:1724
 TStreamerInfoActions.cxx:1725
 TStreamerInfoActions.cxx:1726
 TStreamerInfoActions.cxx:1727
 TStreamerInfoActions.cxx:1728
 TStreamerInfoActions.cxx:1729
 TStreamerInfoActions.cxx:1730
 TStreamerInfoActions.cxx:1731
 TStreamerInfoActions.cxx:1732
 TStreamerInfoActions.cxx:1733
 TStreamerInfoActions.cxx:1734
 TStreamerInfoActions.cxx:1735
 TStreamerInfoActions.cxx:1736
 TStreamerInfoActions.cxx:1737
 TStreamerInfoActions.cxx:1738
 TStreamerInfoActions.cxx:1739
 TStreamerInfoActions.cxx:1740
 TStreamerInfoActions.cxx:1741
 TStreamerInfoActions.cxx:1742
 TStreamerInfoActions.cxx:1743
 TStreamerInfoActions.cxx:1744
 TStreamerInfoActions.cxx:1745
 TStreamerInfoActions.cxx:1746
 TStreamerInfoActions.cxx:1747
 TStreamerInfoActions.cxx:1748
 TStreamerInfoActions.cxx:1749
 TStreamerInfoActions.cxx:1750
 TStreamerInfoActions.cxx:1751
 TStreamerInfoActions.cxx:1752
 TStreamerInfoActions.cxx:1753
 TStreamerInfoActions.cxx:1754
 TStreamerInfoActions.cxx:1755
 TStreamerInfoActions.cxx:1756
 TStreamerInfoActions.cxx:1757
 TStreamerInfoActions.cxx:1758
 TStreamerInfoActions.cxx:1759
 TStreamerInfoActions.cxx:1760
 TStreamerInfoActions.cxx:1761
 TStreamerInfoActions.cxx:1762
 TStreamerInfoActions.cxx:1763
 TStreamerInfoActions.cxx:1764
 TStreamerInfoActions.cxx:1765
 TStreamerInfoActions.cxx:1766
 TStreamerInfoActions.cxx:1767
 TStreamerInfoActions.cxx:1768
 TStreamerInfoActions.cxx:1769
 TStreamerInfoActions.cxx:1770
 TStreamerInfoActions.cxx:1771
 TStreamerInfoActions.cxx:1772
 TStreamerInfoActions.cxx:1773
 TStreamerInfoActions.cxx:1774
 TStreamerInfoActions.cxx:1775
 TStreamerInfoActions.cxx:1776
 TStreamerInfoActions.cxx:1777
 TStreamerInfoActions.cxx:1778
 TStreamerInfoActions.cxx:1779
 TStreamerInfoActions.cxx:1780
 TStreamerInfoActions.cxx:1781
 TStreamerInfoActions.cxx:1782
 TStreamerInfoActions.cxx:1783
 TStreamerInfoActions.cxx:1784
 TStreamerInfoActions.cxx:1785
 TStreamerInfoActions.cxx:1786
 TStreamerInfoActions.cxx:1787
 TStreamerInfoActions.cxx:1788
 TStreamerInfoActions.cxx:1789
 TStreamerInfoActions.cxx:1790
 TStreamerInfoActions.cxx:1791
 TStreamerInfoActions.cxx:1792
 TStreamerInfoActions.cxx:1793
 TStreamerInfoActions.cxx:1794
 TStreamerInfoActions.cxx:1795
 TStreamerInfoActions.cxx:1796
 TStreamerInfoActions.cxx:1797
 TStreamerInfoActions.cxx:1798
 TStreamerInfoActions.cxx:1799
 TStreamerInfoActions.cxx:1800
 TStreamerInfoActions.cxx:1801
 TStreamerInfoActions.cxx:1802
 TStreamerInfoActions.cxx:1803
 TStreamerInfoActions.cxx:1804
 TStreamerInfoActions.cxx:1805
 TStreamerInfoActions.cxx:1806
 TStreamerInfoActions.cxx:1807
 TStreamerInfoActions.cxx:1808
 TStreamerInfoActions.cxx:1809
 TStreamerInfoActions.cxx:1810
 TStreamerInfoActions.cxx:1811
 TStreamerInfoActions.cxx:1812
 TStreamerInfoActions.cxx:1813
 TStreamerInfoActions.cxx:1814
 TStreamerInfoActions.cxx:1815
 TStreamerInfoActions.cxx:1816
 TStreamerInfoActions.cxx:1817
 TStreamerInfoActions.cxx:1818
 TStreamerInfoActions.cxx:1819
 TStreamerInfoActions.cxx:1820
 TStreamerInfoActions.cxx:1821
 TStreamerInfoActions.cxx:1822
 TStreamerInfoActions.cxx:1823
 TStreamerInfoActions.cxx:1824
 TStreamerInfoActions.cxx:1825
 TStreamerInfoActions.cxx:1826
 TStreamerInfoActions.cxx:1827
 TStreamerInfoActions.cxx:1828
 TStreamerInfoActions.cxx:1829
 TStreamerInfoActions.cxx:1830
 TStreamerInfoActions.cxx:1831
 TStreamerInfoActions.cxx:1832
 TStreamerInfoActions.cxx:1833
 TStreamerInfoActions.cxx:1834
 TStreamerInfoActions.cxx:1835
 TStreamerInfoActions.cxx:1836
 TStreamerInfoActions.cxx:1837
 TStreamerInfoActions.cxx:1838
 TStreamerInfoActions.cxx:1839
 TStreamerInfoActions.cxx:1840
 TStreamerInfoActions.cxx:1841
 TStreamerInfoActions.cxx:1842
 TStreamerInfoActions.cxx:1843
 TStreamerInfoActions.cxx:1844
 TStreamerInfoActions.cxx:1845
 TStreamerInfoActions.cxx:1846
 TStreamerInfoActions.cxx:1847
 TStreamerInfoActions.cxx:1848
 TStreamerInfoActions.cxx:1849
 TStreamerInfoActions.cxx:1850
 TStreamerInfoActions.cxx:1851
 TStreamerInfoActions.cxx:1852
 TStreamerInfoActions.cxx:1853
 TStreamerInfoActions.cxx:1854
 TStreamerInfoActions.cxx:1855
 TStreamerInfoActions.cxx:1856
 TStreamerInfoActions.cxx:1857
 TStreamerInfoActions.cxx:1858
 TStreamerInfoActions.cxx:1859
 TStreamerInfoActions.cxx:1860
 TStreamerInfoActions.cxx:1861
 TStreamerInfoActions.cxx:1862
 TStreamerInfoActions.cxx:1863
 TStreamerInfoActions.cxx:1864
 TStreamerInfoActions.cxx:1865
 TStreamerInfoActions.cxx:1866
 TStreamerInfoActions.cxx:1867
 TStreamerInfoActions.cxx:1868
 TStreamerInfoActions.cxx:1869
 TStreamerInfoActions.cxx:1870
 TStreamerInfoActions.cxx:1871
 TStreamerInfoActions.cxx:1872
 TStreamerInfoActions.cxx:1873
 TStreamerInfoActions.cxx:1874
 TStreamerInfoActions.cxx:1875
 TStreamerInfoActions.cxx:1876
 TStreamerInfoActions.cxx:1877
 TStreamerInfoActions.cxx:1878
 TStreamerInfoActions.cxx:1879
 TStreamerInfoActions.cxx:1880
 TStreamerInfoActions.cxx:1881
 TStreamerInfoActions.cxx:1882
 TStreamerInfoActions.cxx:1883
 TStreamerInfoActions.cxx:1884
 TStreamerInfoActions.cxx:1885
 TStreamerInfoActions.cxx:1886
 TStreamerInfoActions.cxx:1887
 TStreamerInfoActions.cxx:1888
 TStreamerInfoActions.cxx:1889
 TStreamerInfoActions.cxx:1890
 TStreamerInfoActions.cxx:1891
 TStreamerInfoActions.cxx:1892
 TStreamerInfoActions.cxx:1893
 TStreamerInfoActions.cxx:1894
 TStreamerInfoActions.cxx:1895
 TStreamerInfoActions.cxx:1896
 TStreamerInfoActions.cxx:1897
 TStreamerInfoActions.cxx:1898
 TStreamerInfoActions.cxx:1899
 TStreamerInfoActions.cxx:1900
 TStreamerInfoActions.cxx:1901
 TStreamerInfoActions.cxx:1902
 TStreamerInfoActions.cxx:1903
 TStreamerInfoActions.cxx:1904
 TStreamerInfoActions.cxx:1905
 TStreamerInfoActions.cxx:1906
 TStreamerInfoActions.cxx:1907
 TStreamerInfoActions.cxx:1908
 TStreamerInfoActions.cxx:1909
 TStreamerInfoActions.cxx:1910
 TStreamerInfoActions.cxx:1911
 TStreamerInfoActions.cxx:1912
 TStreamerInfoActions.cxx:1913
 TStreamerInfoActions.cxx:1914
 TStreamerInfoActions.cxx:1915
 TStreamerInfoActions.cxx:1916
 TStreamerInfoActions.cxx:1917
 TStreamerInfoActions.cxx:1918
 TStreamerInfoActions.cxx:1919
 TStreamerInfoActions.cxx:1920
 TStreamerInfoActions.cxx:1921
 TStreamerInfoActions.cxx:1922
 TStreamerInfoActions.cxx:1923
 TStreamerInfoActions.cxx:1924
 TStreamerInfoActions.cxx:1925
 TStreamerInfoActions.cxx:1926
 TStreamerInfoActions.cxx:1927
 TStreamerInfoActions.cxx:1928
 TStreamerInfoActions.cxx:1929
 TStreamerInfoActions.cxx:1930
 TStreamerInfoActions.cxx:1931
 TStreamerInfoActions.cxx:1932
 TStreamerInfoActions.cxx:1933
 TStreamerInfoActions.cxx:1934
 TStreamerInfoActions.cxx:1935
 TStreamerInfoActions.cxx:1936
 TStreamerInfoActions.cxx:1937
 TStreamerInfoActions.cxx:1938
 TStreamerInfoActions.cxx:1939
 TStreamerInfoActions.cxx:1940
 TStreamerInfoActions.cxx:1941
 TStreamerInfoActions.cxx:1942
 TStreamerInfoActions.cxx:1943
 TStreamerInfoActions.cxx:1944
 TStreamerInfoActions.cxx:1945
 TStreamerInfoActions.cxx:1946
 TStreamerInfoActions.cxx:1947
 TStreamerInfoActions.cxx:1948
 TStreamerInfoActions.cxx:1949
 TStreamerInfoActions.cxx:1950
 TStreamerInfoActions.cxx:1951
 TStreamerInfoActions.cxx:1952
 TStreamerInfoActions.cxx:1953
 TStreamerInfoActions.cxx:1954
 TStreamerInfoActions.cxx:1955
 TStreamerInfoActions.cxx:1956
 TStreamerInfoActions.cxx:1957
 TStreamerInfoActions.cxx:1958
 TStreamerInfoActions.cxx:1959
 TStreamerInfoActions.cxx:1960
 TStreamerInfoActions.cxx:1961
 TStreamerInfoActions.cxx:1962
 TStreamerInfoActions.cxx:1963
 TStreamerInfoActions.cxx:1964
 TStreamerInfoActions.cxx:1965
 TStreamerInfoActions.cxx:1966
 TStreamerInfoActions.cxx:1967
 TStreamerInfoActions.cxx:1968
 TStreamerInfoActions.cxx:1969
 TStreamerInfoActions.cxx:1970
 TStreamerInfoActions.cxx:1971
 TStreamerInfoActions.cxx:1972
 TStreamerInfoActions.cxx:1973
 TStreamerInfoActions.cxx:1974
 TStreamerInfoActions.cxx:1975
 TStreamerInfoActions.cxx:1976
 TStreamerInfoActions.cxx:1977
 TStreamerInfoActions.cxx:1978
 TStreamerInfoActions.cxx:1979
 TStreamerInfoActions.cxx:1980
 TStreamerInfoActions.cxx:1981
 TStreamerInfoActions.cxx:1982
 TStreamerInfoActions.cxx:1983
 TStreamerInfoActions.cxx:1984
 TStreamerInfoActions.cxx:1985
 TStreamerInfoActions.cxx:1986
 TStreamerInfoActions.cxx:1987
 TStreamerInfoActions.cxx:1988
 TStreamerInfoActions.cxx:1989
 TStreamerInfoActions.cxx:1990
 TStreamerInfoActions.cxx:1991
 TStreamerInfoActions.cxx:1992
 TStreamerInfoActions.cxx:1993
 TStreamerInfoActions.cxx:1994
 TStreamerInfoActions.cxx:1995
 TStreamerInfoActions.cxx:1996
 TStreamerInfoActions.cxx:1997
 TStreamerInfoActions.cxx:1998
 TStreamerInfoActions.cxx:1999
 TStreamerInfoActions.cxx:2000
 TStreamerInfoActions.cxx:2001
 TStreamerInfoActions.cxx:2002
 TStreamerInfoActions.cxx:2003
 TStreamerInfoActions.cxx:2004
 TStreamerInfoActions.cxx:2005
 TStreamerInfoActions.cxx:2006
 TStreamerInfoActions.cxx:2007
 TStreamerInfoActions.cxx:2008
 TStreamerInfoActions.cxx:2009
 TStreamerInfoActions.cxx:2010
 TStreamerInfoActions.cxx:2011
 TStreamerInfoActions.cxx:2012
 TStreamerInfoActions.cxx:2013
 TStreamerInfoActions.cxx:2014
 TStreamerInfoActions.cxx:2015
 TStreamerInfoActions.cxx:2016
 TStreamerInfoActions.cxx:2017
 TStreamerInfoActions.cxx:2018
 TStreamerInfoActions.cxx:2019
 TStreamerInfoActions.cxx:2020
 TStreamerInfoActions.cxx:2021
 TStreamerInfoActions.cxx:2022
 TStreamerInfoActions.cxx:2023
 TStreamerInfoActions.cxx:2024
 TStreamerInfoActions.cxx:2025
 TStreamerInfoActions.cxx:2026
 TStreamerInfoActions.cxx:2027
 TStreamerInfoActions.cxx:2028
 TStreamerInfoActions.cxx:2029
 TStreamerInfoActions.cxx:2030
 TStreamerInfoActions.cxx:2031
 TStreamerInfoActions.cxx:2032
 TStreamerInfoActions.cxx:2033
 TStreamerInfoActions.cxx:2034
 TStreamerInfoActions.cxx:2035
 TStreamerInfoActions.cxx:2036
 TStreamerInfoActions.cxx:2037
 TStreamerInfoActions.cxx:2038
 TStreamerInfoActions.cxx:2039
 TStreamerInfoActions.cxx:2040
 TStreamerInfoActions.cxx:2041
 TStreamerInfoActions.cxx:2042
 TStreamerInfoActions.cxx:2043
 TStreamerInfoActions.cxx:2044
 TStreamerInfoActions.cxx:2045
 TStreamerInfoActions.cxx:2046
 TStreamerInfoActions.cxx:2047
 TStreamerInfoActions.cxx:2048
 TStreamerInfoActions.cxx:2049
 TStreamerInfoActions.cxx:2050
 TStreamerInfoActions.cxx:2051
 TStreamerInfoActions.cxx:2052
 TStreamerInfoActions.cxx:2053
 TStreamerInfoActions.cxx:2054
 TStreamerInfoActions.cxx:2055
 TStreamerInfoActions.cxx:2056
 TStreamerInfoActions.cxx:2057
 TStreamerInfoActions.cxx:2058
 TStreamerInfoActions.cxx:2059
 TStreamerInfoActions.cxx:2060
 TStreamerInfoActions.cxx:2061
 TStreamerInfoActions.cxx:2062
 TStreamerInfoActions.cxx:2063
 TStreamerInfoActions.cxx:2064
 TStreamerInfoActions.cxx:2065
 TStreamerInfoActions.cxx:2066
 TStreamerInfoActions.cxx:2067
 TStreamerInfoActions.cxx:2068
 TStreamerInfoActions.cxx:2069
 TStreamerInfoActions.cxx:2070
 TStreamerInfoActions.cxx:2071
 TStreamerInfoActions.cxx:2072
 TStreamerInfoActions.cxx:2073
 TStreamerInfoActions.cxx:2074
 TStreamerInfoActions.cxx:2075
 TStreamerInfoActions.cxx:2076
 TStreamerInfoActions.cxx:2077
 TStreamerInfoActions.cxx:2078
 TStreamerInfoActions.cxx:2079
 TStreamerInfoActions.cxx:2080
 TStreamerInfoActions.cxx:2081
 TStreamerInfoActions.cxx:2082
 TStreamerInfoActions.cxx:2083
 TStreamerInfoActions.cxx:2084
 TStreamerInfoActions.cxx:2085
 TStreamerInfoActions.cxx:2086
 TStreamerInfoActions.cxx:2087
 TStreamerInfoActions.cxx:2088
 TStreamerInfoActions.cxx:2089
 TStreamerInfoActions.cxx:2090
 TStreamerInfoActions.cxx:2091
 TStreamerInfoActions.cxx:2092
 TStreamerInfoActions.cxx:2093
 TStreamerInfoActions.cxx:2094
 TStreamerInfoActions.cxx:2095
 TStreamerInfoActions.cxx:2096
 TStreamerInfoActions.cxx:2097
 TStreamerInfoActions.cxx:2098
 TStreamerInfoActions.cxx:2099
 TStreamerInfoActions.cxx:2100
 TStreamerInfoActions.cxx:2101
 TStreamerInfoActions.cxx:2102
 TStreamerInfoActions.cxx:2103
 TStreamerInfoActions.cxx:2104
 TStreamerInfoActions.cxx:2105
 TStreamerInfoActions.cxx:2106
 TStreamerInfoActions.cxx:2107
 TStreamerInfoActions.cxx:2108
 TStreamerInfoActions.cxx:2109
 TStreamerInfoActions.cxx:2110
 TStreamerInfoActions.cxx:2111
 TStreamerInfoActions.cxx:2112
 TStreamerInfoActions.cxx:2113
 TStreamerInfoActions.cxx:2114
 TStreamerInfoActions.cxx:2115
 TStreamerInfoActions.cxx:2116
 TStreamerInfoActions.cxx:2117
 TStreamerInfoActions.cxx:2118
 TStreamerInfoActions.cxx:2119
 TStreamerInfoActions.cxx:2120
 TStreamerInfoActions.cxx:2121
 TStreamerInfoActions.cxx:2122
 TStreamerInfoActions.cxx:2123
 TStreamerInfoActions.cxx:2124
 TStreamerInfoActions.cxx:2125
 TStreamerInfoActions.cxx:2126
 TStreamerInfoActions.cxx:2127
 TStreamerInfoActions.cxx:2128
 TStreamerInfoActions.cxx:2129
 TStreamerInfoActions.cxx:2130
 TStreamerInfoActions.cxx:2131
 TStreamerInfoActions.cxx:2132
 TStreamerInfoActions.cxx:2133
 TStreamerInfoActions.cxx:2134
 TStreamerInfoActions.cxx:2135
 TStreamerInfoActions.cxx:2136
 TStreamerInfoActions.cxx:2137
 TStreamerInfoActions.cxx:2138
 TStreamerInfoActions.cxx:2139
 TStreamerInfoActions.cxx:2140
 TStreamerInfoActions.cxx:2141
 TStreamerInfoActions.cxx:2142
 TStreamerInfoActions.cxx:2143
 TStreamerInfoActions.cxx:2144
 TStreamerInfoActions.cxx:2145
 TStreamerInfoActions.cxx:2146
 TStreamerInfoActions.cxx:2147
 TStreamerInfoActions.cxx:2148
 TStreamerInfoActions.cxx:2149
 TStreamerInfoActions.cxx:2150
 TStreamerInfoActions.cxx:2151
 TStreamerInfoActions.cxx:2152
 TStreamerInfoActions.cxx:2153
 TStreamerInfoActions.cxx:2154
 TStreamerInfoActions.cxx:2155
 TStreamerInfoActions.cxx:2156
 TStreamerInfoActions.cxx:2157
 TStreamerInfoActions.cxx:2158
 TStreamerInfoActions.cxx:2159
 TStreamerInfoActions.cxx:2160
 TStreamerInfoActions.cxx:2161
 TStreamerInfoActions.cxx:2162
 TStreamerInfoActions.cxx:2163
 TStreamerInfoActions.cxx:2164
 TStreamerInfoActions.cxx:2165
 TStreamerInfoActions.cxx:2166
 TStreamerInfoActions.cxx:2167
 TStreamerInfoActions.cxx:2168
 TStreamerInfoActions.cxx:2169
 TStreamerInfoActions.cxx:2170
 TStreamerInfoActions.cxx:2171
 TStreamerInfoActions.cxx:2172
 TStreamerInfoActions.cxx:2173
 TStreamerInfoActions.cxx:2174
 TStreamerInfoActions.cxx:2175
 TStreamerInfoActions.cxx:2176
 TStreamerInfoActions.cxx:2177
 TStreamerInfoActions.cxx:2178
 TStreamerInfoActions.cxx:2179
 TStreamerInfoActions.cxx:2180
 TStreamerInfoActions.cxx:2181
 TStreamerInfoActions.cxx:2182
 TStreamerInfoActions.cxx:2183
 TStreamerInfoActions.cxx:2184
 TStreamerInfoActions.cxx:2185
 TStreamerInfoActions.cxx:2186
 TStreamerInfoActions.cxx:2187
 TStreamerInfoActions.cxx:2188
 TStreamerInfoActions.cxx:2189
 TStreamerInfoActions.cxx:2190
 TStreamerInfoActions.cxx:2191
 TStreamerInfoActions.cxx:2192
 TStreamerInfoActions.cxx:2193
 TStreamerInfoActions.cxx:2194
 TStreamerInfoActions.cxx:2195
 TStreamerInfoActions.cxx:2196
 TStreamerInfoActions.cxx:2197
 TStreamerInfoActions.cxx:2198
 TStreamerInfoActions.cxx:2199
 TStreamerInfoActions.cxx:2200
 TStreamerInfoActions.cxx:2201
 TStreamerInfoActions.cxx:2202
 TStreamerInfoActions.cxx:2203
 TStreamerInfoActions.cxx:2204
 TStreamerInfoActions.cxx:2205
 TStreamerInfoActions.cxx:2206
 TStreamerInfoActions.cxx:2207
 TStreamerInfoActions.cxx:2208
 TStreamerInfoActions.cxx:2209
 TStreamerInfoActions.cxx:2210
 TStreamerInfoActions.cxx:2211
 TStreamerInfoActions.cxx:2212
 TStreamerInfoActions.cxx:2213
 TStreamerInfoActions.cxx:2214
 TStreamerInfoActions.cxx:2215
 TStreamerInfoActions.cxx:2216
 TStreamerInfoActions.cxx:2217
 TStreamerInfoActions.cxx:2218
 TStreamerInfoActions.cxx:2219
 TStreamerInfoActions.cxx:2220
 TStreamerInfoActions.cxx:2221
 TStreamerInfoActions.cxx:2222
 TStreamerInfoActions.cxx:2223
 TStreamerInfoActions.cxx:2224
 TStreamerInfoActions.cxx:2225
 TStreamerInfoActions.cxx:2226
 TStreamerInfoActions.cxx:2227
 TStreamerInfoActions.cxx:2228
 TStreamerInfoActions.cxx:2229
 TStreamerInfoActions.cxx:2230
 TStreamerInfoActions.cxx:2231
 TStreamerInfoActions.cxx:2232
 TStreamerInfoActions.cxx:2233
 TStreamerInfoActions.cxx:2234
 TStreamerInfoActions.cxx:2235
 TStreamerInfoActions.cxx:2236
 TStreamerInfoActions.cxx:2237
 TStreamerInfoActions.cxx:2238
 TStreamerInfoActions.cxx:2239
 TStreamerInfoActions.cxx:2240
 TStreamerInfoActions.cxx:2241
 TStreamerInfoActions.cxx:2242
 TStreamerInfoActions.cxx:2243
 TStreamerInfoActions.cxx:2244
 TStreamerInfoActions.cxx:2245
 TStreamerInfoActions.cxx:2246
 TStreamerInfoActions.cxx:2247
 TStreamerInfoActions.cxx:2248
 TStreamerInfoActions.cxx:2249
 TStreamerInfoActions.cxx:2250
 TStreamerInfoActions.cxx:2251
 TStreamerInfoActions.cxx:2252
 TStreamerInfoActions.cxx:2253
 TStreamerInfoActions.cxx:2254
 TStreamerInfoActions.cxx:2255
 TStreamerInfoActions.cxx:2256
 TStreamerInfoActions.cxx:2257
 TStreamerInfoActions.cxx:2258
 TStreamerInfoActions.cxx:2259
 TStreamerInfoActions.cxx:2260
 TStreamerInfoActions.cxx:2261
 TStreamerInfoActions.cxx:2262
 TStreamerInfoActions.cxx:2263
 TStreamerInfoActions.cxx:2264
 TStreamerInfoActions.cxx:2265
 TStreamerInfoActions.cxx:2266
 TStreamerInfoActions.cxx:2267
 TStreamerInfoActions.cxx:2268
 TStreamerInfoActions.cxx:2269
 TStreamerInfoActions.cxx:2270
 TStreamerInfoActions.cxx:2271
 TStreamerInfoActions.cxx:2272
 TStreamerInfoActions.cxx:2273
 TStreamerInfoActions.cxx:2274
 TStreamerInfoActions.cxx:2275
 TStreamerInfoActions.cxx:2276
 TStreamerInfoActions.cxx:2277
 TStreamerInfoActions.cxx:2278
 TStreamerInfoActions.cxx:2279
 TStreamerInfoActions.cxx:2280
 TStreamerInfoActions.cxx:2281
 TStreamerInfoActions.cxx:2282
 TStreamerInfoActions.cxx:2283
 TStreamerInfoActions.cxx:2284
 TStreamerInfoActions.cxx:2285
 TStreamerInfoActions.cxx:2286
 TStreamerInfoActions.cxx:2287
 TStreamerInfoActions.cxx:2288
 TStreamerInfoActions.cxx:2289
 TStreamerInfoActions.cxx:2290
 TStreamerInfoActions.cxx:2291
 TStreamerInfoActions.cxx:2292
 TStreamerInfoActions.cxx:2293
 TStreamerInfoActions.cxx:2294
 TStreamerInfoActions.cxx:2295
 TStreamerInfoActions.cxx:2296
 TStreamerInfoActions.cxx:2297
 TStreamerInfoActions.cxx:2298
 TStreamerInfoActions.cxx:2299
 TStreamerInfoActions.cxx:2300
 TStreamerInfoActions.cxx:2301
 TStreamerInfoActions.cxx:2302
 TStreamerInfoActions.cxx:2303
 TStreamerInfoActions.cxx:2304
 TStreamerInfoActions.cxx:2305
 TStreamerInfoActions.cxx:2306
 TStreamerInfoActions.cxx:2307
 TStreamerInfoActions.cxx:2308
 TStreamerInfoActions.cxx:2309
 TStreamerInfoActions.cxx:2310
 TStreamerInfoActions.cxx:2311
 TStreamerInfoActions.cxx:2312
 TStreamerInfoActions.cxx:2313
 TStreamerInfoActions.cxx:2314
 TStreamerInfoActions.cxx:2315
 TStreamerInfoActions.cxx:2316
 TStreamerInfoActions.cxx:2317
 TStreamerInfoActions.cxx:2318
 TStreamerInfoActions.cxx:2319
 TStreamerInfoActions.cxx:2320
 TStreamerInfoActions.cxx:2321
 TStreamerInfoActions.cxx:2322
 TStreamerInfoActions.cxx:2323
 TStreamerInfoActions.cxx:2324
 TStreamerInfoActions.cxx:2325
 TStreamerInfoActions.cxx:2326
 TStreamerInfoActions.cxx:2327
 TStreamerInfoActions.cxx:2328
 TStreamerInfoActions.cxx:2329
 TStreamerInfoActions.cxx:2330
 TStreamerInfoActions.cxx:2331
 TStreamerInfoActions.cxx:2332
 TStreamerInfoActions.cxx:2333
 TStreamerInfoActions.cxx:2334
 TStreamerInfoActions.cxx:2335
 TStreamerInfoActions.cxx:2336
 TStreamerInfoActions.cxx:2337
 TStreamerInfoActions.cxx:2338
 TStreamerInfoActions.cxx:2339
 TStreamerInfoActions.cxx:2340
 TStreamerInfoActions.cxx:2341
 TStreamerInfoActions.cxx:2342
 TStreamerInfoActions.cxx:2343
 TStreamerInfoActions.cxx:2344
 TStreamerInfoActions.cxx:2345
 TStreamerInfoActions.cxx:2346
 TStreamerInfoActions.cxx:2347
 TStreamerInfoActions.cxx:2348
 TStreamerInfoActions.cxx:2349
 TStreamerInfoActions.cxx:2350
 TStreamerInfoActions.cxx:2351
 TStreamerInfoActions.cxx:2352
 TStreamerInfoActions.cxx:2353
 TStreamerInfoActions.cxx:2354
 TStreamerInfoActions.cxx:2355
 TStreamerInfoActions.cxx:2356
 TStreamerInfoActions.cxx:2357
 TStreamerInfoActions.cxx:2358
 TStreamerInfoActions.cxx:2359
 TStreamerInfoActions.cxx:2360
 TStreamerInfoActions.cxx:2361
 TStreamerInfoActions.cxx:2362
 TStreamerInfoActions.cxx:2363
 TStreamerInfoActions.cxx:2364
 TStreamerInfoActions.cxx:2365
 TStreamerInfoActions.cxx:2366
 TStreamerInfoActions.cxx:2367
 TStreamerInfoActions.cxx:2368
 TStreamerInfoActions.cxx:2369
 TStreamerInfoActions.cxx:2370
 TStreamerInfoActions.cxx:2371
 TStreamerInfoActions.cxx:2372
 TStreamerInfoActions.cxx:2373
 TStreamerInfoActions.cxx:2374
 TStreamerInfoActions.cxx:2375
 TStreamerInfoActions.cxx:2376
 TStreamerInfoActions.cxx:2377
 TStreamerInfoActions.cxx:2378
 TStreamerInfoActions.cxx:2379
 TStreamerInfoActions.cxx:2380
 TStreamerInfoActions.cxx:2381
 TStreamerInfoActions.cxx:2382
 TStreamerInfoActions.cxx:2383
 TStreamerInfoActions.cxx:2384
 TStreamerInfoActions.cxx:2385
 TStreamerInfoActions.cxx:2386
 TStreamerInfoActions.cxx:2387
 TStreamerInfoActions.cxx:2388
 TStreamerInfoActions.cxx:2389
 TStreamerInfoActions.cxx:2390
 TStreamerInfoActions.cxx:2391
 TStreamerInfoActions.cxx:2392
 TStreamerInfoActions.cxx:2393
 TStreamerInfoActions.cxx:2394
 TStreamerInfoActions.cxx:2395
 TStreamerInfoActions.cxx:2396
 TStreamerInfoActions.cxx:2397
 TStreamerInfoActions.cxx:2398
 TStreamerInfoActions.cxx:2399
 TStreamerInfoActions.cxx:2400
 TStreamerInfoActions.cxx:2401
 TStreamerInfoActions.cxx:2402
 TStreamerInfoActions.cxx:2403
 TStreamerInfoActions.cxx:2404
 TStreamerInfoActions.cxx:2405
 TStreamerInfoActions.cxx:2406
 TStreamerInfoActions.cxx:2407
 TStreamerInfoActions.cxx:2408
 TStreamerInfoActions.cxx:2409
 TStreamerInfoActions.cxx:2410
 TStreamerInfoActions.cxx:2411
 TStreamerInfoActions.cxx:2412
 TStreamerInfoActions.cxx:2413
 TStreamerInfoActions.cxx:2414
 TStreamerInfoActions.cxx:2415
 TStreamerInfoActions.cxx:2416
 TStreamerInfoActions.cxx:2417
 TStreamerInfoActions.cxx:2418
 TStreamerInfoActions.cxx:2419
 TStreamerInfoActions.cxx:2420
 TStreamerInfoActions.cxx:2421
 TStreamerInfoActions.cxx:2422
 TStreamerInfoActions.cxx:2423
 TStreamerInfoActions.cxx:2424
 TStreamerInfoActions.cxx:2425
 TStreamerInfoActions.cxx:2426
 TStreamerInfoActions.cxx:2427
 TStreamerInfoActions.cxx:2428
 TStreamerInfoActions.cxx:2429
 TStreamerInfoActions.cxx:2430
 TStreamerInfoActions.cxx:2431
 TStreamerInfoActions.cxx:2432
 TStreamerInfoActions.cxx:2433
 TStreamerInfoActions.cxx:2434
 TStreamerInfoActions.cxx:2435
 TStreamerInfoActions.cxx:2436
 TStreamerInfoActions.cxx:2437
 TStreamerInfoActions.cxx:2438
 TStreamerInfoActions.cxx:2439
 TStreamerInfoActions.cxx:2440
 TStreamerInfoActions.cxx:2441
 TStreamerInfoActions.cxx:2442
 TStreamerInfoActions.cxx:2443
 TStreamerInfoActions.cxx:2444
 TStreamerInfoActions.cxx:2445
 TStreamerInfoActions.cxx:2446
 TStreamerInfoActions.cxx:2447
 TStreamerInfoActions.cxx:2448
 TStreamerInfoActions.cxx:2449
 TStreamerInfoActions.cxx:2450
 TStreamerInfoActions.cxx:2451
 TStreamerInfoActions.cxx:2452
 TStreamerInfoActions.cxx:2453
 TStreamerInfoActions.cxx:2454
 TStreamerInfoActions.cxx:2455
 TStreamerInfoActions.cxx:2456
 TStreamerInfoActions.cxx:2457
 TStreamerInfoActions.cxx:2458
 TStreamerInfoActions.cxx:2459
 TStreamerInfoActions.cxx:2460
 TStreamerInfoActions.cxx:2461
 TStreamerInfoActions.cxx:2462
 TStreamerInfoActions.cxx:2463
 TStreamerInfoActions.cxx:2464
 TStreamerInfoActions.cxx:2465
 TStreamerInfoActions.cxx:2466
 TStreamerInfoActions.cxx:2467
 TStreamerInfoActions.cxx:2468
 TStreamerInfoActions.cxx:2469
 TStreamerInfoActions.cxx:2470
 TStreamerInfoActions.cxx:2471
 TStreamerInfoActions.cxx:2472
 TStreamerInfoActions.cxx:2473
 TStreamerInfoActions.cxx:2474
 TStreamerInfoActions.cxx:2475
 TStreamerInfoActions.cxx:2476
 TStreamerInfoActions.cxx:2477
 TStreamerInfoActions.cxx:2478
 TStreamerInfoActions.cxx:2479
 TStreamerInfoActions.cxx:2480
 TStreamerInfoActions.cxx:2481
 TStreamerInfoActions.cxx:2482
 TStreamerInfoActions.cxx:2483
 TStreamerInfoActions.cxx:2484
 TStreamerInfoActions.cxx:2485
 TStreamerInfoActions.cxx:2486
 TStreamerInfoActions.cxx:2487
 TStreamerInfoActions.cxx:2488
 TStreamerInfoActions.cxx:2489
 TStreamerInfoActions.cxx:2490
 TStreamerInfoActions.cxx:2491
 TStreamerInfoActions.cxx:2492
 TStreamerInfoActions.cxx:2493
 TStreamerInfoActions.cxx:2494
 TStreamerInfoActions.cxx:2495
 TStreamerInfoActions.cxx:2496
 TStreamerInfoActions.cxx:2497
 TStreamerInfoActions.cxx:2498
 TStreamerInfoActions.cxx:2499
 TStreamerInfoActions.cxx:2500
 TStreamerInfoActions.cxx:2501
 TStreamerInfoActions.cxx:2502
 TStreamerInfoActions.cxx:2503
 TStreamerInfoActions.cxx:2504
 TStreamerInfoActions.cxx:2505
 TStreamerInfoActions.cxx:2506
 TStreamerInfoActions.cxx:2507
 TStreamerInfoActions.cxx:2508
 TStreamerInfoActions.cxx:2509
 TStreamerInfoActions.cxx:2510
 TStreamerInfoActions.cxx:2511
 TStreamerInfoActions.cxx:2512
 TStreamerInfoActions.cxx:2513
 TStreamerInfoActions.cxx:2514
 TStreamerInfoActions.cxx:2515
 TStreamerInfoActions.cxx:2516
 TStreamerInfoActions.cxx:2517
 TStreamerInfoActions.cxx:2518
 TStreamerInfoActions.cxx:2519
 TStreamerInfoActions.cxx:2520
 TStreamerInfoActions.cxx:2521
 TStreamerInfoActions.cxx:2522
 TStreamerInfoActions.cxx:2523
 TStreamerInfoActions.cxx:2524
 TStreamerInfoActions.cxx:2525
 TStreamerInfoActions.cxx:2526
 TStreamerInfoActions.cxx:2527
 TStreamerInfoActions.cxx:2528
 TStreamerInfoActions.cxx:2529
 TStreamerInfoActions.cxx:2530
 TStreamerInfoActions.cxx:2531
 TStreamerInfoActions.cxx:2532
 TStreamerInfoActions.cxx:2533
 TStreamerInfoActions.cxx:2534
 TStreamerInfoActions.cxx:2535
 TStreamerInfoActions.cxx:2536
 TStreamerInfoActions.cxx:2537
 TStreamerInfoActions.cxx:2538
 TStreamerInfoActions.cxx:2539
 TStreamerInfoActions.cxx:2540
 TStreamerInfoActions.cxx:2541
 TStreamerInfoActions.cxx:2542
 TStreamerInfoActions.cxx:2543
 TStreamerInfoActions.cxx:2544
 TStreamerInfoActions.cxx:2545
 TStreamerInfoActions.cxx:2546
 TStreamerInfoActions.cxx:2547
 TStreamerInfoActions.cxx:2548
 TStreamerInfoActions.cxx:2549
 TStreamerInfoActions.cxx:2550
 TStreamerInfoActions.cxx:2551
 TStreamerInfoActions.cxx:2552
 TStreamerInfoActions.cxx:2553
 TStreamerInfoActions.cxx:2554
 TStreamerInfoActions.cxx:2555
 TStreamerInfoActions.cxx:2556
 TStreamerInfoActions.cxx:2557
 TStreamerInfoActions.cxx:2558
 TStreamerInfoActions.cxx:2559
 TStreamerInfoActions.cxx:2560
 TStreamerInfoActions.cxx:2561
 TStreamerInfoActions.cxx:2562
 TStreamerInfoActions.cxx:2563
 TStreamerInfoActions.cxx:2564
 TStreamerInfoActions.cxx:2565
 TStreamerInfoActions.cxx:2566
 TStreamerInfoActions.cxx:2567
 TStreamerInfoActions.cxx:2568
 TStreamerInfoActions.cxx:2569
 TStreamerInfoActions.cxx:2570
 TStreamerInfoActions.cxx:2571
 TStreamerInfoActions.cxx:2572
 TStreamerInfoActions.cxx:2573
 TStreamerInfoActions.cxx:2574
 TStreamerInfoActions.cxx:2575
 TStreamerInfoActions.cxx:2576
 TStreamerInfoActions.cxx:2577
 TStreamerInfoActions.cxx:2578
 TStreamerInfoActions.cxx:2579
 TStreamerInfoActions.cxx:2580
 TStreamerInfoActions.cxx:2581
 TStreamerInfoActions.cxx:2582
 TStreamerInfoActions.cxx:2583
 TStreamerInfoActions.cxx:2584
 TStreamerInfoActions.cxx:2585
 TStreamerInfoActions.cxx:2586
 TStreamerInfoActions.cxx:2587
 TStreamerInfoActions.cxx:2588
 TStreamerInfoActions.cxx:2589
 TStreamerInfoActions.cxx:2590
 TStreamerInfoActions.cxx:2591
 TStreamerInfoActions.cxx:2592
 TStreamerInfoActions.cxx:2593
 TStreamerInfoActions.cxx:2594
 TStreamerInfoActions.cxx:2595
 TStreamerInfoActions.cxx:2596
 TStreamerInfoActions.cxx:2597
 TStreamerInfoActions.cxx:2598
 TStreamerInfoActions.cxx:2599
 TStreamerInfoActions.cxx:2600
 TStreamerInfoActions.cxx:2601
 TStreamerInfoActions.cxx:2602
 TStreamerInfoActions.cxx:2603
 TStreamerInfoActions.cxx:2604
 TStreamerInfoActions.cxx:2605
 TStreamerInfoActions.cxx:2606
 TStreamerInfoActions.cxx:2607
 TStreamerInfoActions.cxx:2608
 TStreamerInfoActions.cxx:2609
 TStreamerInfoActions.cxx:2610
 TStreamerInfoActions.cxx:2611
 TStreamerInfoActions.cxx:2612
 TStreamerInfoActions.cxx:2613
 TStreamerInfoActions.cxx:2614
 TStreamerInfoActions.cxx:2615
 TStreamerInfoActions.cxx:2616
 TStreamerInfoActions.cxx:2617
 TStreamerInfoActions.cxx:2618
 TStreamerInfoActions.cxx:2619
 TStreamerInfoActions.cxx:2620
 TStreamerInfoActions.cxx:2621
 TStreamerInfoActions.cxx:2622
 TStreamerInfoActions.cxx:2623
 TStreamerInfoActions.cxx:2624
 TStreamerInfoActions.cxx:2625
 TStreamerInfoActions.cxx:2626
 TStreamerInfoActions.cxx:2627
 TStreamerInfoActions.cxx:2628
 TStreamerInfoActions.cxx:2629
 TStreamerInfoActions.cxx:2630
 TStreamerInfoActions.cxx:2631
 TStreamerInfoActions.cxx:2632
 TStreamerInfoActions.cxx:2633
 TStreamerInfoActions.cxx:2634
 TStreamerInfoActions.cxx:2635
 TStreamerInfoActions.cxx:2636
 TStreamerInfoActions.cxx:2637
 TStreamerInfoActions.cxx:2638
 TStreamerInfoActions.cxx:2639
 TStreamerInfoActions.cxx:2640
 TStreamerInfoActions.cxx:2641
 TStreamerInfoActions.cxx:2642
 TStreamerInfoActions.cxx:2643
 TStreamerInfoActions.cxx:2644
 TStreamerInfoActions.cxx:2645
 TStreamerInfoActions.cxx:2646
 TStreamerInfoActions.cxx:2647
 TStreamerInfoActions.cxx:2648
 TStreamerInfoActions.cxx:2649
 TStreamerInfoActions.cxx:2650
 TStreamerInfoActions.cxx:2651
 TStreamerInfoActions.cxx:2652
 TStreamerInfoActions.cxx:2653
 TStreamerInfoActions.cxx:2654
 TStreamerInfoActions.cxx:2655
 TStreamerInfoActions.cxx:2656
 TStreamerInfoActions.cxx:2657
 TStreamerInfoActions.cxx:2658
 TStreamerInfoActions.cxx:2659
 TStreamerInfoActions.cxx:2660
 TStreamerInfoActions.cxx:2661
 TStreamerInfoActions.cxx:2662
 TStreamerInfoActions.cxx:2663
 TStreamerInfoActions.cxx:2664
 TStreamerInfoActions.cxx:2665
 TStreamerInfoActions.cxx:2666
 TStreamerInfoActions.cxx:2667
 TStreamerInfoActions.cxx:2668
 TStreamerInfoActions.cxx:2669
 TStreamerInfoActions.cxx:2670
 TStreamerInfoActions.cxx:2671
 TStreamerInfoActions.cxx:2672
 TStreamerInfoActions.cxx:2673
 TStreamerInfoActions.cxx:2674
 TStreamerInfoActions.cxx:2675
 TStreamerInfoActions.cxx:2676
 TStreamerInfoActions.cxx:2677
 TStreamerInfoActions.cxx:2678
 TStreamerInfoActions.cxx:2679
 TStreamerInfoActions.cxx:2680
 TStreamerInfoActions.cxx:2681
 TStreamerInfoActions.cxx:2682
 TStreamerInfoActions.cxx:2683
 TStreamerInfoActions.cxx:2684
 TStreamerInfoActions.cxx:2685
 TStreamerInfoActions.cxx:2686
 TStreamerInfoActions.cxx:2687
 TStreamerInfoActions.cxx:2688
 TStreamerInfoActions.cxx:2689
 TStreamerInfoActions.cxx:2690
 TStreamerInfoActions.cxx:2691
 TStreamerInfoActions.cxx:2692
 TStreamerInfoActions.cxx:2693
 TStreamerInfoActions.cxx:2694
 TStreamerInfoActions.cxx:2695
 TStreamerInfoActions.cxx:2696
 TStreamerInfoActions.cxx:2697
 TStreamerInfoActions.cxx:2698
 TStreamerInfoActions.cxx:2699
 TStreamerInfoActions.cxx:2700
 TStreamerInfoActions.cxx:2701
 TStreamerInfoActions.cxx:2702
 TStreamerInfoActions.cxx:2703
 TStreamerInfoActions.cxx:2704
 TStreamerInfoActions.cxx:2705
 TStreamerInfoActions.cxx:2706
 TStreamerInfoActions.cxx:2707
 TStreamerInfoActions.cxx:2708
 TStreamerInfoActions.cxx:2709
 TStreamerInfoActions.cxx:2710
 TStreamerInfoActions.cxx:2711
 TStreamerInfoActions.cxx:2712
 TStreamerInfoActions.cxx:2713
 TStreamerInfoActions.cxx:2714
 TStreamerInfoActions.cxx:2715
 TStreamerInfoActions.cxx:2716
 TStreamerInfoActions.cxx:2717
 TStreamerInfoActions.cxx:2718
 TStreamerInfoActions.cxx:2719
 TStreamerInfoActions.cxx:2720
 TStreamerInfoActions.cxx:2721
 TStreamerInfoActions.cxx:2722
 TStreamerInfoActions.cxx:2723
 TStreamerInfoActions.cxx:2724
 TStreamerInfoActions.cxx:2725
 TStreamerInfoActions.cxx:2726
 TStreamerInfoActions.cxx:2727
 TStreamerInfoActions.cxx:2728
 TStreamerInfoActions.cxx:2729
 TStreamerInfoActions.cxx:2730
 TStreamerInfoActions.cxx:2731
 TStreamerInfoActions.cxx:2732
 TStreamerInfoActions.cxx:2733
 TStreamerInfoActions.cxx:2734
 TStreamerInfoActions.cxx:2735
 TStreamerInfoActions.cxx:2736
 TStreamerInfoActions.cxx:2737
 TStreamerInfoActions.cxx:2738
 TStreamerInfoActions.cxx:2739
 TStreamerInfoActions.cxx:2740
 TStreamerInfoActions.cxx:2741
 TStreamerInfoActions.cxx:2742
 TStreamerInfoActions.cxx:2743
 TStreamerInfoActions.cxx:2744
 TStreamerInfoActions.cxx:2745
 TStreamerInfoActions.cxx:2746
 TStreamerInfoActions.cxx:2747
 TStreamerInfoActions.cxx:2748
 TStreamerInfoActions.cxx:2749
 TStreamerInfoActions.cxx:2750
 TStreamerInfoActions.cxx:2751
 TStreamerInfoActions.cxx:2752
 TStreamerInfoActions.cxx:2753
 TStreamerInfoActions.cxx:2754
 TStreamerInfoActions.cxx:2755
 TStreamerInfoActions.cxx:2756
 TStreamerInfoActions.cxx:2757
 TStreamerInfoActions.cxx:2758
 TStreamerInfoActions.cxx:2759
 TStreamerInfoActions.cxx:2760
 TStreamerInfoActions.cxx:2761
 TStreamerInfoActions.cxx:2762
 TStreamerInfoActions.cxx:2763
 TStreamerInfoActions.cxx:2764
 TStreamerInfoActions.cxx:2765
 TStreamerInfoActions.cxx:2766
 TStreamerInfoActions.cxx:2767
 TStreamerInfoActions.cxx:2768
 TStreamerInfoActions.cxx:2769
 TStreamerInfoActions.cxx:2770
 TStreamerInfoActions.cxx:2771
 TStreamerInfoActions.cxx:2772
 TStreamerInfoActions.cxx:2773
 TStreamerInfoActions.cxx:2774
 TStreamerInfoActions.cxx:2775
 TStreamerInfoActions.cxx:2776
 TStreamerInfoActions.cxx:2777
 TStreamerInfoActions.cxx:2778
 TStreamerInfoActions.cxx:2779
 TStreamerInfoActions.cxx:2780
 TStreamerInfoActions.cxx:2781
 TStreamerInfoActions.cxx:2782
 TStreamerInfoActions.cxx:2783
 TStreamerInfoActions.cxx:2784
 TStreamerInfoActions.cxx:2785
 TStreamerInfoActions.cxx:2786
 TStreamerInfoActions.cxx:2787
 TStreamerInfoActions.cxx:2788
 TStreamerInfoActions.cxx:2789
 TStreamerInfoActions.cxx:2790
 TStreamerInfoActions.cxx:2791
 TStreamerInfoActions.cxx:2792
 TStreamerInfoActions.cxx:2793
 TStreamerInfoActions.cxx:2794
 TStreamerInfoActions.cxx:2795
 TStreamerInfoActions.cxx:2796
 TStreamerInfoActions.cxx:2797
 TStreamerInfoActions.cxx:2798
 TStreamerInfoActions.cxx:2799
 TStreamerInfoActions.cxx:2800
 TStreamerInfoActions.cxx:2801
 TStreamerInfoActions.cxx:2802
 TStreamerInfoActions.cxx:2803
 TStreamerInfoActions.cxx:2804
 TStreamerInfoActions.cxx:2805
 TStreamerInfoActions.cxx:2806
 TStreamerInfoActions.cxx:2807
 TStreamerInfoActions.cxx:2808
 TStreamerInfoActions.cxx:2809
 TStreamerInfoActions.cxx:2810
 TStreamerInfoActions.cxx:2811
 TStreamerInfoActions.cxx:2812
 TStreamerInfoActions.cxx:2813
 TStreamerInfoActions.cxx:2814
 TStreamerInfoActions.cxx:2815
 TStreamerInfoActions.cxx:2816
 TStreamerInfoActions.cxx:2817
 TStreamerInfoActions.cxx:2818
 TStreamerInfoActions.cxx:2819
 TStreamerInfoActions.cxx:2820
 TStreamerInfoActions.cxx:2821
 TStreamerInfoActions.cxx:2822
 TStreamerInfoActions.cxx:2823
 TStreamerInfoActions.cxx:2824
 TStreamerInfoActions.cxx:2825
 TStreamerInfoActions.cxx:2826
 TStreamerInfoActions.cxx:2827
 TStreamerInfoActions.cxx:2828
 TStreamerInfoActions.cxx:2829
 TStreamerInfoActions.cxx:2830
 TStreamerInfoActions.cxx:2831
 TStreamerInfoActions.cxx:2832
 TStreamerInfoActions.cxx:2833
 TStreamerInfoActions.cxx:2834
 TStreamerInfoActions.cxx:2835
 TStreamerInfoActions.cxx:2836
 TStreamerInfoActions.cxx:2837
 TStreamerInfoActions.cxx:2838
 TStreamerInfoActions.cxx:2839
 TStreamerInfoActions.cxx:2840
 TStreamerInfoActions.cxx:2841
 TStreamerInfoActions.cxx:2842
 TStreamerInfoActions.cxx:2843
 TStreamerInfoActions.cxx:2844
 TStreamerInfoActions.cxx:2845
 TStreamerInfoActions.cxx:2846
 TStreamerInfoActions.cxx:2847
 TStreamerInfoActions.cxx:2848
 TStreamerInfoActions.cxx:2849
 TStreamerInfoActions.cxx:2850
 TStreamerInfoActions.cxx:2851
 TStreamerInfoActions.cxx:2852
 TStreamerInfoActions.cxx:2853
 TStreamerInfoActions.cxx:2854
 TStreamerInfoActions.cxx:2855
 TStreamerInfoActions.cxx:2856
 TStreamerInfoActions.cxx:2857
 TStreamerInfoActions.cxx:2858
 TStreamerInfoActions.cxx:2859
 TStreamerInfoActions.cxx:2860
 TStreamerInfoActions.cxx:2861
 TStreamerInfoActions.cxx:2862
 TStreamerInfoActions.cxx:2863
 TStreamerInfoActions.cxx:2864
 TStreamerInfoActions.cxx:2865
 TStreamerInfoActions.cxx:2866
 TStreamerInfoActions.cxx:2867
 TStreamerInfoActions.cxx:2868
 TStreamerInfoActions.cxx:2869
 TStreamerInfoActions.cxx:2870
 TStreamerInfoActions.cxx:2871
 TStreamerInfoActions.cxx:2872
 TStreamerInfoActions.cxx:2873
 TStreamerInfoActions.cxx:2874
 TStreamerInfoActions.cxx:2875
 TStreamerInfoActions.cxx:2876
 TStreamerInfoActions.cxx:2877
 TStreamerInfoActions.cxx:2878
 TStreamerInfoActions.cxx:2879
 TStreamerInfoActions.cxx:2880
 TStreamerInfoActions.cxx:2881
 TStreamerInfoActions.cxx:2882
 TStreamerInfoActions.cxx:2883
 TStreamerInfoActions.cxx:2884
 TStreamerInfoActions.cxx:2885
 TStreamerInfoActions.cxx:2886
 TStreamerInfoActions.cxx:2887
 TStreamerInfoActions.cxx:2888
 TStreamerInfoActions.cxx:2889
 TStreamerInfoActions.cxx:2890
 TStreamerInfoActions.cxx:2891
 TStreamerInfoActions.cxx:2892
 TStreamerInfoActions.cxx:2893
 TStreamerInfoActions.cxx:2894
 TStreamerInfoActions.cxx:2895
 TStreamerInfoActions.cxx:2896
 TStreamerInfoActions.cxx:2897
 TStreamerInfoActions.cxx:2898
 TStreamerInfoActions.cxx:2899
 TStreamerInfoActions.cxx:2900
 TStreamerInfoActions.cxx:2901
 TStreamerInfoActions.cxx:2902
 TStreamerInfoActions.cxx:2903
 TStreamerInfoActions.cxx:2904
 TStreamerInfoActions.cxx:2905
 TStreamerInfoActions.cxx:2906
 TStreamerInfoActions.cxx:2907
 TStreamerInfoActions.cxx:2908
 TStreamerInfoActions.cxx:2909
 TStreamerInfoActions.cxx:2910
 TStreamerInfoActions.cxx:2911
 TStreamerInfoActions.cxx:2912
 TStreamerInfoActions.cxx:2913
 TStreamerInfoActions.cxx:2914
 TStreamerInfoActions.cxx:2915
 TStreamerInfoActions.cxx:2916
 TStreamerInfoActions.cxx:2917
 TStreamerInfoActions.cxx:2918
 TStreamerInfoActions.cxx:2919
 TStreamerInfoActions.cxx:2920
 TStreamerInfoActions.cxx:2921
 TStreamerInfoActions.cxx:2922
 TStreamerInfoActions.cxx:2923
 TStreamerInfoActions.cxx:2924
 TStreamerInfoActions.cxx:2925
 TStreamerInfoActions.cxx:2926
 TStreamerInfoActions.cxx:2927
 TStreamerInfoActions.cxx:2928
 TStreamerInfoActions.cxx:2929
 TStreamerInfoActions.cxx:2930
 TStreamerInfoActions.cxx:2931
 TStreamerInfoActions.cxx:2932
 TStreamerInfoActions.cxx:2933
 TStreamerInfoActions.cxx:2934
 TStreamerInfoActions.cxx:2935
 TStreamerInfoActions.cxx:2936
 TStreamerInfoActions.cxx:2937
 TStreamerInfoActions.cxx:2938
 TStreamerInfoActions.cxx:2939
 TStreamerInfoActions.cxx:2940
 TStreamerInfoActions.cxx:2941
 TStreamerInfoActions.cxx:2942
 TStreamerInfoActions.cxx:2943
 TStreamerInfoActions.cxx:2944
 TStreamerInfoActions.cxx:2945
 TStreamerInfoActions.cxx:2946
 TStreamerInfoActions.cxx:2947
 TStreamerInfoActions.cxx:2948
 TStreamerInfoActions.cxx:2949
 TStreamerInfoActions.cxx:2950
 TStreamerInfoActions.cxx:2951
 TStreamerInfoActions.cxx:2952
 TStreamerInfoActions.cxx:2953
 TStreamerInfoActions.cxx:2954
 TStreamerInfoActions.cxx:2955
 TStreamerInfoActions.cxx:2956
 TStreamerInfoActions.cxx:2957
 TStreamerInfoActions.cxx:2958
 TStreamerInfoActions.cxx:2959
 TStreamerInfoActions.cxx:2960
 TStreamerInfoActions.cxx:2961
 TStreamerInfoActions.cxx:2962
 TStreamerInfoActions.cxx:2963
 TStreamerInfoActions.cxx:2964
 TStreamerInfoActions.cxx:2965
 TStreamerInfoActions.cxx:2966
 TStreamerInfoActions.cxx:2967
 TStreamerInfoActions.cxx:2968
 TStreamerInfoActions.cxx:2969
 TStreamerInfoActions.cxx:2970
 TStreamerInfoActions.cxx:2971
 TStreamerInfoActions.cxx:2972
 TStreamerInfoActions.cxx:2973
 TStreamerInfoActions.cxx:2974
 TStreamerInfoActions.cxx:2975
 TStreamerInfoActions.cxx:2976
 TStreamerInfoActions.cxx:2977
 TStreamerInfoActions.cxx:2978
 TStreamerInfoActions.cxx:2979
 TStreamerInfoActions.cxx:2980
 TStreamerInfoActions.cxx:2981
 TStreamerInfoActions.cxx:2982
 TStreamerInfoActions.cxx:2983
 TStreamerInfoActions.cxx:2984
 TStreamerInfoActions.cxx:2985
 TStreamerInfoActions.cxx:2986
 TStreamerInfoActions.cxx:2987
 TStreamerInfoActions.cxx:2988
 TStreamerInfoActions.cxx:2989
 TStreamerInfoActions.cxx:2990
 TStreamerInfoActions.cxx:2991
 TStreamerInfoActions.cxx:2992
 TStreamerInfoActions.cxx:2993
 TStreamerInfoActions.cxx:2994
 TStreamerInfoActions.cxx:2995
 TStreamerInfoActions.cxx:2996
 TStreamerInfoActions.cxx:2997
 TStreamerInfoActions.cxx:2998
 TStreamerInfoActions.cxx:2999
 TStreamerInfoActions.cxx:3000
 TStreamerInfoActions.cxx:3001
 TStreamerInfoActions.cxx:3002
 TStreamerInfoActions.cxx:3003
 TStreamerInfoActions.cxx:3004
 TStreamerInfoActions.cxx:3005
 TStreamerInfoActions.cxx:3006
 TStreamerInfoActions.cxx:3007
 TStreamerInfoActions.cxx:3008
 TStreamerInfoActions.cxx:3009
 TStreamerInfoActions.cxx:3010
 TStreamerInfoActions.cxx:3011
 TStreamerInfoActions.cxx:3012
 TStreamerInfoActions.cxx:3013
 TStreamerInfoActions.cxx:3014
 TStreamerInfoActions.cxx:3015
 TStreamerInfoActions.cxx:3016
 TStreamerInfoActions.cxx:3017
 TStreamerInfoActions.cxx:3018
 TStreamerInfoActions.cxx:3019
 TStreamerInfoActions.cxx:3020
 TStreamerInfoActions.cxx:3021
 TStreamerInfoActions.cxx:3022
 TStreamerInfoActions.cxx:3023
 TStreamerInfoActions.cxx:3024
 TStreamerInfoActions.cxx:3025
 TStreamerInfoActions.cxx:3026
 TStreamerInfoActions.cxx:3027
 TStreamerInfoActions.cxx:3028
 TStreamerInfoActions.cxx:3029
 TStreamerInfoActions.cxx:3030
 TStreamerInfoActions.cxx:3031
 TStreamerInfoActions.cxx:3032
 TStreamerInfoActions.cxx:3033
 TStreamerInfoActions.cxx:3034
 TStreamerInfoActions.cxx:3035
 TStreamerInfoActions.cxx:3036
 TStreamerInfoActions.cxx:3037
 TStreamerInfoActions.cxx:3038
 TStreamerInfoActions.cxx:3039
 TStreamerInfoActions.cxx:3040
 TStreamerInfoActions.cxx:3041
 TStreamerInfoActions.cxx:3042
 TStreamerInfoActions.cxx:3043
 TStreamerInfoActions.cxx:3044
 TStreamerInfoActions.cxx:3045
 TStreamerInfoActions.cxx:3046
 TStreamerInfoActions.cxx:3047
 TStreamerInfoActions.cxx:3048
 TStreamerInfoActions.cxx:3049
 TStreamerInfoActions.cxx:3050
 TStreamerInfoActions.cxx:3051
 TStreamerInfoActions.cxx:3052
 TStreamerInfoActions.cxx:3053
 TStreamerInfoActions.cxx:3054
 TStreamerInfoActions.cxx:3055
 TStreamerInfoActions.cxx:3056
 TStreamerInfoActions.cxx:3057
 TStreamerInfoActions.cxx:3058
 TStreamerInfoActions.cxx:3059
 TStreamerInfoActions.cxx:3060
 TStreamerInfoActions.cxx:3061
 TStreamerInfoActions.cxx:3062
 TStreamerInfoActions.cxx:3063
 TStreamerInfoActions.cxx:3064
 TStreamerInfoActions.cxx:3065
 TStreamerInfoActions.cxx:3066
 TStreamerInfoActions.cxx:3067
 TStreamerInfoActions.cxx:3068
 TStreamerInfoActions.cxx:3069
 TStreamerInfoActions.cxx:3070
 TStreamerInfoActions.cxx:3071
 TStreamerInfoActions.cxx:3072
 TStreamerInfoActions.cxx:3073
 TStreamerInfoActions.cxx:3074
 TStreamerInfoActions.cxx:3075
 TStreamerInfoActions.cxx:3076
 TStreamerInfoActions.cxx:3077
 TStreamerInfoActions.cxx:3078
 TStreamerInfoActions.cxx:3079
 TStreamerInfoActions.cxx:3080
 TStreamerInfoActions.cxx:3081
 TStreamerInfoActions.cxx:3082
 TStreamerInfoActions.cxx:3083
 TStreamerInfoActions.cxx:3084
 TStreamerInfoActions.cxx:3085
 TStreamerInfoActions.cxx:3086
 TStreamerInfoActions.cxx:3087
 TStreamerInfoActions.cxx:3088
 TStreamerInfoActions.cxx:3089
 TStreamerInfoActions.cxx:3090
 TStreamerInfoActions.cxx:3091
 TStreamerInfoActions.cxx:3092
 TStreamerInfoActions.cxx:3093
 TStreamerInfoActions.cxx:3094
 TStreamerInfoActions.cxx:3095
 TStreamerInfoActions.cxx:3096
 TStreamerInfoActions.cxx:3097
 TStreamerInfoActions.cxx:3098
 TStreamerInfoActions.cxx:3099
 TStreamerInfoActions.cxx:3100
 TStreamerInfoActions.cxx:3101
 TStreamerInfoActions.cxx:3102
 TStreamerInfoActions.cxx:3103
 TStreamerInfoActions.cxx:3104
 TStreamerInfoActions.cxx:3105
 TStreamerInfoActions.cxx:3106
 TStreamerInfoActions.cxx:3107
 TStreamerInfoActions.cxx:3108
 TStreamerInfoActions.cxx:3109
 TStreamerInfoActions.cxx:3110
 TStreamerInfoActions.cxx:3111
 TStreamerInfoActions.cxx:3112
 TStreamerInfoActions.cxx:3113
 TStreamerInfoActions.cxx:3114
 TStreamerInfoActions.cxx:3115
 TStreamerInfoActions.cxx:3116
 TStreamerInfoActions.cxx:3117
 TStreamerInfoActions.cxx:3118
 TStreamerInfoActions.cxx:3119
 TStreamerInfoActions.cxx:3120
 TStreamerInfoActions.cxx:3121
 TStreamerInfoActions.cxx:3122
 TStreamerInfoActions.cxx:3123
 TStreamerInfoActions.cxx:3124
 TStreamerInfoActions.cxx:3125
 TStreamerInfoActions.cxx:3126
 TStreamerInfoActions.cxx:3127
 TStreamerInfoActions.cxx:3128
 TStreamerInfoActions.cxx:3129
 TStreamerInfoActions.cxx:3130
 TStreamerInfoActions.cxx:3131
 TStreamerInfoActions.cxx:3132
 TStreamerInfoActions.cxx:3133
 TStreamerInfoActions.cxx:3134
 TStreamerInfoActions.cxx:3135
 TStreamerInfoActions.cxx:3136
 TStreamerInfoActions.cxx:3137
 TStreamerInfoActions.cxx:3138
 TStreamerInfoActions.cxx:3139
 TStreamerInfoActions.cxx:3140
 TStreamerInfoActions.cxx:3141
 TStreamerInfoActions.cxx:3142
 TStreamerInfoActions.cxx:3143
 TStreamerInfoActions.cxx:3144
 TStreamerInfoActions.cxx:3145
 TStreamerInfoActions.cxx:3146
 TStreamerInfoActions.cxx:3147
 TStreamerInfoActions.cxx:3148
 TStreamerInfoActions.cxx:3149
 TStreamerInfoActions.cxx:3150
 TStreamerInfoActions.cxx:3151
 TStreamerInfoActions.cxx:3152
 TStreamerInfoActions.cxx:3153
 TStreamerInfoActions.cxx:3154
 TStreamerInfoActions.cxx:3155
 TStreamerInfoActions.cxx:3156
 TStreamerInfoActions.cxx:3157
 TStreamerInfoActions.cxx:3158
 TStreamerInfoActions.cxx:3159
 TStreamerInfoActions.cxx:3160
 TStreamerInfoActions.cxx:3161
 TStreamerInfoActions.cxx:3162
 TStreamerInfoActions.cxx:3163
 TStreamerInfoActions.cxx:3164
 TStreamerInfoActions.cxx:3165
 TStreamerInfoActions.cxx:3166
 TStreamerInfoActions.cxx:3167
 TStreamerInfoActions.cxx:3168
 TStreamerInfoActions.cxx:3169
 TStreamerInfoActions.cxx:3170
 TStreamerInfoActions.cxx:3171
 TStreamerInfoActions.cxx:3172
 TStreamerInfoActions.cxx:3173
 TStreamerInfoActions.cxx:3174
 TStreamerInfoActions.cxx:3175
 TStreamerInfoActions.cxx:3176
 TStreamerInfoActions.cxx:3177
 TStreamerInfoActions.cxx:3178
 TStreamerInfoActions.cxx:3179
 TStreamerInfoActions.cxx:3180
 TStreamerInfoActions.cxx:3181
 TStreamerInfoActions.cxx:3182
 TStreamerInfoActions.cxx:3183
 TStreamerInfoActions.cxx:3184
 TStreamerInfoActions.cxx:3185
 TStreamerInfoActions.cxx:3186
 TStreamerInfoActions.cxx:3187
 TStreamerInfoActions.cxx:3188
 TStreamerInfoActions.cxx:3189
 TStreamerInfoActions.cxx:3190
 TStreamerInfoActions.cxx:3191
 TStreamerInfoActions.cxx:3192
 TStreamerInfoActions.cxx:3193
 TStreamerInfoActions.cxx:3194
 TStreamerInfoActions.cxx:3195
 TStreamerInfoActions.cxx:3196
 TStreamerInfoActions.cxx:3197
 TStreamerInfoActions.cxx:3198
 TStreamerInfoActions.cxx:3199
 TStreamerInfoActions.cxx:3200
 TStreamerInfoActions.cxx:3201
 TStreamerInfoActions.cxx:3202
 TStreamerInfoActions.cxx:3203
 TStreamerInfoActions.cxx:3204
 TStreamerInfoActions.cxx:3205
 TStreamerInfoActions.cxx:3206
 TStreamerInfoActions.cxx:3207
 TStreamerInfoActions.cxx:3208
 TStreamerInfoActions.cxx:3209
 TStreamerInfoActions.cxx:3210
 TStreamerInfoActions.cxx:3211
 TStreamerInfoActions.cxx:3212
 TStreamerInfoActions.cxx:3213
 TStreamerInfoActions.cxx:3214
 TStreamerInfoActions.cxx:3215
 TStreamerInfoActions.cxx:3216
 TStreamerInfoActions.cxx:3217
 TStreamerInfoActions.cxx:3218
 TStreamerInfoActions.cxx:3219
 TStreamerInfoActions.cxx:3220
 TStreamerInfoActions.cxx:3221
 TStreamerInfoActions.cxx:3222
 TStreamerInfoActions.cxx:3223
 TStreamerInfoActions.cxx:3224
 TStreamerInfoActions.cxx:3225
 TStreamerInfoActions.cxx:3226
 TStreamerInfoActions.cxx:3227
 TStreamerInfoActions.cxx:3228
 TStreamerInfoActions.cxx:3229
 TStreamerInfoActions.cxx:3230
 TStreamerInfoActions.cxx:3231
 TStreamerInfoActions.cxx:3232
 TStreamerInfoActions.cxx:3233
 TStreamerInfoActions.cxx:3234
 TStreamerInfoActions.cxx:3235
 TStreamerInfoActions.cxx:3236
 TStreamerInfoActions.cxx:3237
 TStreamerInfoActions.cxx:3238
 TStreamerInfoActions.cxx:3239
 TStreamerInfoActions.cxx:3240
 TStreamerInfoActions.cxx:3241
 TStreamerInfoActions.cxx:3242
 TStreamerInfoActions.cxx:3243
 TStreamerInfoActions.cxx:3244
 TStreamerInfoActions.cxx:3245
 TStreamerInfoActions.cxx:3246
 TStreamerInfoActions.cxx:3247
 TStreamerInfoActions.cxx:3248
 TStreamerInfoActions.cxx:3249
 TStreamerInfoActions.cxx:3250
 TStreamerInfoActions.cxx:3251
 TStreamerInfoActions.cxx:3252
 TStreamerInfoActions.cxx:3253
 TStreamerInfoActions.cxx:3254
 TStreamerInfoActions.cxx:3255
 TStreamerInfoActions.cxx:3256
 TStreamerInfoActions.cxx:3257
 TStreamerInfoActions.cxx:3258
 TStreamerInfoActions.cxx:3259
 TStreamerInfoActions.cxx:3260
 TStreamerInfoActions.cxx:3261
 TStreamerInfoActions.cxx:3262
 TStreamerInfoActions.cxx:3263
 TStreamerInfoActions.cxx:3264
 TStreamerInfoActions.cxx:3265
 TStreamerInfoActions.cxx:3266
 TStreamerInfoActions.cxx:3267
 TStreamerInfoActions.cxx:3268
 TStreamerInfoActions.cxx:3269
 TStreamerInfoActions.cxx:3270
 TStreamerInfoActions.cxx:3271
 TStreamerInfoActions.cxx:3272
 TStreamerInfoActions.cxx:3273
 TStreamerInfoActions.cxx:3274
 TStreamerInfoActions.cxx:3275
 TStreamerInfoActions.cxx:3276
 TStreamerInfoActions.cxx:3277
 TStreamerInfoActions.cxx:3278