private function loadUnion(SimpleType $type, DOMElement $node) { if ($node->hasAttribute("memberTypes")) { $types = preg_split('/\\s+/', $node->getAttribute("memberTypes")); foreach ($types as $typeName) { $type->addUnion($this->findSomething('findType', $type->getSchema(), $node, $typeName)); } } $addCallback = function ($unType) use($type) { $type->addUnion($unType); }; foreach ($node->childNodes as $childNode) { switch ($childNode->localName) { case 'simpleType': call_user_func($this->loadSimpleType($type->getSchema(), $childNode, $addCallback)); break; } } }