# File lib/soap/mapping/wsdlencodedregistry.rb, line 57
  def soap2obj(node, obj_class = nil)
    cause = nil
    begin
      unless obj_class
        typestr = Mapping.safeconstname(node.elename.name)
        obj_class = Mapping.class_from_name(typestr)
      end
      return Mapping._soap2obj(node, Mapping::DefaultRegistry, obj_class)
    rescue MappingError
      cause = $!
    end
    if @excn_handler_soap2obj
      begin
        return @excn_handler_soap2obj.call(node) { |yield_node|
            Mapping._soap2obj(yield_node, self)
          }
      rescue Exception
      end
    end
    raise MappingError.new("cannot map #{node.type.name} to Ruby object", cause)
  end