C # StructLayout.Perguntas explícitas

Estou tentando entender por que o segundo exemplo abaixo funciona sem problemas, mas o primeiro exemplo me dá a exceção abaixo. Parece-me que ambos os exemplos devem dar uma exceção baseada na descrição. Alguém pode me esclarecer?

Exceção não tratada: System.TypeLoadException: não foi possível carregar o tipo 'StructTest.OuterType' do assembly 'StructTest, versão = 1.0.0.0, Culture = neutral, PublicKeyToken = null' porque contém um campo de objeto no deslocamento 0 incorretamente alinhado ou sobreposto por um campo não objeto.
em StructTest.Program.Main (String [] args) Pressione qualquer tecla para continuar. . .

Exemplo 1

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;

namespace StructTest
{
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    struct InnerType
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        char[] buffer;
    }

    [StructLayout(LayoutKind.Explicit)]
    struct OuterType
    {
        [FieldOffset(0)]
        int someValue;

        [FieldOffset(0)]
        InnerType someOtherValue;
    }

    class Program
    {
        static void Main(string[] args)
        {
            OuterType t = new OuterType();
            System.Console.WriteLine(t);
        }
    }
}

Exemplo 2

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;

namespace StructTest
{
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    struct InnerType
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        char[] buffer;
    }

    [StructLayout(LayoutKind.Explicit)]
    struct OuterType
    {
        [FieldOffset(4)]
        private int someValue;

        [FieldOffset(0)]
        InnerType someOtherValue;

    }

    class Program
    {
        static void Main(string[] args)
        {
            OuterType t = new OuterType();
            System.Console.WriteLine(t);
        }
    }
}

questionAnswers(2)

yourAnswerToTheQuestion