docs: def initialize(self):
          """Initializes the library manager
  
          It searches through all library paths given in the config file for libraries, and loads the states.
  
          This cannot be done in the __init__ function as the library_manager can be compiled and executed by
          singleton.py before the state*.pys are loaded
          """
          logger.debug("Initializing LibraryManager: Loading libraries ... ")
          self._libraries = {}
          self._library_root_paths = {}
          self._replaced_libraries = {}
          self._skipped_states = []
          self._skipped_library_roots = []
  
          # 1. Load libraries from config.yaml
          for library_root_key, library_root_path in config.global_config.get_config_value("LIBRARY_PATHS").items():
              library_root_path = self._clean_path(library_root_path)
              if os.path.exists(library_root_path):
                  logger.debug("Adding library root key '{0}' from path '{1}'".format(
                      library_root_key, library_root_path))
                  self._load_libraries_from_root_path(library_root_key, library_root_path)
              else:
                  logger.warning("Configured path for library root key '{}' does not exist: {}".format(
                      library_root_key, library_root_path))
  
          # 2. Load libraries from RAFCON_LIBRARY_PATH
          library_path_env = os.environ.get('RAFCON_LIBRARY_PATH', '')
          library_paths = set(library_path_env.split(os.pathsep))
          for library_root_path in library_paths:
              if not library_root_path:
                  continue
              library_root_path = self._clean_path(library_root_path)
              if not os.path.exists(library_root_path):
                  logger.warning("The library specified in RAFCON_LIBRARY_PATH does not exist: {}".format(library_root_path))
                  continue
              _, library_root_key = os.path.split(library_root_path)
              if library_root_key in self._libraries:
                  if os.path.realpath(self._library_root_paths[library_root_key]) == os.path.realpath(library_root_path):
                      logger.info("The library root key '{}' and root path '{}' exists multiple times in your environment"
                                  " and will be skipped.".format(library_root_key, library_root_path))
                  else:
                      logger.warning("The library '{}' is already existing and will be overridden with '{}'".format(
                          library_root_key, library_root_path))
                      self._load_libraries_from_root_path(library_root_key, library_root_path)
              else:
                  self._load_libraries_from_root_path(library_root_key, library_root_path)
              logger.debug("Adding library '{1}' from {0}".format(library_root_path, library_root_key))
  
          self._libraries = OrderedDict(sorted(self._libraries.items()))
          logger.debug("Initialization of LibraryManager done")