def __init__(self,
              converter_caps=None,
              pre_converter=None,
              registry=None,
              externalizer=None,
              source_ver=None,
              target_ver=None):
     global _global_registry
     assert ((source_ver is None) and (target_ver is None)) \
         or ((source_ver is not None) and (target_ver is not None))
     self.converter_capabilities = converter_caps or DEFAULT_CONVERTER_CAPS
     self._pre_converter = pre_converter and IConverter(pre_converter)
     self._registry = IRegistry(registry) if registry else _global_registry
     self._externalizer = externalizer and IExternalizer(externalizer)
     self._source_ver = source_ver
     self._target_ver = target_ver
     self.reset()