private void ProcessType(bool? assemblyConfigureAwaitValue, TypeDefinition type) { if (type.IsCompilerGenerated() && type.IsIAsyncStateMachine()) { return; } var configureAwaitValue = (bool?)type.GetConfigureAwaitAttribute()?.ConstructorArguments[0].Value; configureAwaitValue = configureAwaitValue ?? assemblyConfigureAwaitValue; foreach (var method in type.Methods) { var localConfigureAwaitValue = (bool?)method.GetConfigureAwaitAttribute()?.ConstructorArguments[0].Value; var localConfigWasSet = localConfigureAwaitValue.HasValue; localConfigureAwaitValue = localConfigureAwaitValue ?? configureAwaitValue; if (localConfigureAwaitValue == null) continue; var asyncStateMachineType = method.GetAsyncStateMachineType(); if (asyncStateMachineType != null) { AddAwaitConfigToAsyncMethod(asyncStateMachineType, localConfigureAwaitValue.Value); } else if (localConfigWasSet) { LogWarning($"ConfigureAwaitAttribue applied to non-async method '{method.FullName}'."); continue; } } }