static void AnnotateError(ITypeAnnotator <ILogger> t)
        {
            // Modern interface
            t.Annotate(l => l.Error(CanBeNull <TClass>()));
            t.Annotate(l => l.Error(NotNull <IFormatProvider>(), CanBeNull <TClass>()));
            t.Annotate(l => l.Error(NotNull <LogMessageGenerator>()));
            t.Annotate(l => l.ErrorException(NotNull <string>(), NotNull <Exception>()));
            t.Annotate(l => l.Error(NotNull <Exception>(), FormatString(), NotNull <object[]>()));
            t.Annotate(l => l.Error(NotNull <Exception>(), NotNull <IFormatProvider>(), FormatString(), NotNull <object[]>()));
            t.Annotate(l => l.Error(NotNull <IFormatProvider>(), FormatString(), NotNull <object[]>()));
            t.Annotate(l => l.Error(NotNull <string>()));
            t.Annotate(l => l.Error(FormatString(), NotNull <object[]>()));
            t.Annotate(l => l.Error(NotNull <string>(), NotNull <Exception>()));
            t.Annotate(l => l.Error(NotNull <IFormatProvider>(), FormatString(), CanBeNull <TClass>()));
            t.Annotate(l => l.Error(FormatString(), CanBeNull <TClass>()));
            t.Annotate(l => l.Error(NotNull <IFormatProvider>(), FormatString(), CanBeNull <TClass>(), CanBeNull <TClass>()));
            t.Annotate(l => l.Error(FormatString(), CanBeNull <TClass>(), NotNull <TClass>()));
            t.Annotate(l => l.Error(NotNull <IFormatProvider>(), FormatString(), CanBeNull <TClass>(), CanBeNull <TClass>(), CanBeNull <TClass>()));
            t.Annotate(l => l.Error(FormatString(), CanBeNull <TClass>(), CanBeNull <TClass>(), CanBeNull <TClass>()));

            // NLog-V1
            t.Annotate(l => l.Error(CanBeNull <object>()));
            t.Annotate(l => l.Error(NotNull <IFormatProvider>(), CanBeNull <object>()));
            t.Annotate(l => l.Error(FormatString(), CanBeNull <object>()));
            t.Annotate(l => l.Error(FormatString(), CanBeNull <object>(), CanBeNull <object>()));
            t.Annotate(l => l.Error(FormatString(), CanBeNull <object>(), CanBeNull <object>(), CanBeNull <object>()));
            t.Annotate(l => l.Error(FormatString(), Some <bool>()));
            t.Annotate(l => l.Error(NotNull <IFormatProvider>(), FormatString(), Some <bool>()));
            t.Annotate(l => l.Error(FormatString(), Some <char>()));
            t.Annotate(l => l.Error(NotNull <IFormatProvider>(), FormatString(), Some <char>()));
            t.Annotate(l => l.Error(FormatString(), Some <byte>()));
            t.Annotate(l => l.Error(NotNull <IFormatProvider>(), FormatString(), Some <byte>()));
            t.Annotate(l => l.Error(FormatString(), Some <string>()));
            t.Annotate(l => l.Error(NotNull <IFormatProvider>(), FormatString(), Some <string>()));
            t.Annotate(l => l.Error(FormatString(), Some <int>()));
            t.Annotate(l => l.Error(NotNull <IFormatProvider>(), FormatString(), Some <int>()));
            t.Annotate(l => l.Error(FormatString(), Some <long>()));
            t.Annotate(l => l.Error(NotNull <IFormatProvider>(), FormatString(), Some <long>()));
            t.Annotate(l => l.Error(FormatString(), Some <float>()));
            t.Annotate(l => l.Error(NotNull <IFormatProvider>(), FormatString(), Some <float>()));
            t.Annotate(l => l.Error(FormatString(), Some <double>()));
            t.Annotate(l => l.Error(NotNull <IFormatProvider>(), FormatString(), Some <double>()));
            t.Annotate(l => l.Error(FormatString(), Some <decimal>()));
            t.Annotate(l => l.Error(NotNull <IFormatProvider>(), FormatString(), Some <decimal>()));
            t.Annotate(l => l.Error(FormatString(), CanBeNull <object>()));
            t.Annotate(l => l.Error(NotNull <IFormatProvider>(), FormatString(), CanBeNull <object>()));
            t.Annotate(l => l.Error(FormatString(), Some <sbyte>()));
            t.Annotate(l => l.Error(NotNull <IFormatProvider>(), FormatString(), Some <sbyte>()));
            t.Annotate(l => l.Error(FormatString(), Some <uint>()));
            t.Annotate(l => l.Error(NotNull <IFormatProvider>(), FormatString(), Some <uint>()));
            t.Annotate(l => l.Error(FormatString(), Some <ulong>()));
            t.Annotate(l => l.Error(NotNull <IFormatProvider>(), FormatString(), Some <ulong>()));
        }
        static void AnnotateError(ITypeAnnotator<ILogger> t)
        {
            // Modern interface
            t.Annotate(l => l.Error(CanBeNull<TClass>()));
            t.Annotate(l => l.Error(NotNull<IFormatProvider>(), CanBeNull<TClass>()));
            t.Annotate(l => l.Error(NotNull<LogMessageGenerator>()));
            t.Annotate(l => l.ErrorException(NotNull<string>(), NotNull<Exception>()));
            t.Annotate(l => l.Error(NotNull<Exception>(), FormatString(), NotNull<object[]>()));
            t.Annotate(l => l.Error(NotNull<Exception>(), NotNull<IFormatProvider>(), FormatString(), NotNull<object[]>()));
            t.Annotate(l => l.Error(NotNull<IFormatProvider>(), FormatString(), NotNull<object[]>()));
            t.Annotate(l => l.Error(NotNull<string>()));
            t.Annotate(l => l.Error(FormatString(), NotNull<object[]>()));
            t.Annotate(l => l.Error(NotNull<string>(), NotNull<Exception>()));
            t.Annotate(l => l.Error(NotNull<IFormatProvider>(), FormatString(), CanBeNull<TClass>()));
            t.Annotate(l => l.Error(FormatString(), CanBeNull<TClass>()));
            t.Annotate(l => l.Error(NotNull<IFormatProvider>(), FormatString(), CanBeNull<TClass>(), CanBeNull<TClass>()));
            t.Annotate(l => l.Error(FormatString(), CanBeNull<TClass>(), NotNull<TClass>()));
            t.Annotate(l => l.Error(NotNull<IFormatProvider>(), FormatString(), CanBeNull<TClass>(), CanBeNull<TClass>(), CanBeNull<TClass>()));
            t.Annotate(l => l.Error(FormatString(), CanBeNull<TClass>(), CanBeNull<TClass>(), CanBeNull<TClass>()));

            // NLog-V1
            t.Annotate(l => l.Error(CanBeNull<object>()));
            t.Annotate(l => l.Error(NotNull<IFormatProvider>(), CanBeNull<object>()));
            t.Annotate(l => l.Error(FormatString(), CanBeNull<object>()));
            t.Annotate(l => l.Error(FormatString(), CanBeNull<object>(), CanBeNull<object>()));
            t.Annotate(l => l.Error(FormatString(), CanBeNull<object>(), CanBeNull<object>(), CanBeNull<object>()));
            t.Annotate(l => l.Error(FormatString(), Some<bool>()));
            t.Annotate(l => l.Error(NotNull<IFormatProvider>(), FormatString(), Some<bool>()));
            t.Annotate(l => l.Error(FormatString(), Some<char>()));
            t.Annotate(l => l.Error(NotNull<IFormatProvider>(), FormatString(), Some<char>()));
            t.Annotate(l => l.Error(FormatString(), Some<byte>()));
            t.Annotate(l => l.Error(NotNull<IFormatProvider>(), FormatString(), Some<byte>()));
            t.Annotate(l => l.Error(FormatString(), Some<string>()));
            t.Annotate(l => l.Error(NotNull<IFormatProvider>(), FormatString(), Some<string>()));
            t.Annotate(l => l.Error(FormatString(), Some<int>()));
            t.Annotate(l => l.Error(NotNull<IFormatProvider>(), FormatString(), Some<int>()));
            t.Annotate(l => l.Error(FormatString(), Some<long>()));
            t.Annotate(l => l.Error(NotNull<IFormatProvider>(), FormatString(), Some<long>()));
            t.Annotate(l => l.Error(FormatString(), Some<float>()));
            t.Annotate(l => l.Error(NotNull<IFormatProvider>(), FormatString(), Some<float>()));
            t.Annotate(l => l.Error(FormatString(), Some<double>()));
            t.Annotate(l => l.Error(NotNull<IFormatProvider>(), FormatString(), Some<double>()));
            t.Annotate(l => l.Error(FormatString(), Some<decimal>()));
            t.Annotate(l => l.Error(NotNull<IFormatProvider>(), FormatString(), Some<decimal>()));
            t.Annotate(l => l.Error(FormatString(), CanBeNull<object>()));
            t.Annotate(l => l.Error(NotNull<IFormatProvider>(), FormatString(), CanBeNull<object>()));
            t.Annotate(l => l.Error(FormatString(), Some<sbyte>()));
            t.Annotate(l => l.Error(NotNull<IFormatProvider>(), FormatString(), Some<sbyte>()));
            t.Annotate(l => l.Error(FormatString(), Some<uint>()));
            t.Annotate(l => l.Error(NotNull<IFormatProvider>(), FormatString(), Some<uint>()));
            t.Annotate(l => l.Error(FormatString(), Some<ulong>()));
            t.Annotate(l => l.Error(NotNull<IFormatProvider>(), FormatString(), Some<ulong>()));
        }