public function decodeCall($request) {

        $xml_data = simplexml_load_string($request);

        if ( $xml_data === false ) throw new XmlrpcException("Not a valid XMLRPC call");

        if ( !isset($xml_data->methodName) ) throw new XmlrpcException("Uncomprensible request");
            
        $method_name = $this->decodeString($xml_data->methodName[0]);

        if ( $method_name == "system.multicall" ) {

            try {
        
                $data = $this->multicallDecode($xml_data);

            } catch (XmlrpcException $xe) {
                
                throw $xe;

            }

        } else {

            $parsed = array();

            try {
            
                foreach ( $xml_data->params->param as $param ) $parsed[] = $this->decodeValue($param->value);

            } catch (XmlrpcException $xe) {
                
                throw $xe;

            }

            $data = array($method_name, $parsed);

        }

        return $data;

    }