We should switch `ProtoEnum` to be an interface implemented by all `enum` types.
```java
public interface ProtoEnum {
  int getValue()
}
```
So that we can simply cast and avoid reflection.