title: Why .NET exceptions are mutable?
body: <p>I'm wondering why .NET exceptions classes from Base Class Library has some mutable members by default</p>
  
  <ul>
  <li>Why I can change the <code>Source</code>, <code>HelpLink</code> and values from <code>Data</code>, but can't change anything else like the <code>Message</code>?</li>
  <li>Why throwing the exception rewrites the <code>StackTrace</code> making it mutable too? Is appending the stack trace information to existing trace would be better design (but still mutable)?</li>
  <li>What possible improvements in .NET exceptions design may be?</li>
  </ul>
  
  <p>I'm interesting just in design choices...</p>