@Override
  public void initializeComponent() {
    initStandardFileTypes();

    if (!pendingFileTypes.isEmpty()) {
      instantiatePendingFileTypes();
    }

    if (!unresolvedMappings.isEmpty()) {
      for (StandardFileType pair : standardFileTypes.values()) {
        registerReDetectedMappings(pair);
      }
    }

    // resolve unresolved mappings before certain plugin is initialized
    if (!unresolvedMappings.isEmpty()) {
      for (StandardFileType pair : standardFileTypes.values()) {
        bindUnresolvedMappings(pair);
      }
    }
    if (!unresolvedMappings.isEmpty()) {
      for (Map.Entry<FileNameMatcher, String> entry : unresolvedMappings.entrySet()) {
        tryToResolveMapping(entry.getValue(), entry.getKey());
      }
    }
    if (!unresolvedHashBangs.isEmpty()) {
      Map<String, String> hashBangs = new HashMap<>(unresolvedHashBangs);
      unresolvedHashBangs.clear();
      registerHashBangs(hashBangs, false);
    }

    boolean isAtLeastOneStandardFileTypeHasBeenRead = false;
    for (FileTypeWithDescriptor ftd : schemeManager.loadSchemes()) {
      isAtLeastOneStandardFileTypeHasBeenRead |= initialAssociations.hasAssociationsFor(ftd.fileType());
    }
    if (isAtLeastOneStandardFileTypeHasBeenRead) {
      restoreStandardFileExtensions();
    }
  }
@Override
  public void initializeComponent()