title: In c#, what are the rules for defining a pure method?
body: <p>Is this simple extension method for a rectangle for example pure?</p>
  
  <p>If not, why not?
  And if it is, why?</p>
  
  <pre><code>    [Pure]
      public static Rectangle InflateCopy(this Rectangle r, float horizontal, float vertical)
      {
          r.X -= (int)horizontalAmount;
          r.Y -= (int)verticalAmount;
          r.Width += (int)horizontalAmount*2;
          r.Height += (int)verticalAmount*2;
          return r;
      }
  </code></pre>