/**
  *  Create a named task and configure it up to the init() stage.
  *
  * @param  UnknownElement $ue The unknwon element to create a task from
  * @param  RuntimeConfigurable $w The wrapper object
  * @param  boolean $onTopLevel Whether to treat this task as if it is top-level.
  * @throws BuildException
  * @return Task                The freshly created task
  */
 protected function makeTask(UnknownElement $ue, RuntimeConfigurable $w, $onTopLevel = false)
 {
     $task = $this->project->createTask($ue->getTag());
     if ($task === null) {
         if (!$onTopLevel) {
             throw new BuildException("Could not create task of type: '" . $this->elementName . "'. Make sure that this class has been declared using taskdef.");
         }
         return null;
     }
     // used to set the location within the xmlfile so that exceptions can
     // give detailed messages
     $task->setLocation($this->getLocation());
     $attrs = $w->getAttributes();
     if (isset($attrs['id'])) {
         $this->project->addReference($attrs['id'], $task);
     }
     if ($this->target !== null) {
         $task->setOwningTarget($this->target);
     }
     $task->init();
     return $task;
 }
 /**
  * @param IntrospectionHelper $ih
  * @param                     $parent
  * @param UnknownElement      $child
  * @param RuntimeConfigurable $childWrapper
  *
  * @return bool
  */
 public function handleChild(IntrospectionHelper $ih, $parent, UnknownElement $child, RuntimeConfigurable $childWrapper)
 {
     $childWrapper->setProxy($realChild);
     if ($realChild instanceof Task) {
         $realChild->setRuntimeConfigurableWrapper($childWrapper);
     }
     $childWrapper->maybeConfigure($this->project);
     $child->handleChildren($realChild, $childWrapper);
     return true;
 }