/**
  * Return the model on which the method will be called
  * @param Tag $tag
  * @return Struct|Method
  */
 protected function getModel(Tag $tag)
 {
     switch ($tag->getName()) {
         case WsdlDocument::TAG_OPERATION:
             $model = $this->getMethodByName($tag->getAttributeName());
             break;
         default:
             $model = $this->getStructByName($tag->getAttributeName());
             break;
     }
     return $model;
 }
 /**
  * @param Tag $tag
  * @param Tag $child
  * @return TagRestriction
  */
 private function parseRestrictionChild(Tag $tag, Tag $child)
 {
     if ($child->hasAttributeValue() && ($model = $this->getModel($tag)) instanceof Struct) {
         $model->addMeta($child->getName(), $child->getValueAttributeValue(true));
     } else {
         foreach ($child->getAttributes() as $attribute) {
             $this->parseRestrictionChildAttribute($tag, $child, $attribute);
         }
     }
     return $this;
 }
 /**
  * @param Tag $tag
  * @param Tag $child
  */
 private function parseRestrictionChild(Tag $tag, Tag $child)
 {
     if ($child->hasAttributeValue() && ($model = $this->getModel($tag)) instanceof Struct) {
         $model->addMeta($child->getName(), $child->getValueAttributeValue(true));
     }
 }