Emitter\Model\PEAssemblyBuilder.cs (15)
415AttributeDescription.CodeAnalysisEmbeddedAttribute,
424AttributeDescription.IsReadOnlyAttribute,
433AttributeDescription.RequiresLocationAttribute,
442AttributeDescription.ParamCollectionAttribute,
451AttributeDescription.IsByRefLikeAttribute,
460AttributeDescription.IsUnmanagedAttribute,
469AttributeDescription.NullableAttribute,
478AttributeDescription.NullableContextAttribute,
487AttributeDescription.NullablePublicOnlyAttribute,
497AttributeDescription.NativeIntegerAttribute,
506AttributeDescription.ScopedRefAttribute,
515AttributeDescription.RefSafetyRulesAttribute,
524AttributeDescription.ExtensionMarkerAttribute,
595AttributeDescription description,
631NamedTypeSymbol? getExistingType(AttributeDescription description)
Symbols\Metadata\PE\PEModuleSymbol.cs (16)
311AttributeDescription filterOut1)
318AttributeDescription filterOut1,
320AttributeDescription filterOut2)
331AttributeDescription filterOut1,
333AttributeDescription filterOut2,
335AttributeDescription filterOut3,
337AttributeDescription filterOut4,
339AttributeDescription filterOut5,
341AttributeDescription filterOut6)
412bool matchesFilter(CustomAttributeHandle handle, AttributeDescription filter)
431return GetCustomAttributesForToken(token, out paramArrayAttribute, AttributeDescription.ParamArrayAttribute);
449internal TypeSymbol TryDecodeAttributeWithTypeArgument(EntityHandle handle, AttributeDescription attributeDescription)
471filterOut1: AttributeDescription.CaseSensitiveExtensionAttribute,
473filterOut2: AttributeDescription.IsReadOnlyAttribute);
674return assemblyAttributes.IndexOfAttribute(AttributeDescription.CompilationRelaxationsAttribute) >= 0;
687return assemblyAttributes.IndexOfAttribute(AttributeDescription.RuntimeCompatibilityAttribute) >= 0;
Symbols\Metadata\PE\PEParameterSymbol.cs (22)
632AttributeDescription.IDispatchConstantAttribute));
648AttributeDescription.IUnknownConstantAttribute));
664AttributeDescription.CallerLineNumberAttribute));
680AttributeDescription.CallerFilePathAttribute));
696AttributeDescription.CallerMemberNameAttribute));
771var info = _moduleSymbol.Module.FindTargetAttribute(_handle, AttributeDescription.CallerArgumentExpressionAttribute);
809if (module.HasAttribute(handle, AttributeDescription.AllowNullAttribute)) annotations |= FlowAnalysisAnnotations.AllowNull;
810if (module.HasAttribute(handle, AttributeDescription.DisallowNullAttribute)) annotations |= FlowAnalysisAnnotations.DisallowNull;
812if (module.HasAttribute(handle, AttributeDescription.MaybeNullAttribute))
816else if (module.HasMaybeNullWhenOrNotNullWhenOrDoesNotReturnIfAttribute(handle, AttributeDescription.MaybeNullWhenAttribute, out bool when))
821if (module.HasAttribute(handle, AttributeDescription.NotNullAttribute))
825else if (module.HasMaybeNullWhenOrNotNullWhenOrDoesNotReturnIfAttribute(handle, AttributeDescription.NotNullWhenAttribute, out bool when))
830if (module.HasMaybeNullWhenOrNotNullWhenOrDoesNotReturnIfAttribute(handle, AttributeDescription.DoesNotReturnIfAttribute, out bool condition))
1103AttributeDescription filterOutConstantAttributeDescription = default(AttributeDescription);
1109filterOutConstantAttributeDescription = AttributeDescription.DateTimeConstantAttribute;
1113filterOutConstantAttributeDescription = AttributeDescription.DecimalConstantAttribute;
1128filterOutParamArrayAttribute ? AttributeDescription.ParamArrayAttribute : default,
1130filterOutParamCollectionAttribute ? AttributeDescription.ParamCollectionAttribute : default,
1134filterIsReadOnlyAttribute ? AttributeDescription.IsReadOnlyAttribute : default,
1136filterRequiresLocationAttribute ? AttributeDescription.RequiresLocationAttribute : default,
1138AttributeDescription.ScopedRefAttribute);
Symbols\Source\SourceAssemblySymbol.cs (60)
775diagnostics.Add(ErrorCode.WRN_CmdOptionConflictsSource, NoLocation.Singleton, "DelaySign", AttributeDescription.AssemblyDelaySignAttribute.FullName);
782AttributeDescription.AssemblyDelaySignAttribute.FullName);
816diagnostics.Add(ErrorCode.ERR_CmdOptionConflictsSource, NoLocation.Singleton, AttributeDescription.AssemblyKeyNameAttribute.FullName, "CryptoKeyContainer");
820diagnostics.Add(ErrorCode.WRN_CmdOptionConflictsSource, NoLocation.Singleton, "CryptoKeyContainer", AttributeDescription.AssemblyKeyNameAttribute.FullName);
829diagnostics.Add(ErrorCode.WRN_AttributeIgnoredWhenPublicSigning, NoLocation.Singleton, AttributeDescription.AssemblyKeyNameAttribute.FullName);
853diagnostics.Add(ErrorCode.ERR_CmdOptionConflictsSource, NoLocation.Singleton, AttributeDescription.AssemblyKeyFileAttribute.FullName, "CryptoKeyFile");
857diagnostics.Add(ErrorCode.WRN_CmdOptionConflictsSource, NoLocation.Singleton, "CryptoKeyFile", AttributeDescription.AssemblyKeyFileAttribute.FullName);
866diagnostics.Add(ErrorCode.WRN_AttributeIgnoredWhenPublicSigning, NoLocation.Singleton, AttributeDescription.AssemblyKeyFileAttribute.FullName);
1150if (attribute.IsTargetAttribute(AttributeDescription.AssemblyTitleAttribute) ||
1151attribute.IsTargetAttribute(AttributeDescription.AssemblyDescriptionAttribute) ||
1152attribute.IsTargetAttribute(AttributeDescription.AssemblyConfigurationAttribute) ||
1153attribute.IsTargetAttribute(AttributeDescription.AssemblyCultureAttribute) ||
1154attribute.IsTargetAttribute(AttributeDescription.AssemblyVersionAttribute) ||
1155attribute.IsTargetAttribute(AttributeDescription.AssemblyCompanyAttribute) ||
1156attribute.IsTargetAttribute(AttributeDescription.AssemblyProductAttribute) ||
1157attribute.IsTargetAttribute(AttributeDescription.AssemblyInformationalVersionAttribute) ||
1158attribute.IsTargetAttribute(AttributeDescription.AssemblyCopyrightAttribute) ||
1159attribute.IsTargetAttribute(AttributeDescription.AssemblyTrademarkAttribute) ||
1160attribute.IsTargetAttribute(AttributeDescription.AssemblyKeyFileAttribute) ||
1161attribute.IsTargetAttribute(AttributeDescription.AssemblyKeyNameAttribute) ||
1162attribute.IsTargetAttribute(AttributeDescription.AssemblyAlgorithmIdAttribute) ||
1163attribute.IsTargetAttribute(AttributeDescription.AssemblyFlagsAttribute) ||
1164attribute.IsTargetAttribute(AttributeDescription.AssemblyDelaySignAttribute) ||
1165attribute.IsTargetAttribute(AttributeDescription.AssemblyFileVersionAttribute) ||
1166attribute.IsTargetAttribute(AttributeDescription.SatelliteContractVersionAttribute) ||
1167attribute.IsTargetAttribute(AttributeDescription.AssemblySignatureKeyAttribute))
1515attribute.IsTargetAttribute(AttributeDescription.AssemblySignatureKeyAttribute))
1521attribute.IsTargetAttribute(AttributeDescription.AssemblyKeyFileAttribute))
1527attribute.IsTargetAttribute(AttributeDescription.AssemblyKeyNameAttribute))
2371if (attribute.IsTargetAttribute(AttributeDescription.InternalsVisibleToAttribute))
2375else if (attribute.IsTargetAttribute(AttributeDescription.AssemblySignatureKeyAttribute))
2385else if (attribute.IsTargetAttribute(AttributeDescription.AssemblyKeyFileAttribute))
2389else if (attribute.IsTargetAttribute(AttributeDescription.AssemblyKeyNameAttribute))
2393else if (attribute.IsTargetAttribute(AttributeDescription.AssemblyDelaySignAttribute))
2397else if (attribute.IsTargetAttribute(AttributeDescription.AssemblyVersionAttribute))
2410else if (attribute.IsTargetAttribute(AttributeDescription.AssemblyFileVersionAttribute))
2422else if (attribute.IsTargetAttribute(AttributeDescription.AssemblyTitleAttribute))
2426else if (attribute.IsTargetAttribute(AttributeDescription.AssemblyDescriptionAttribute))
2430else if (attribute.IsTargetAttribute(AttributeDescription.AssemblyCultureAttribute))
2448else if (attribute.IsTargetAttribute(AttributeDescription.AssemblyCompanyAttribute))
2452else if (attribute.IsTargetAttribute(AttributeDescription.AssemblyProductAttribute))
2456else if (attribute.IsTargetAttribute(AttributeDescription.AssemblyInformationalVersionAttribute))
2460else if (attribute.IsTargetAttribute(AttributeDescription.SatelliteContractVersionAttribute))
2471else if (attribute.IsTargetAttribute(AttributeDescription.AssemblyCopyrightAttribute))
2475else if (attribute.IsTargetAttribute(AttributeDescription.AssemblyTrademarkAttribute))
2479else if ((signature = attribute.GetTargetAttributeSignatureIndex(AttributeDescription.AssemblyFlagsAttribute)) != -1)
2499else if (attribute.IsTargetAttribute(AttributeDescription.ClassInterfaceAttribute))
2503else if (attribute.IsTargetAttribute(AttributeDescription.TypeLibVersionAttribute))
2507else if (attribute.IsTargetAttribute(AttributeDescription.ComCompatibleVersionAttribute))
2511else if (attribute.IsTargetAttribute(AttributeDescription.GuidAttribute))
2516else if (attribute.IsTargetAttribute(AttributeDescription.ImportedFromTypeLibAttribute))
2523else if (attribute.IsTargetAttribute(AttributeDescription.PrimaryInteropAssemblyAttribute))
2530else if (attribute.IsTargetAttribute(AttributeDescription.CompilationRelaxationsAttribute))
2534else if (attribute.IsTargetAttribute(AttributeDescription.ReferenceAssemblyAttribute))
2538else if (attribute.IsTargetAttribute(AttributeDescription.RuntimeCompatibilityAttribute))
2554else if (attribute.IsTargetAttribute(AttributeDescription.DebuggableAttribute))
2558else if (!isFromNetModule && attribute.IsTargetAttribute(AttributeDescription.TypeForwardedToAttribute))
2562else if (attribute.IsTargetAttribute(AttributeDescription.CaseSensitiveExtensionAttribute))
2570else if ((signature = attribute.GetTargetAttributeSignatureIndex(AttributeDescription.AssemblyAlgorithmIdAttribute)) != -1)
2586else if (attribute.IsTargetAttribute(AttributeDescription.ExperimentalAttribute))
Symbols\Source\SourceComplexParameterSymbol.cs (52)
625if (CSharpAttributeData.IsTargetEarlyAttribute(attributeType, attributeSyntax, AttributeDescription.OptionalAttribute))
644if (CSharpAttributeData.IsTargetEarlyAttribute(arguments.AttributeType, arguments.AttributeSyntax, AttributeDescription.DefaultParameterValueAttribute))
646return EarlyDecodeAttributeForDefaultParameterValue(AttributeDescription.DefaultParameterValueAttribute, ref arguments);
648else if (CSharpAttributeData.IsTargetEarlyAttribute(arguments.AttributeType, arguments.AttributeSyntax, AttributeDescription.DecimalConstantAttribute))
650return EarlyDecodeAttributeForDefaultParameterValue(AttributeDescription.DecimalConstantAttribute, ref arguments);
652else if (CSharpAttributeData.IsTargetEarlyAttribute(arguments.AttributeType, arguments.AttributeSyntax, AttributeDescription.DateTimeConstantAttribute))
654return EarlyDecodeAttributeForDefaultParameterValue(AttributeDescription.DateTimeConstantAttribute, ref arguments);
656else if (CSharpAttributeData.IsTargetEarlyAttribute(arguments.AttributeType, arguments.AttributeSyntax, AttributeDescription.UnscopedRefAttribute))
665if (CSharpAttributeData.IsTargetEarlyAttribute(arguments.AttributeType, arguments.AttributeSyntax, AttributeDescription.CallerLineNumberAttribute))
669else if (CSharpAttributeData.IsTargetEarlyAttribute(arguments.AttributeType, arguments.AttributeSyntax, AttributeDescription.CallerFilePathAttribute))
673else if (CSharpAttributeData.IsTargetEarlyAttribute(arguments.AttributeType, arguments.AttributeSyntax, AttributeDescription.CallerMemberNameAttribute))
677else if (CSharpAttributeData.IsTargetEarlyAttribute(arguments.AttributeType, arguments.AttributeSyntax, AttributeDescription.CallerArgumentExpressionAttribute))
731private (CSharpAttributeData?, BoundAttribute?) EarlyDecodeAttributeForDefaultParameterValue(AttributeDescription description, ref EarlyDecodeWellKnownAttributeArguments<EarlyWellKnownAttributeBinder, NamedTypeSymbol, AttributeSyntax, AttributeLocation> arguments)
733Debug.Assert(description.Equals(AttributeDescription.DefaultParameterValueAttribute) ||
734description.Equals(AttributeDescription.DecimalConstantAttribute) ||
735description.Equals(AttributeDescription.DateTimeConstantAttribute));
767Debug.Assert(AttributeDescription.InterpolatedStringHandlerArgumentAttribute.Signatures.Length == 2);
770if (attribute.IsTargetAttribute(AttributeDescription.DefaultParameterValueAttribute))
773DecodeDefaultParameterValueAttribute(AttributeDescription.DefaultParameterValueAttribute, ref arguments);
775else if (attribute.IsTargetAttribute(AttributeDescription.DecimalConstantAttribute))
778DecodeDefaultParameterValueAttribute(AttributeDescription.DecimalConstantAttribute, ref arguments);
780else if (attribute.IsTargetAttribute(AttributeDescription.DateTimeConstantAttribute))
783DecodeDefaultParameterValueAttribute(AttributeDescription.DateTimeConstantAttribute, ref arguments);
785else if (attribute.IsTargetAttribute(AttributeDescription.OptionalAttribute))
795else if (attribute.IsTargetAttribute(AttributeDescription.ParamArrayAttribute) || attribute.IsTargetAttribute(AttributeDescription.ParamCollectionAttribute))
800else if (attribute.IsTargetAttribute(AttributeDescription.InAttribute))
804else if (attribute.IsTargetAttribute(AttributeDescription.OutAttribute))
808else if (attribute.IsTargetAttribute(AttributeDescription.MarshalAsAttribute))
812else if (attribute.IsTargetAttribute(AttributeDescription.IDispatchConstantAttribute))
816else if (attribute.IsTargetAttribute(AttributeDescription.IUnknownConstantAttribute))
820else if (attribute.IsTargetAttribute(AttributeDescription.CallerLineNumberAttribute))
824else if (attribute.IsTargetAttribute(AttributeDescription.CallerFilePathAttribute))
828else if (attribute.IsTargetAttribute(AttributeDescription.CallerMemberNameAttribute))
832else if (attribute.IsTargetAttribute(AttributeDescription.CallerArgumentExpressionAttribute))
849else if (attribute.IsTargetAttribute(AttributeDescription.AllowNullAttribute))
853else if (attribute.IsTargetAttribute(AttributeDescription.DisallowNullAttribute))
857else if (attribute.IsTargetAttribute(AttributeDescription.MaybeNullAttribute))
861else if (attribute.IsTargetAttribute(AttributeDescription.MaybeNullWhenAttribute))
865else if (attribute.IsTargetAttribute(AttributeDescription.NotNullAttribute))
869else if (attribute.IsTargetAttribute(AttributeDescription.NotNullWhenAttribute))
873else if (attribute.IsTargetAttribute(AttributeDescription.DoesNotReturnIfAttribute))
877else if (attribute.IsTargetAttribute(AttributeDescription.NotNullIfNotNullAttribute))
881else if (attribute.IsTargetAttribute(AttributeDescription.EnumeratorCancellationAttribute))
886else if (attribute.GetTargetAttributeSignatureIndex(AttributeDescription.InterpolatedStringHandlerArgumentAttribute) is (0 or 1) and var index)
890else if (attribute.IsTargetAttribute(AttributeDescription.UnscopedRefAttribute))
921private void DecodeDefaultParameterValueAttribute(AttributeDescription description, ref DecodeWellKnownAttributeArguments<AttributeSyntax, CSharpAttributeData, AttributeLocation> arguments)
963private ConstantValue DecodeDefaultParameterValueAttribute(AttributeDescription description, CSharpAttributeData attribute, AttributeSyntax node, bool diagnose, BindingDiagnosticBag diagnosticsOpt)
967if (description.Equals(AttributeDescription.DefaultParameterValueAttribute))
971else if (description.Equals(AttributeDescription.DecimalConstantAttribute))
977Debug.Assert(description.Equals(AttributeDescription.DateTimeConstantAttribute));
1289Debug.Assert(arguments.Attribute.IsTargetAttribute(AttributeDescription.InterpolatedStringHandlerArgumentAttribute) && arguments.Attribute.CommonConstructorArguments.Length == 1);
Symbols\Source\SourceNamedTypeSymbol.cs (32)
909if (CSharpAttributeData.IsTargetEarlyAttribute(arguments.AttributeType, arguments.AttributeSyntax, AttributeDescription.ComImportAttribute))
924if (CSharpAttributeData.IsTargetEarlyAttribute(arguments.AttributeType, arguments.AttributeSyntax, AttributeDescription.CodeAnalysisEmbeddedAttribute))
939if (CSharpAttributeData.IsTargetEarlyAttribute(arguments.AttributeType, arguments.AttributeSyntax, AttributeDescription.ConditionalAttribute))
966if (CSharpAttributeData.IsTargetEarlyAttribute(arguments.AttributeType, arguments.AttributeSyntax, AttributeDescription.AttributeUsageAttribute))
998if (CSharpAttributeData.IsTargetEarlyAttribute(arguments.AttributeType, arguments.AttributeSyntax, AttributeDescription.InterpolatedStringHandlerAttribute))
1013if (CSharpAttributeData.IsTargetEarlyAttribute(arguments.AttributeType, arguments.AttributeSyntax, AttributeDescription.InlineArrayAttribute))
1031if (CSharpAttributeData.IsTargetEarlyAttribute(arguments.AttributeType, arguments.AttributeSyntax, AttributeDescription.CollectionBuilderAttribute))
1105if (attribute.IsTargetAttribute(AttributeDescription.AttributeUsageAttribute))
1109else if (attribute.IsTargetAttribute(AttributeDescription.DefaultMemberAttribute))
1113else if (attribute.IsTargetAttribute(AttributeDescription.CoClassAttribute))
1117else if (attribute.IsTargetAttribute(AttributeDescription.ConditionalAttribute))
1121else if (attribute.IsTargetAttribute(AttributeDescription.GuidAttribute))
1125else if (attribute.IsTargetAttribute(AttributeDescription.SpecialNameAttribute))
1129else if (attribute.IsTargetAttribute(AttributeDescription.SerializableAttribute))
1133else if (attribute.IsTargetAttribute(AttributeDescription.ExcludeFromCodeCoverageAttribute))
1137else if (attribute.IsTargetAttribute(AttributeDescription.StructLayoutAttribute))
1142else if (attribute.IsTargetAttribute(AttributeDescription.SuppressUnmanagedCodeSecurityAttribute))
1146else if (attribute.IsTargetAttribute(AttributeDescription.ClassInterfaceAttribute))
1150else if (attribute.IsTargetAttribute(AttributeDescription.InterfaceTypeAttribute))
1154else if (attribute.IsTargetAttribute(AttributeDescription.WindowsRuntimeImportAttribute))
1158else if (attribute.IsTargetAttribute(AttributeDescription.RequiredAttributeAttribute))
1178else if (attribute.IsTargetAttribute(AttributeDescription.SecurityCriticalAttribute)
1179|| attribute.IsTargetAttribute(AttributeDescription.SecuritySafeCriticalAttribute))
1183else if (attribute.IsTargetAttribute(AttributeDescription.SkipLocalsInitAttribute))
1187else if (attribute.IsTargetAttribute(AttributeDescription.CollectionBuilderAttribute))
1205else if (_lazyIsExplicitDefinitionOfNoPiaLocalType == ThreeState.Unknown && attribute.IsTargetAttribute(AttributeDescription.TypeIdentifierAttribute))
1209else if (attribute.IsTargetAttribute(AttributeDescription.InlineArrayAttribute))
1227else if (attribute.IsTargetAttribute(AttributeDescription.CompilerLoweringPreserveAttribute))
1231else if (attribute.IsTargetAttribute(AttributeDescription.ExtendedLayoutAttribute))
1628int index = boundAttributes.IndexOfAttribute(AttributeDescription.ComImportAttribute);
1676int index = boundAttributes.IndexOfAttribute(AttributeDescription.CoClassAttribute);
1685int index = boundAttributes.IndexOfAttribute(AttributeDescription.DefaultMemberAttribute);
Symbols\Symbol.cs (16)
1544attribute.IsTargetAttribute(AttributeDescription.DynamicAttribute))
1550reportExplicitUseOfReservedAttribute(attribute, arguments, AttributeDescription.IsReadOnlyAttribute))
1554reportExplicitUseOfReservedAttribute(attribute, arguments, AttributeDescription.RequiresLocationAttribute))
1558reportExplicitUseOfReservedAttribute(attribute, arguments, AttributeDescription.IsUnmanagedAttribute))
1562reportExplicitUseOfReservedAttribute(attribute, arguments, AttributeDescription.IsByRefLikeAttribute))
1566attribute.IsTargetAttribute(AttributeDescription.TupleElementNamesAttribute))
1571attribute.IsTargetAttribute(AttributeDescription.NullableAttribute))
1577reportExplicitUseOfReservedAttribute(attribute, arguments, AttributeDescription.NullableContextAttribute))
1581reportExplicitUseOfReservedAttribute(attribute, arguments, AttributeDescription.NullablePublicOnlyAttribute))
1585reportExplicitUseOfReservedAttribute(attribute, arguments, AttributeDescription.NativeIntegerAttribute))
1589attribute.IsTargetAttribute(AttributeDescription.CaseSensitiveExtensionAttribute))
1595attribute.IsTargetAttribute(AttributeDescription.RequiredMemberAttribute))
1601attribute.IsTargetAttribute(AttributeDescription.ScopedRefAttribute))
1607reportExplicitUseOfReservedAttribute(attribute, arguments, AttributeDescription.RefSafetyRulesAttribute))
1611reportExplicitUseOfReservedAttribute(attribute, arguments, AttributeDescription.ExtensionMarkerAttribute))
1620bool reportExplicitUseOfReservedAttribute(CSharpAttributeData attribute, in DecodeWellKnownAttributeArguments<AttributeSyntax, CSharpAttributeData, AttributeLocation> arguments, in AttributeDescription attributeDescription)
Symbols\Symbol_Attributes.cs (10)
157if (CSharpAttributeData.IsTargetEarlyAttribute(type, syntax, AttributeDescription.ObsoleteAttribute))
161else if (CSharpAttributeData.IsTargetEarlyAttribute(type, syntax, AttributeDescription.DeprecatedAttribute))
165else if (CSharpAttributeData.IsTargetEarlyAttribute(type, syntax, AttributeDescription.WindowsExperimentalAttribute))
169else if (CSharpAttributeData.IsTargetEarlyAttribute(type, syntax, AttributeDescription.ExperimentalAttribute))
220if (arguments.Attribute.IsTargetAttribute(AttributeDescription.CompilerFeatureRequiredAttribute))
223arguments.Diagnostics.DiagnosticBag.Add(ErrorCode.ERR_ExplicitReservedAttr, arguments.AttributeSyntaxOpt.Location, AttributeDescription.CompilerFeatureRequiredAttribute.FullName);
225else if (arguments.Attribute.IsTargetAttribute(AttributeDescription.ExperimentalAttribute))
233else if (arguments.Attribute.IsTargetAttribute(AttributeDescription.MetadataUpdateDeletedAttribute))
235arguments.Diagnostics.DiagnosticBag.Add(ErrorCode.ERR_AttributeCannotBeAppliedManually, arguments.AttributeSyntaxOpt!.Location, args: [AttributeDescription.MetadataUpdateDeletedAttribute.FullName]);
480if (!boundAttribute.HasErrors && boundAttribute.IsTargetAttribute(AttributeDescription.TypeForwardedToAttribute) &&