protected function launch($element, $argument, $memoized)
 {
     if (is_array($element)) {
         $mem = array();
         // Memoization
         foreach ($element as $sub) {
             $temp = $this->launch($sub, $argument, false);
             if (!is_null($temp)) {
                 $mem[] = $temp;
             }
         }
         return $mem;
     } elseif ($element instanceof \collections\ILaunched) {
         $element->init($argument, $memoized);
         return $element->launch(NULL);
     } elseif ($element instanceof \Closure || is_callable($element)) {
         return $memoized ? call_user_func_array($element, $argument) : $element($argument);
     } elseif (\Launcher::can_boot($element)) {
         return \Launcher::boot($element);
     }
     return $element;
     // Default
 }