class_docstr: Configurable asynchronous DNS resolver interface.
  
  By default, a blocking implementation is used (which simply calls
  `socket.getaddrinfo`).  An alternative implementation can be
  chosen with the `Resolver.configure <.Configurable.configure>`
  class method::
  
      Resolver.configure('tornado.netutil.ThreadedResolver')
  
  The implementations of this interface included with Tornado are
  
  * `tornado.netutil.BlockingResolver`
  * `tornado.netutil.ThreadedResolver`
  * `tornado.netutil.OverrideResolver`
  * `tornado.platform.twisted.TwistedResolver`
  * `tornado.platform.caresresolver.CaresResolver`
docstr: Closes the `Resolver`, freeing any resources used.
  
  .. versionadded:: 3.1
code: def close(self):
      """Closes the `Resolver`, freeing any resources used.
  
      .. versionadded:: 3.1
  
      """
      pass
  
imports: from __future__ import absolute_import, division, print_function
  import errno
  import os
  import sys
  import socket
  import stat
  from tornado.concurrent import dummy_executor, run_on_executor
  from tornado.ioloop import IOLoop
  from tornado.platform.auto import set_close_exec
  from tornado.util import PY3, Configurable, errno_from_exception
label_desc: Use image node_id 4 for calling the Resolver obj's underlying member method code with example usage: obj.close() without return types