160      if (first .is_valid() &&
 
  163        const_iterator i1 = this->find(first .getTypename());
 
  164        const_iterator i2 = this->find(second.
getTypename());
 
  166        if (i1 != this->end() &&
 
  174        } 
else if (first .getClass() != NULL &&
 
  177          if (first .getClass()->GetCollectionType() != ROOT::ESTLType::kNotSTL && first .getClass()->GetCollectionProxy() != NULL &&
 
  178              second.
getClass()->GetCollectionType() != ROOT::ESTLType::kNotSTL && second.
getClass()->GetCollectionProxy() != NULL) {
 
  180            std::unique_ptr<TVirtualCollectionProxy> 
p1(first .getClass()->GetCollectionProxy()->Generate());
 
  181            std::unique_ptr<TVirtualCollectionProxy> p2(second.
getClass()->GetCollectionProxy()->Generate());
 
  183            p1->PushProxy(
const_cast<char*
>(first .getAddress()));
 
  184            p2->PushProxy(
const_cast<char*
>(second.
getAddress()));
 
  186            TDictionary* d1 = TDictionary::GetDictionary(
p1->GetType() == EDataType::kNoType_t ? 
p1->GetValueClass()->GetName() : TDataType::GetTypeName(
p1->GetType()));
 
  187            TDictionary* d2 = TDictionary::GetDictionary(p2->GetType() == EDataType::kNoType_t ? p2->GetValueClass()->GetName() : TDataType::GetTypeName(p2->GetType()));
 
  189            DEBUG(
"proxy:  " << 
p1->GetCollectionClass()->GetName() << 
" " << d1->GetName() << 
"(" << 
p1->Size() << 
");" << endl);
 
  190            DEBUG(
"proxy:  " << p2->GetCollectionClass()->GetName() << 
" " << d2->GetName() << 
"(" << p2->Size() << 
");" << endl);
 
  192            if (
p1->Size() != p2->Size()) {
 
  196            for (UInt_t i = 0; (i != 
p1->Size() &&
 
  197                                i != p2->Size()); ++i) {
 
  199              DEBUG(
"index:  " << d1->GetName() << 
"[" << i << 
"] " << endl);
 
  212            if (first .getClass()->GetListOfBases() != NULL &&
 
  213                second.
getClass()->GetListOfBases() != NULL) {
 
  215              std::unique_ptr<TIterator> i1(first .getClass()->GetListOfBases()->MakeIterator());
 
  216              std::unique_ptr<TIterator> i2(second.
getClass()->GetListOfBases()->MakeIterator());
 
  218              for (
const TBaseClass *
p1, *p2; ((
p1 = (
const TBaseClass*) i1->Next()) != NULL &&
 
  219                                               (p2 = (
const TBaseClass*) i2->Next()) != NULL); ) {
 
  224                  DEBUG(
"base:   " << 
p1->GetName() << endl);
 
  234            if (first .getClass()->GetListOfDataMembers() != NULL &&
 
  235                second.
getClass()->GetListOfDataMembers() != NULL) {
 
  237              std::unique_ptr<TIterator> i1(first .getClass()->GetListOfDataMembers()->MakeIterator());
 
  238              std::unique_ptr<TIterator> i2(second.
getClass()->GetListOfDataMembers()->MakeIterator());
 
  240              for (
const TDataMember *
p1, *p2; ((
p1 = (
const TDataMember*) i1->Next()) != NULL &&
 
  241                                                (p2 = (
const TDataMember*) i2->Next()) != NULL); ) {
 
  247                  DEBUG(
"member: " << 
p1->GetTrueTypeName() << 
" " << 
p1->GetName() << 
";" << endl);