title: NotNull attribute
body: <p>I'm looking at asp.net vnext <a href="https://github.com/aspnet/Home/wiki/Engineering-guidelines" rel="noreferrer">engineering guideline</a> and have noticed that they recommend to use <code>NotNull</code> attribute instead of explicit checking of input argument for null and throwing <code>ArgumentNullException</code>. The thing that confused me is that base on this guideline it is just enough to declare this attribute and the checking code will be generated at compile time into the method body. I've tried to do this in my test project however the magic didn't happen i.e. it threw the exception <code>System.NullReferenceException</code> instead of <code>System.ArgumentNullException</code>. How this is supposed to work? Are they going to use some AOP library to inject the checking code at compile time?</p>