/**
  * Should only be called from a CentralStore or give unpredictable results
  * @param string $objectName
  * @param ReferenceableObject $ref
  * @param bool $nested
  * @param string $type
  * @return Address|AddressGroup|null
  */
 public function find($objectName, $ref = null, $nested = true, $type = '')
 {
     $f = null;
     if (isset($this->all[$objectName])) {
         $this->all[$objectName]->addReference($ref);
         if ($type == 'tmp') {
             if ($this->all[$objectName]->isTmpAddr()) {
                 return $this->all[$objectName];
             }
             return null;
         }
         return $this->all[$objectName];
     }
     if ($nested && isset($this->panoramaShared)) {
         $f = $this->panoramaShared->find($objectName, $ref, false, $type);
         if (!is_null($f)) {
             return $f;
         }
     } else {
         if ($nested && isset($this->panoramaDG)) {
             $f = $this->panoramaDG->find($objectName, $ref, false, $type);
             if (!is_null($f)) {
                 return $f;
             }
         }
     }
     if ($nested && $this->parentCentralStore) {
         $f = $this->parentCentralStore->find($objectName, $ref, $nested, $type);
     }
     return $f;
 }