/// [LocalizationRequiredAttribute(true)]
/// public class Foo
/// {
/// private string str = "my string"; // Warning: Localizable string
/// }
///
///
/// [StringFormatMethod("message")]
/// public void ShowError(string message, params object[] args)
/// {
/// //Do something
/// }
/// public void Foo()
/// {
/// ShowError("Failed: {0}"); // Warning: Non-existing argument in format string
/// }
///
///
/// public 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)
/// {}
///
/// private string _name;
/// public string Name
/// {
/// get { return _name; }
/// set
/// {
/// _name = value;
/// NotifyChanged("LastName"); // Warning
/// }
/// }
/// }
///
/// Examples of generated notifications:
///
/// [CanBeNull]
/// public object Test()
/// {
/// return null;
/// }
///
/// public void UseTest()
/// {
/// var p = Test();
/// var s = p.ToString(); // Warning: Possible 'System.NullReferenceException'
/// }
///
///
/// [NotNull]
/// public object Foo()
/// {
/// return null; // Warning: Possible 'null' assignment
/// }
///
/// Function Definition Table syntax:
///
/// [ContractAnnotation("=> halt")]
/// public void TerminationMethod()
///
/// [ContractAnnotation("halt <= condition: false")]
/// public void Assert(bool condition, string text) // Regular Assertion method
///
/// [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("s:null=>false; =>true,result:notnull; =>false, result:null")]
/// public bool TryParse(string s, out Person result)
///
/// [CannotApplyEqualityOperator]
/// class NoEquality
/// {
/// }
///
/// class UsesNoEquality
/// {
/// public void Test()
/// {
/// var ca1 = new NoEquality();
/// var ca2 = new NoEquality();
///
/// if (ca1 != null) // OK
/// {
/// bool condition = ca1 == ca2; // Warning
/// }
/// }
/// }
///
///
/// [BaseTypeRequired(typeof(IComponent)] // Specify requirement
/// public class ComponentAttribute : Attribute
/// {}
///
/// [Component] // ComponentAttribute requires implementing IComponent interface
/// public class MyComponent : IComponent
/// {}
///
///
/// [Pure]
/// private int Multiply(int x, int y)
/// {
/// return x*y;
/// }
///
/// public void Foo()
/// {
/// const int a=2, b=2;
/// Multiply(a, b); // Waring: Return value of pure method is not used
/// }
///
///
/// [ActionName("Foo")]
/// public ActionResult Login(string returnUrl)
/// {
/// ViewBag.ReturnUrl = Url.Action("Foo"); // OK
/// return RedirectToAction("Bar"); // Error: Cannot resolve action
/// }
///
///