136      if (first .is_valid() &&
 
  139        const_iterator i1 = this->find(first .getTypename());
 
  140        const_iterator i2 = this->find(second.
getTypename());
 
  142        if (i1 != this->end() &&
 
  150        } 
else if (first .getClass() != NULL &&
 
  153          if (first .getClass()->GetCollectionType() != ROOT::ESTLType::kNotSTL && first .getClass()->GetCollectionProxy() != NULL &&
 
  154              second.
getClass()->GetCollectionType() != ROOT::ESTLType::kNotSTL && second.
getClass()->GetCollectionProxy() != NULL) {
 
  156            std::unique_ptr<TVirtualCollectionProxy> 
p1(first .getClass()->GetCollectionProxy()->Generate());
 
  157            std::unique_ptr<TVirtualCollectionProxy> p2(second.
getClass()->GetCollectionProxy()->Generate());
 
  159            p1->PushProxy(
const_cast<char*
>(first .getAddress()));
 
  160            p2->PushProxy(
const_cast<char*
>(second.
getAddress()));
 
  162            TDictionary* d1 = TDictionary::GetDictionary(
p1->GetType() == EDataType::kNoType_t ? 
p1->GetValueClass()->GetName() : TDataType::GetTypeName(
p1->GetType()));
 
  163            TDictionary* d2 = TDictionary::GetDictionary(p2->GetType() == EDataType::kNoType_t ? p2->GetValueClass()->GetName() : TDataType::GetTypeName(p2->GetType()));
 
  165            DEBUG(
"proxy:  " << 
p1->GetCollectionClass()->GetName() << 
" " << d1->GetName() << 
"(" << 
p1->Size() << 
");" << endl);
 
  166            DEBUG(
"proxy:  " << p2->GetCollectionClass()->GetName() << 
" " << d2->GetName() << 
"(" << p2->Size() << 
");" << endl);
 
  168            if (
p1->Size() != p2->Size()) {
 
  172            for (UInt_t i = 0; (i != 
p1->Size() &&
 
  173                                i != p2->Size()); ++i) {
 
  175              DEBUG(
"index:  " << d1->GetName() << 
"[" << i << 
"] " << endl);
 
  188            if (first .getClass()->GetListOfBases() != NULL &&
 
  189                second.
getClass()->GetListOfBases() != NULL) {
 
  191              std::unique_ptr<TIterator> i1(first .getClass()->GetListOfBases()->MakeIterator());
 
  192              std::unique_ptr<TIterator> i2(second.
getClass()->GetListOfBases()->MakeIterator());
 
  194              for (
const TBaseClass *
p1, *p2; ((
p1 = (
const TBaseClass*) i1->Next()) != NULL &&
 
  195                                               (p2 = (
const TBaseClass*) i2->Next()) != NULL); ) {
 
  200                  DEBUG(
"base:   " << 
p1->GetName() << endl);
 
  210            if (first .getClass()->GetListOfDataMembers() != NULL &&
 
  211                second.
getClass()->GetListOfDataMembers() != NULL) {
 
  213              std::unique_ptr<TIterator> i1(first .getClass()->GetListOfDataMembers()->MakeIterator());
 
  214              std::unique_ptr<TIterator> i2(second.
getClass()->GetListOfDataMembers()->MakeIterator());
 
  216              for (
const TDataMember *
p1, *p2; ((
p1 = (
const TDataMember*) i1->Next()) != NULL &&
 
  217                                                (p2 = (
const TDataMember*) i2->Next()) != NULL); ) {
 
  223                  DEBUG(
"member: " << 
p1->GetTrueTypeName() << 
" " << 
p1->GetName() << 
";" << endl);