code: def extract_options(args)
        attributes = Hash === args.last ? args.pop : {}
        body = attributes.delete(:body)
        soap_action = attributes.delete(:soap_action)
  
        namespace_identifier = args.size > 1 ? args.shift.to_sym : nil
        input = args.first
  
        remove_blank_values(
          :namespace_identifier => namespace_identifier,
          :input                => input,
          :attributes           => attributes,
          :body                 => body,
          :soap_action          => soap_action
        )
      end
docs: Expects an Array of +args+ and returns a Hash containing the SOAP input,
   the namespace (might be +nil+), the SOAP action (might be +nil+),
   the SOAP body (might be +nil+), and a Hash of attributes for the input
   tag (which might be empty).