def resolve
      return nil if tried_resolve?
      resolvers.each do |resolver_config|
        begin
          resolver = resolver_config[:resolver]
          if resolver.respond_to?(:call)
            result = resolver.call(resolver_config[:hint], self)
          else
            result = resolver.new(resolver_config[:hint], self).resolve
          end
        rescue StandardError => ex
          raise ex, "Resolver '#{resolver_config[:origin]}' for '#{name}' : #{ex.message}"
        end
        unless result.nil?
          @origin = resolver_config[:origin]
          return result
        end
      end
      nil
    ensure
      set_tried
    end
def resolve
      return nil if tried_resolve?
      resolvers.each do |resolver_config|
        begin
          resolver = resolver_config[:resolver]
          if resolver.respond_to?(:call)
            result = resolver.call(resolver_config[:hint], self)
          else
            result = resolver.new(resolver_config[:hint], self).resolve
          end
        rescue StandardError => ex
          raise ex, "Resolver '#{resolver_config[:origin]}' for '#{name}' : #{ex.message}"
        end
        unless result.nil?
          @origin = resolver_config[:origin]
          return result
        end
      end
      nil
    ensure
      set_tried
    end
Run resolvers
 @raise [TypeError, ArgumentError]