public MessageDescriptorBuilder <T> Enum <E>(int fieldNum, Func <T, E> valueGetter, Action <T, E> valueSetter, Func <T, bool> hasValueFunc = null) { return(Add(FieldSetting <T> .CreateEnum <E>(fieldNum, valueGetter, valueSetter, hasValueFunc))); }