code: def loadFeatureWriters(ufo, ignoreErrors=True):
      
      if FEATURE_WRITERS_KEY not in ufo.lib:
          return None
      writers = []
      for wdict in ufo.lib[FEATURE_WRITERS_KEY]:
          try:
              moduleName = wdict.get("module", __name__)
              className = wdict["class"]
              options = wdict.get("options", {})
              if not isinstance(options, dict):
                  raise TypeError(type(options))
              module = importlib.import_module(moduleName)
              klass = getattr(module, className)
              if not isValidFeatureWriter(klass):
                  raise TypeError(klass)
              writer = klass(**options)
          except Exception:
              if ignoreErrors:
                  logger.exception("failed to load feature writer: %r", wdict)
                  continue
              raise
          writers.append(writer)
      return writers
docs: Check UFO lib for key "com.github.googlei18n.ufo2ft.featureWriters",
      containing a list of dicts, each having the following key/value pairs:
      For example:
  
        {
          "module": "myTools.featureWriters",  # default: ufo2ft.featureWriters
          "class": "MyKernFeatureWriter",  # required
          "options": {"doThis": False, "doThat": True},
        }
  
      Import each feature writer class from the specified module (default is
      the built-in ufo2ft.featureWriters), and instantiate it with the given
      'options' dict.
  
      Return the list of feature writer objects.
      If the 'featureWriters' key is missing from the UFO lib, return None.
  
      If an exception occurs and 'ignoreErrors' is True, the exception message
      is logged and the invalid writer is skipped, otrherwise it's propagated.