/**
  * Recode an hash array into an object
  * 
  * @param array $received The received hash array
  * @param PhpWsdlObject $type The type
  * @param PhpWsdl $server The PhpWsdl object
  * @return object The object
  */
 private function RecodeParameter($received, $type, $server)
 {
     PhpWsdl::Debug('Recode "' . $type->Name . '"');
     $obj = new stdClass();
     $i = -1;
     $len = sizeof($type->Elements);
     while (++$i < $len) {
         $e = $type->Elements[$i];
         $name = $e->Name;
         if (!in_array($e->Type, PhpWsdl::$BasicTypes)) {
             $t = $server->GetType($e->Type);
             if (is_null($t)) {
                 throw new Exception('Could not recode "' . $e->Type . '"');
             }
             if (get_class($t) == 'PhpWsdlEnum') {
                 $basic = in_array($t->Type, PhpWsdl::$BasicTypes);
             } else {
                 $basic = false;
                 $t = null;
             }
         } else {
             $basic = true;
             $t = null;
         }
         if (!$basic) {
             PhpWsdl::Debug('Recode element "' . $name . '" as object');
             $obj[$name] = $this->RecodeParameter($received[$name], $t, $server);
         } else {
             PhpWsdl::Debug('Set element "' . $name . '"');
             $obj[$name] = $received[$name];
         }
     }
     return $obj;
 }