title: What happens here: Process.GetCurrentProcess().MainModule.ModuleName;?
body: <p>I seem to be a bit confused how the following call works:</p>
  
  <pre><code>string str = Process.GetCurrentProcess().MainModule.ModuleName;
  </code></pre>
  
  <p>I know it's the same as doing the following:</p>
  
  <pre><code>Process pvar = new Process();
  ProcessModule pmvar = pvar.MainModule;
  string str2 = pmvar.ModuleName;
  </code></pre>
  
  <p>But I need a detailed explanation how it's possible to ex. call the <strong>MainModule</strong> non-static property in the class <strong>ProcessModule</strong> since I haven't created an instanse of the <strong>Process</strong> class explicitly!</p>
  
  <p>Does the <strong>GetCurrentProcess()</strong> method automatically create an instanse to work on, since it's not required to do so?</p>