title: TypeLoadException on x64 but is fine on x86 with structlayouts
body: <p>Youll need a 64bit machine if you want to see the actuall exception. I've created some dummy classes that repro's the problem.</p>
  
  <pre><code>[StructLayout(LayoutKind.Sequential, Pack = 1)]
      public class InnerType
      {
          char make;
          char model;
          UInt16 series;
      }
  
   [StructLayout(LayoutKind.Explicit)]
      public class OutterType
      {
          [FieldOffset(0)]
          char blah;
  
          [FieldOffset(1)]
          char blah2;
  
          [FieldOffset(2)]
          UInt16 blah3;
  
          [FieldOffset(4)]
          InnerType details;
      }
  
      class Program
      {
          static void Main(string[] args)
          {
              var t = new OutterType();
              Console.ReadLine();
          }
      }
  </code></pre>
  
  <p>If I run this on the 64 clr, I receive a type load exception, </p>
  
  <pre><code>System.TypeLoadException was unhandled 
    Message="Could not load type 'Sample.OutterType' from assembly 'Sample, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' because it contains an object field at offset 4 that is incorrectly aligned or overlapped by a non-object field."
  </code></pre>
  
  <p>If i force the target cpu to 32, it works fine.</p>
  
  <p>Also, if i change InnerType from a class to a struct it also works. Can someone explain whats going on or what I am doing wrong ?</p>
  
  <p>thanks</p>