O que há com o atributo [OptionalField]?

Pelo que entendi, preciso adornar um novo membro em uma versão mais recente da minha classe com o Atributo [OptionalField] quando desserializar uma versão mais antiga da minha classe que não possua esse membro mais novo.

No entanto, o código abaixo não gera exceção enquanto a propriedade InnerTranslator foi adicionada após a serialização da classe. Verifico se a propriedade é nula no método onDeserialization (que confirma que não foi serializada), mas eu esperava que o código gerasse uma exceção por causa disso. O próprio atributo [OptionalField] é 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;
    }
}

questionAnswers(2)

yourAnswerToTheQuestion