public function addDescription(Description $description) { if (!$description instanceof ThingDescription) { if ($description instanceof Conjunction) { // absorb sub-conjunctions foreach ($description->getDescriptions() as $subdesc) { $this->m_descriptions[] = $subdesc; } } else { $this->m_descriptions[] = $description; } // move print descriptions downwards ///TODO: This may not be a good solution, since it does modify $description and since it does not react to future changes $this->m_printreqs = array_merge($this->m_printreqs, $description->getPrintRequests()); $description->setPrintRequests(array()); } }