¿Qué pasa con el atributo [OptionalField]?

Según tengo entendido, tengo que adornar a un nuevo miembro en una versión más nueva de mi clase con el atributo [OpcionalField] cuando deserializo una versión anterior de mi clase que carece de este miembro más nuevo.

Sin embargo, el siguiente código no arroja ninguna excepción mientras se agrega la propiedad InnerTranslator después de serializar la clase. Verifico que la propiedad sea nula en el método onDeserialization (que confirma que no fue serializado), pero hubiera esperado que el código arrojara una excepción debido a eso. ¿El atributo [OptionalField] es opcional?

class Program
{
    static void Main(string[] args)
    {
        var listcol = new SortedList<string,string>
        {
            {"Estados Unidos", "United States"},
            {"Canadá", "Canada"},
            {"España", "Spain"}
        };
        var translator = new CountryTranslator(listcol);
        using (var file_stream=new FileStream("translator.bin",FileMode.Open))
        {
            var formatter = new BinaryFormatter();
            translator = formatter.Deserialize(file_stream) as CountryTranslator;
            file_stream.Close();
        }
        Console.ReadLine();
    }
}

[Serializable]
internal class CountryTranslator:IDeserializationCallback
{
    public int Count { get; set; }

    public CountryTranslator(SortedList<string,string> sorted_list)
    {
        this.country_list = sorted_list;
        inner_translator = new List<string> {"one", "two"};
    }
    //[OptionalField]
    private List<string> inner_translator;
    public List<string> InnerTranslator
    {
        get { return inner_translator; }
        set { inner_translator = value; }
    }

    private SortedList<string, string> country_list;

    public void OnDeserialization(object sender)
    {
        Debug.Assert(inner_translator == null);
        Count=country_list.Count;
    }
}