Optional pref keys need special handling since they wrap everything. They can't implement PrefKey<Optional<V>> because that implies we'd have to PUT an Optional instead of just getting one. So they are theire own class with 1 method (getRealPrefKey) and they have their own methods in PreferenceManager. That bit is a little annoying but this is the cleanest way I could figure so far.