docs: public void performRetrievalTasks()
      {
          if (m_retrievalTasks == null)
          {
              return;
          }
  
          while (m_retrievalTasks.size() > 0)
          {
              HashMap tmp = m_retrievalTasks;
              m_retrievalTasks = new HashMap();
              // during execution of these tasks new tasks may be added
  
              for (Iterator it = tmp.entrySet().iterator(); it.hasNext(); )
              {
                  Map.Entry entry = (Map.Entry) it.next();
                  Object key = entry.getKey();
  
                  if (!(key instanceof ObjectReferenceDescriptor))
                  {
                      continue;
                  }
  
                  ObjectReferenceDescriptor ord = (ObjectReferenceDescriptor) key;
                  RelationshipPrefetcher prefetcher;
                  ArrayList owners = (ArrayList) entry.getValue();
  
  //                if (ord instanceof SuperReferenceDescriptor || ord.isLazy() || (ord.getItemProxyClass() != null))
                  if (ord.isLazy() || (ord.getItemProxyClass() != null))
                  {
                      continue;
                  }
  
                  prefetcher = pb.getRelationshipPrefetcherFactory().createRelationshipPrefetcher(ord);
                  prefetcher.prefetchRelationship(owners);
                  it.remove();
              }
          }
      }