/**
  * Overrides the method SoapClient.__soapCall() to process the
  * response from the SOAP call.
  * @param string $function_name the name of the function being called
  * @param array $arguments the arguments to that function
  * @param array $options the options for the SOAP call
  * @param array $input_headers the optional input headers
  * @param array $output_headers the options output headers
  * @return mixed the return from the parent __soapCall
  * @throws SOAPFault if there was an exception making the request
  */
 function __soapCall($function_name, $arguments, $options = NULL, $input_headers = NULL, &$output_headers = NULL)
 {
     DeprecationUtils::CheckAdsUserUsingOAuth2($this->user);
     try {
         $input_headers[] = $this->GenerateSoapHeader();
         $this->lastHeaders = $input_headers;
         $this->lastArguments = $arguments;
         $response = parent::__soapCall($function_name, $arguments, $options, $input_headers, $output_headers);
         $this->ProcessResponse($this->lastRequest, $this->__getLastResponse(), $function_name);
         return $response;
     } catch (SoapFault $e) {
         $this->ProcessResponse($this->lastRequest, $this->__getLastResponse(), $function_name, $e);
         throw $e;
     }
 }