用于生成 Office 文件的 .NET 组件。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
19 KiB

// This file is used by Code Analysis to maintain SuppressMessage
// attributes that are applied to this project.
// Project-level suppressions either have no target or are given
// a specific target and scoped to a namespace, type, member, etc.
//
// To add a suppression to this file, right-click the message in the
// Error List, point to "Suppress Message(s)", and click
// "In Project Suppression File".
// You do not need to add suppressions to this file manually.
// TODO fix warnings:
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.SS.Formula.PTG.AreaPtgBase.#.ctor(Npoi.Core.SS.Util.AreaReference)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.SS.Formula.PTG.AreaPtgBase.#.ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean,System.Boolean,System.Boolean,System.Boolean)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.SS.Formula.PTG.AreaPtgBase.#.ctor(System.String)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.Util.ByteField.#.ctor(System.Int32,System.Byte)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.Util.ByteField.#.ctor(System.Int32,System.Byte,System.Byte[])")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.Util.ByteField.#.ctor(System.Int32,System.Byte[])")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.HSSF.Model.ComboboxShape.#.ctor(Npoi.Core.HSSF.UserModel.HSSFSimpleShape,System.Int32)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.HSSF.Model.CommentShape.#.ctor(Npoi.Core.HSSF.UserModel.HSSFComment,System.Int32)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.POIFS.Properties.DirectoryProperty.#.ctor(System.String)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.POIFS.Properties.DocumentProperty.#.ctor(System.String,System.Int32)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.HPSF.DocumentSummaryInformation.#.ctor(Npoi.Core.HPSF.PropertySet)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.HSSF.Record.HeaderFooterBase.#.ctor(System.String)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.HSSF.Model.LineShape.#.ctor(Npoi.Core.HSSF.UserModel.HSSFSimpleShape,System.Int32)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.HPSF.MutableProperty.#.ctor(Npoi.Core.HPSF.Property)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.HPSF.MutablePropertySet.#.ctor(Npoi.Core.HPSF.PropertySet)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.HPSF.MutableSection.#.ctor(Npoi.Core.HPSF.Section)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.HSSF.Model.PictureShape.#.ctor(Npoi.Core.HSSF.UserModel.HSSFSimpleShape,System.Int32)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.HSSF.Model.PolygonShape.#.ctor(Npoi.Core.HSSF.UserModel.HSSFPolygon,System.Int32)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.HPSF.PropertySet.#.ctor(System.Byte[],System.Int32,System.Int32)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.HPSF.PropertySet.#.ctor(System.IO.Stream)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.POIFS.Storage.RawDataBlockList.#.ctor(System.IO.Stream,Npoi.Core.POIFS.Common.POIFSBigBlockSize)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.HSSF.Record.ScrollableObjectSubRecord.#.ctor(Npoi.Core.Util.IO.LittleEndianInput,System.Int32)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.HPSF.Section.#.ctor(System.Byte[],System.Int32)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.HSSF.Model.SimpleFilledShape.#.ctor(Npoi.Core.HSSF.UserModel.HSSFSimpleShape,System.Int32)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.POIFS.Storage.SmallDocumentBlockList.#.ctor(System.Collections.Generic.List`1<Npoi.Core.POIFS.Storage.SmallDocumentBlock>)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.HPSF.SummaryInformation.#.ctor(Npoi.Core.HPSF.PropertySet)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.HSSF.Model.TextboxShape.#.ctor(Npoi.Core.HSSF.UserModel.HSSFTextbox,System.Int32)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Npoi.Core.HSSF.Record.ScrollableObjectSubRecord.#.ctor(Npoi.Core.Util.ILittleEndianInput,System.Int32)")]
// TODO fix warnings:
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2240:ImplementISerializableCorrectly", Scope = "type", Target = "Npoi.Core.HPSF.VariantTypeException")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2240:ImplementISerializableCorrectly", Scope = "type", Target = "Npoi.Core.SS.Formula.Eval.EvaluationException")]
// The hash tables should NOT be serialized - or am I wrong?
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2237:MarkISerializableTypesWithSerializable", Scope = "type", Target = "Npoi.Core.HPSF.Wellknown.SectionIDMap")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2237:MarkISerializableTypesWithSerializable", Scope = "type", Target = "Npoi.Core.HPSF.Wellknown.PropertyIDMap")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2237:MarkISerializableTypesWithSerializable", Scope = "type", Target = "Npoi.Core.HPSF.CustomProperties")]
// there is no non breaking fix - in both cases is a stream returned 8-(
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "Npoi.Core.HPSF.MutablePropertySet.#GetStream()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "Npoi.Core.POIFS.NIO.FileBackedDataSource.#Read(System.Int32,System.Int64)")]
// The code seems okay to me:
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2202:Do not dispose objects multiple times", Scope = "member", Target = "Npoi.Core.DDF.EscherBlipWMFRecord.#Compress(System.Byte[])")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2202:Do not dispose objects multiple times", Scope = "member", Target = "Npoi.Core.HSSF.Util.GUID.#D4")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2202:Do not dispose objects multiple times", Scope = "member", Target = "Npoi.Core.DDF.EscherBlipWMFRecord.#Decompress(System.Byte[],System.Int32,System.Int32)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2202:Do not dispose objects multiple times", Scope = "member", Target = "Npoi.Core.DDF.EscherDump.#DumpOld(System.Int64,System.IO.Stream)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2202:Do not dispose objects multiple times", Scope = "member", Target = "Npoi.Core.DDF.EscherPictBlip.#InflatePictureData(System.Byte[])")]
// these not implemented exception are acceptable for me:
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.HPSF.DocumentSummaryInformation.#HeadingPair")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.HPSF.DocumentSummaryInformation.#Docparts")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.HSSF.Extractor.EventBasedExcelExtractor.#DocSummaryInformation")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.HSSF.Extractor.EventBasedExcelExtractor.#SummaryInformation")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.HSSF.Record.Aggregates.RecordAggregate.#Sid")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.SS.Formula.PTG.ControlPtg.#DefaultOperandClass")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.Util.BlockingInputStream.#CanRead")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.Util.BlockingInputStream.#CanSeek")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.Util.BlockingInputStream.#CanWrite")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.Util.BlockingInputStream.#Length")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.Util.BlockingInputStream.#Position")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.HSSF.Record.MulRKRecord.#DataSize")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.HSSF.EventUserModel.DummyRecord.DummyRecordBase.#RecordSize")]
// seems like a workaround for malformed input - ignore:
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.HSSF.Record.RecordInputStream.#HasNextRecord")]
// TODO: apply fix that is proposed in the code:
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.POIFS.Storage.RawDataBlock.#Data")]
// I am not sure on how to fix these - the expected behavior of NPOI will change
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.HPSF.PropertySet.#SingleSection")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.HPSF.PropertySet.#GetHashCode()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.HPSF.PropertySet.#FirstSection")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.HPSF.Property.#Count")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.POIFS.FileSystem.POIFSDocumentReader.#Available")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.HSSF.Record.LabelRecord.#RecordSize")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.HSSF.Model.InternalWorkbook.#CustomPalette")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.HSSF.UserModel.HSSFCell.#DateCellValue")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Scope = "member", Target = "Npoi.Core.HSSF.Extractor.ExcelExtractor.#Text")]
// TODO: fix needs some minutes, because the constructor adds itself to the given parameter BlockList.
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1806:DoNotIgnoreMethodResults", MessageId = "Npoi.Core.POIFS.Storage.BlockAllocationTableReader", Scope = "member", Target = "Npoi.Core.POIFS.Storage.SmallBlockTableReader.#GetSmallDocumentBlocks(Npoi.Core.POIFS.Storage.RawDataBlockList,Npoi.Core.POIFS.Properties.RootProperty,System.Int32)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1806:DoNotIgnoreMethodResults", MessageId = "Npoi.Core.POIFS.Storage.BlockAllocationTableReader", Scope = "member", Target = "Npoi.Core.POIFS.EventFileSystem.POIFSReader.#Read(System.IO.Stream)")]
// seems all like debugging or other formatted output, so there is no need for localization:
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Console.WriteLine(System.String)", Scope = "member", Target = "Npoi.Core.POIFS.Dev.POIFSLister.#DisplayDirectory(Npoi.Core.POIFS.FileSystem.DirectoryNode,System.String)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Console.WriteLine(System.String)", Scope = "member", Target = "Npoi.Core.DDF.EscherDump.#DumpOld(System.Int64,System.IO.Stream)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Console.Write(System.String)", Scope = "member", Target = "Npoi.Core.DDF.EscherDump.#DumpOld(System.Int64,System.IO.Stream)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1806:DoNotIgnoreMethodResults", MessageId = "Npoi.Core.POIFS.Storage.BlockAllocationTableReader", Scope = "member", Target = "Npoi.Core.POIFS.FileSystem.POIFSFileSystem.#.ctor(System.IO.Stream)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Console.WriteLine(System.String)", Scope = "member", Target = "Npoi.Core.POIFS.Dev.POIFSViewer.#ViewFile(System.String,System.Boolean)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Console.WriteLine(System.String)", Scope = "member", Target = "Npoi.Core.HSSF.Record.EmbeddedObjectRefSubRecord.#.ctor(Npoi.Core.Util.ILittleEndianInput,System.Int32)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Console.WriteLine(System.String)", Scope = "member", Target = "Npoi.Core.HSSF.Record.FeatRecord.#.ctor(Npoi.Core.HSSF.Record.RecordInputStream)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Console.WriteLine(System.String)", Scope = "member", Target = "Npoi.Core.HSSF.Record.SSTDeserializer.#ManufactureStrings(System.Int32,Npoi.Core.HSSF.Record.RecordInputStream)")]
// these are warnings that should be transported in some form to the user
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Console.WriteLine(System.String)", Scope = "member", Target = "Npoi.Core.DDF.EscherContainerRecord.#FillFields(System.Byte[],System.Int32,Npoi.Core.DDF.EscherRecordFactory)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Console.WriteLine(System.String)", Scope = "member", Target = "Npoi.Core.HSSF.Record.EmbeddedObjectRefSubRecord.#.ctor(Npoi.Core.Util.IO.LittleEndianInput,System.Int32)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Console.WriteLine(System.String)", Scope = "member", Target = "Npoi.Core.Util.SystemOutLogger.#Log(System.Int32,System.Object,System.Exception)")]
// not classified - please provide a reasoning