### I/O

- Unset the kIsReferenced bit before cloning an object in order to avoid the (incorrect/unwanted) registration of the clone.
- Repaired writing Foreign class in XML files
- Extend TDirectoryFile so it can now be derived from.
- In MakeProject
  - properly test whether a StreamerElement describe a base class (stl container were not handled correctly).
  - Remove requirement to have '.' in the PATH to execute the build.
- Add a new optional parameter to TDirectory::Append: replace.
  If replace is true (the default is false), the Append will first remove from the directory any existing object and print the message:

         Replacing existing OldClass: thename (Potential memory leak).

- Add a new option parameter to TDirectory::CloneObject: 'autoadd' If autoadd is true (the default), CloneObject will call the object 'DirectoryAutoAdd' function (if any)
- In TDirectory::CloneObject add support for multiple inheritance from TObject where TObject is not the left most base class.

#### Schema Evolution

- Fix schema evolution problem in TTree::Draw by extending support in TStreamerInfo::ReadValueAux to 'converted' numerical types, ( see issue in ROOT forum)
- When reading more than one TStreamerInfo for the same versioned class, we now use the highest possible class version as the current version of the class. Practically, we update the class version when reading new (higher versioned) StreamerInfo until the Class is actually used (i.e. TClass::GetClassVersion is call directly or indirectly).
  In particular, if a file has several StreamerInfos for the same versioned class, we will use the highest version number as the 'current' class version (as opposed to the lowest until now).
- For backward compatibility TStreamerInfo::BuildCheck compares the checksum of the on-file StreamerInfo not only to the current value of the class checksum but also to the checksum calculated using the older algorithms.
  This patch extends this test to also be done when comparing 2 on-file StreamerInfos.
  This removes spurrious warning message when loading 2 older files which were written with 2 different version of the TClass CheckSum algorithm (and the in-memory class's version is greater than both TStreamerInfos' class version).
- Extend support of TStreamerInfo::ReadValueAux to 'converted' numerical types, hence solving TTree::Draw's schema evolution problem (see http://root.cern.ch/phpBB2/viewtopic.php?t=6225)

#### DirectoryAutoAdd

Use the new DirectoryAutoAdd facility for the classes:

            TTree, TH1, TEventList, TEntryList, TGraph2D

(and hence their derived classes).
The instances of those classes are now added automatically to the current directory only when Constructe'd with arguments or Clone'd and to the directory they are read from when their are stored directly in a TKey. [Note: the default constructor never adds the object to the current directory]
The directory auto add can still be disabled for instance of TH1 and TGraph2D by setting TH1::AddDirectory.
Additionally one can disable the directory auto add for a specific class by doing:

        TClass::GetClass("myclass")->SetDirectoryAutoAdd(0)

However you might want to also be able to restore the behavior in which case you ought to do:

        TClass *cl = TClass::GetClass("myclass");
        ROOT::DirAutoAdd_t func = cl->GetDirectoryAutoAdd();
        cl->SetDirectoryAutoAdd(0);

TROOT::ReadingObject is marked as deprecated.. It is still set (as it was) but is no longer used by the above mention classes.
NOTE: One side effect of this change, is that instance of TTree, TH1, TEventList, TEntryList, TGraph2D that are retrieved from a TMessage (i.e. from a socket) no longer auto register themselves to the current ROOT directory.