sub [% operation.get_name %] {
    my ($self, $body, $header) = @_;
    die "[% operation.get_name %] must be called as object method (\$self is <$self>)" if not blessed($self);
    return $self->SUPER::call({
        operation => '[% operation.get_name %]',
        soap_action => '[% operation.first_operation.get_soapAction %]',
        style => [% style = operation.first_operation.get_style || binding.get_style;
    IF style != "document";
        THROW NOT_SUPPORTED "SOAP::WSDL supports document encoding only - $style found";
    END;
-%]
'[% style %]',
        body => {
            [% INCLUDE Interface/Body.tt( item = operation.first_input.first_body ); %]
        },
        header => {
            [% INCLUDE Interface/Header.tt( item = operation.first_input.first_header ); %]
        },
        headerfault => {
            [% INCLUDE Interface/Header.tt( item = operation.first_input.first_headerfault ); %]
        }
    }, $body, $header);
}
