-/// [CanBeNull] object Test() => null;
-///
-/// void UseTest() {
-/// var p = Test();
-/// var s = p.ToString(); // Warning: Possible 'System.NullReferenceException'
-/// }
-///
-///
-/// [NotNull] object Foo() {
-/// return null; // Warning: Possible 'null' assignment
-/// }
-///
-///
-/// public void Foo([ItemNotNull]List<string> books)
-/// {
-/// foreach (var book in books) {
-/// if (book != null) // Warning: Expression is always true
-/// Console.WriteLine(book.ToUpper());
-/// }
-/// }
-///
-///
-/// public void Foo([ItemCanBeNull]List<string> books)
-/// {
-/// foreach (var book in books)
-/// {
-/// // Warning: Possible 'System.NullReferenceException'
-/// Console.WriteLine(book.ToUpper());
-/// }
-/// }
-///
-///
-/// [StringFormatMethod("message")]
-/// void ShowError(string message, params object[] args) { /* do something */ }
-///
-/// void Foo() {
-/// ShowError("Failed: {0}"); // Warning: Non-existing argument in format string
-/// }
-///
-///
-/// namespace TestNamespace
-/// {
-/// public class Constants
-/// {
-/// public static int INT_CONST = 1;
-/// public const string STRING_CONST = "1";
-/// }
-///
-/// public class Class1
-/// {
-/// [ValueProvider("TestNamespace.Constants")] public int myField;
-/// public void Foo([ValueProvider("TestNamespace.Constants")] string str) { }
-///
-/// public void Test()
-/// {
-/// Foo(/*try completion here*/);//
-/// myField = /*try completion here*/
-/// }
-/// }
-/// }
-///
-///
-/// void Foo(string param) {
-/// if (param == null)
-/// throw new ArgumentNullException("par"); // Warning: Cannot resolve symbol
-/// }
-///
-///
-/// public class Foo : INotifyPropertyChanged {
-/// public event PropertyChangedEventHandler PropertyChanged;
-///
-/// [NotifyPropertyChangedInvocator]
-/// protected virtual void NotifyChanged(string propertyName) { ... }
-///
-/// string _name;
-///
-/// public string Name {
-/// get { return _name; }
-/// set { _name = value; NotifyChanged("LastName"); /* Warning */ }
-/// }
-/// }
-///
-/// Examples of generated notifications:
-/// Function Definition Table syntax:
-///
-/// [ContractAnnotation("=> halt")]
-/// public void TerminationMethod()
-///
-///
-/// [ContractAnnotation("null <= param:null")] // reverse condition syntax
-/// public string GetName(string surname)
-///
-///
-/// [ContractAnnotation("s:null => true")]
-/// public bool IsNullOrEmpty(string s) // string.IsNullOrEmpty()
-///
-///
-/// // A method that returns null if the parameter is null,
-/// // and not null if the parameter is not null
-/// [ContractAnnotation("null => null; notnull => notnull")]
-/// public object Transform(object data)
-///
-///
-/// [ContractAnnotation("=> true, result: notnull; => false, result: null")]
-/// public bool TryParse(string s, out Person result)
-///
-///
-/// [LocalizationRequiredAttribute(true)]
-/// class Foo {
-/// string str = "my string"; // Warning: Localizable string
-/// }
-///
-///
-/// [CannotApplyEqualityOperator]
-/// class NoEquality { }
-///
-/// class UsesNoEquality {
-/// void Test() {
-/// var ca1 = new NoEquality();
-/// var ca2 = new NoEquality();
-/// if (ca1 != null) { // OK
-/// bool condition = ca1 == ca2; // Warning
-/// }
-/// }
-/// }
-///
-///
-/// [BaseTypeRequired(typeof(IComponent)] // Specify requirement
-/// class ComponentAttribute : Attribute { }
-///
-/// [Component] // ComponentAttribute requires implementing IComponent interface
-/// class MyComponent : IComponent { }
-///
-///
-/// [Pure] int Multiply(int x, int y) => x * y;
-///
-/// void M() {
-/// Multiply(123, 42); // Waring: Return value of pure method is not used
-/// }
-///
-/// [MustUseReturnValue("Use the return value to...")].
-///
-/// class Foo {
-/// [ProvidesContext] IBarService _barService = ...;
-///
-/// void ProcessNode(INode node) {
-/// DoSomething(node, node.GetGlobalServices().Bar);
-/// // ^ Warning: use value of '_barService' field
-/// }
-/// }
-///
-///
-/// [SourceTemplate]
-/// public static void forEach<T>(this IEnumerable<T> xs) {
-/// foreach (var x in xs) {
-/// //$ $END$
-/// }
-/// }
-///
-///
-/// [SourceTemplate, Macro(Target = "item", Expression = "suggestVariableName()")]
-/// public static void forEach<T>(this IEnumerable<T> collection) {
-/// foreach (var item in collection) {
-/// //$ $END$
-/// }
-/// }
-///
-/// Applying the attribute on a template method parameter:
-///
-/// [SourceTemplate]
-/// public static void something(this Entity x, [Macro(Expression = "guid()", Editable = -1)] string newguid) {
-/// /*$ var $x$Id = "$newguid$" + x.ToString();
-/// x.DoSomething($x$Id); */
-/// }
-///
-///
-/// [ActionName("Foo")]
-/// public ActionResult Login(string returnUrl) {
-/// ViewBag.ReturnUrl = Url.Action("Foo"); // OK
-/// return RedirectToAction("Bar"); // Error: Cannot resolve action
-/// }
-///
-///
-/// public class MyStringCollection : List<string>
-/// {
-/// [CollectionAccess(CollectionAccessType.Read)]
-/// public string GetFirstString()
-/// {
-/// return this.ElementAt(0);
-/// }
-/// }
-/// class Test
-/// {
-/// public void Foo()
-/// {
-/// // Warning: Contents of the collection is never updated
-/// var col = new MyStringCollection();
-/// string x = col.GetFirstString();
-/// }
-/// }
-///
-///
-/// static void ThrowIfNull<T>([NoEnumeration] T v, string n) where T : class
-/// {
-/// // custom check for null but no enumeration
-/// }
-///
-/// void Foo(IEnumerable<string> values)
-/// {
-/// ThrowIfNull(values, nameof(values));
-/// var x = values.ToList(); // No warnings about multiple enumeration
-/// }
-///
-///