/**
  * @param ClassDescriptor|InterfaceDescriptor|TraitDescriptor $parent
  */
 public function setParent($parent)
 {
     $this->setFullyQualifiedStructuralElementName($parent->getFullyQualifiedStructuralElementName() . '::' . $this->getName() . '()');
     // reset cached inherited element so that it can be re-detected.
     $this->inheritedElement = null;
     $this->parent = $parent;
 }
 /**
  * The expansion step of Before creates a MethodCallWrapper
  * for each wrappableMethod in the methods listed in the Annotation's
  * parameters.
  * 
  * @param string $class Classname the annotation is applied to.
  * @param mixed $reflection The Reflection(Class|Method|Property) object the annotation is applied to.
  * @param ClassDescriptor $descriptor The ClassDescriptor being manipulated.
  */
 protected function expand($class, $reflection, $descriptor)
 {
     $methodName = $reflection->getName();
     foreach ($this->values as $wrappableMethod) {
         $wrapper = new MethodCallWrapper();
         $wrapper->addCallBefore($methodName);
         $descriptor->addWrapper($wrappableMethod, $wrapper);
     }
 }
 /**
  * @param ClassDescriptor|InterfaceDescriptor|TraitDescriptor $parent
  */
 public function setParent($parent)
 {
     $this->setFullyQualifiedStructuralElementName($parent->getFullyQualifiedStructuralElementName() . '::' . $this->getName() . '()');
     $this->parent = $parent;
 }