docs: public CollectionDescriptorDef getRemoteCollection()
      {
          if (!hasProperty(PropertyHelper.OJB_PROPERTY_INDIRECTION_TABLE))
          {
              return null;
          }
          ModelDef                modelDef         = (ModelDef)getOwner().getOwner();
          String                  elementClassName = getProperty(PropertyHelper.OJB_PROPERTY_ELEMENT_CLASS_REF);
          ClassDescriptorDef      elementClass     = modelDef.getClass(elementClassName);
          String                  indirTable       = getProperty(PropertyHelper.OJB_PROPERTY_INDIRECTION_TABLE);
          boolean                 hasRemoteKey     = hasProperty(PropertyHelper.OJB_PROPERTY_REMOTE_FOREIGNKEY);
          String                  remoteKey        = getProperty(PropertyHelper.OJB_PROPERTY_REMOTE_FOREIGNKEY);
          CollectionDescriptorDef remoteCollDef    = null;
  
          // find the collection in the element class that has the same indirection table
          for (Iterator it = elementClass.getCollections(); it.hasNext();)
          {
              remoteCollDef = (CollectionDescriptorDef)it.next();
              if (indirTable.equals(remoteCollDef.getProperty(PropertyHelper.OJB_PROPERTY_INDIRECTION_TABLE)) &&
                  (this != remoteCollDef) &&
                  (!hasRemoteKey || CommaListIterator.sameLists(remoteKey, remoteCollDef.getProperty(PropertyHelper.OJB_PROPERTY_FOREIGNKEY))))
              {
                  return remoteCollDef;
              }
          }
          return null;
      }