code: def download(input, filename, representation, overwrite=False, resolvers=None, get3d=False, **kwargs):
      
      result = resolve(input, representation, resolvers, get3d, **kwargs)
      # Just log and return if nothing resolved
      if not result:
          log.debug('No file to download.')
          return
      # Only overwrite an existing file if explicitly instructed to.
      if not overwrite and os.path.isfile(filename):
          raise IOError("%s already exists. Use 'overwrite=True' to overwrite it." % filename)
      # Ensure file ends with a newline
      if not result.endswith('\n'):
          result += '\n'
      with open(filename, 'w') as f:
          f.write(result)
docs: Convenience function to save a CIR response as a file.
  
      This is just a simple wrapper around the resolve function.
  
      :param string input: Chemical identifier to resolve
      :param string filename: File path to save to
      :param string representation: Desired output representation
      :param bool overwrite: (Optional) Whether to allow overwriting of an existing file
      :param list(string) resolvers: (Optional) Ordered list of resolvers to use
      :param bool get3d: (Optional) Whether to return 3D coordinates (where applicable)
      :raises HTTPError: if CIR returns an error code
      :raises ParseError: if CIR response is uninterpretable
      :raises IOError: if overwrite is False and file already exists