private void EnsureAttributesExist(TypeCompilationState compilationState) { var moduleBuilder = compilationState.ModuleBuilderOpt; if (moduleBuilder is null) { return; } if (RefKind == RefKind.RefReadOnly) { moduleBuilder.EnsureIsReadOnlyAttributeExists(); } ParameterHelpers.EnsureIsReadOnlyAttributeExists(moduleBuilder, Parameters); if (moduleBuilder.Compilation.ShouldEmitNativeIntegerAttributes()) { if (ReturnType.ContainsNativeIntegerWrapperType()) { moduleBuilder.EnsureNativeIntegerAttributeExists(); } ParameterHelpers.EnsureNativeIntegerAttributeExists(moduleBuilder, Parameters); } ParameterHelpers.EnsureLifetimeAnnotationAttributeExists(moduleBuilder, Parameters); if (compilationState.Compilation.ShouldEmitNullableAttributes(this)) { if (ShouldEmitNullableContextValue(out _)) { moduleBuilder.EnsureNullableContextAttributeExists(); } if (ReturnTypeWithAnnotations.NeedsNullableAttribute()) { moduleBuilder.EnsureNullableAttributeExists(); } } ParameterHelpers.EnsureNullableAttributeExists(moduleBuilder, this, Parameters); }