private boolean resolveGroupReferences() {
   for (T obj : getAllObjects()) {
     if (allRef != null) {
       allRef.addResolution(obj);
     }
     for (Map.Entry<FixedStringList, WeakReference<CDOMGroupRef<T>>> me :
         typeReferences.entrySet()) {
       CDOMGroupRef<T> trt = me.getValue().get();
       if (trt != null) {
         boolean typeOkay = true;
         for (String type : me.getKey()) {
           if (!obj.isType(type)) {
             typeOkay = false;
             break;
           }
         }
         if (typeOkay) {
           trt.addResolution(obj);
         }
       }
     }
   }
   if (allRef != null && allRef.getObjectCount() == 0) {
     Logging.errorPrint(
         "Error: No "
             + factory.getReferenceDescription()
             + " objects were loaded but were referred to in the data");
     fireUnconstuctedEvent(allRef);
     return false;
   }
   return true;
 }
 /**
  * Resolves the references that have been requested from this AbstractReferenceManufacturer, using
  * the objects contained within this AbstractReferenceManufacturer.
  *
  * <p>This method guarantees that all references are resolved.
  *
  * <p>Note: Implementations of AbstractReferenceManufacturer may place limits on the number of
  * times resolveReferences() can be called. The reason for this is that some references may only
  * be resolved once, and the AbstractReferenceManufacturer is not required to maintain a list of
  * references that have been resolved and those which have not been resolved.
  */
 @Override
 public boolean resolveReferences(UnconstructedValidator validator) {
   boolean resolutionSuccessful = resolvePrimitiveReferences(validator);
   resolutionSuccessful &= resolveGroupReferences();
   for (WeakReference<CDOMGroupRef<T>> ref : typeReferences.values()) {
     CDOMGroupRef<T> trt = ref.get();
     if (trt != null && trt.getObjectCount() == 0) {
       Logging.errorPrint(
           "Error: No "
               + factory.getReferenceDescription()
               + " objects of "
               + trt.getLSTformat(false)
               + " were loaded but were referred to in the data");
       fireUnconstuctedEvent(trt);
       resolutionSuccessful = false;
     }
   }
   isResolved = true;
   return resolutionSuccessful;
 }