docs: private Map<String, Macro> parsePredefinedUnitMacros(Map<String, Macro> configuredMacros) {
      if (!ctorInProgress || (unitMacros != null)) {
        throw new IllegalStateException("Preconditions for initial fill-out of predefinedUnitMacros were violated");
      }
  
      if (conf.getCompilationUnitSourceFiles().isEmpty() && (conf.getGlobalCompilationUnitSettings() == null)) {
        // configuration doesn't contain any settings for compilation units.
        // CxxPreprocessor will use fixedMacros only
        return Collections.emptyMap();
      }
  
      unitMacros = new MapChain<>();
      if (getMacros() != unitMacros) {
        throw new IllegalStateException("expected unitMacros as active macros map");
      }
  
      try {
        getMacros().setHighPrio(true);
        getMacros().putAll(Macro.UNIT_MACROS);
        getMacros().putAll(configuredMacros);
        parseForcedIncludes();
        final HashMap<String, Macro> result = new HashMap<>(unitMacros.getHighPrioMap());
        return result;
      } finally {
        getMacros().setHighPrio(false); // just for the symmetry
        unitMacros = null; // remove unitMacros, switch getMacros() to fixedMacros
      }
    }