/**
  * @param Tag $parent
  * @param Struct $struct
  * @param AttributeHandler $attribute
  */
 private function parseRestrictionAttribute(Tag $parent, Struct $struct, AttributeHandler $attribute)
 {
     if ($attribute->getName() === 'base' && $attribute->getValue() !== $parent->getAttributeName()) {
         $struct->setInheritance($attribute->getValue());
     } else {
         $struct->addMeta($attribute->getName(), $attribute->getValue(true));
     }
 }
 /**
  * Enumeration does not need its own value as meta information, it's like the name for struct attribute
  * @param AttributeHandler $tagAttribute
  * @param AbstractModel $model
  */
 protected function parseTagAttributeValue(AttributeHandler $tagAttribute, AbstractModel $model)
 {
     if (!$model instanceof StructValue) {
         $model->addMeta($tagAttribute->getName(), $tagAttribute->getValue(true));
     }
 }
 /**
  * @param Tag $tag
  * @param Tag $child
  * @param AttributeHandler $attribute
  * @return TagRestriction
  */
 private function parseRestrictionChildAttribute(Tag $tag, Tag $child, AttributeHandler $attribute)
 {
     if (strtolower($attribute->getName()) === 'arraytype' && ($model = $this->getModel($tag)) instanceof Struct) {
         $model->setInheritance($attribute->getValue());
     }
     return $this;
 }