private void ResolveMacros([NotNull] IT4File file) { var context = Context.MostSuitableProjectFile; var logicalSourceFile = LogicalSourceFile; if (context == null || logicalSourceFile == null || MacroResolver == null) { return; } var macros = new List <string>(); foreach (var directive in file.BlocksEnumerable.OfType <IT4DirectiveWithPath>()) { macros.AddRange(directive.RawMacros); } IReadOnlyDictionary <string, string> resolvedMacros; if (macros.IsEmpty()) { resolvedMacros = EmptyDictionary <string, string> .Instance; } else { resolvedMacros = MacroResolver.ResolveHeavyMacros(macros, context); } foreach (var directive in file.BlocksEnumerable.OfType <IT4DirectiveWithPath>()) { directive.InitializeResolvedPath(resolvedMacros, logicalSourceFile, context); } }