It looks like splitting the PlainValuesReader into one class per type would simplify the api.
That way you could just define skip() and not have to specify the type in the layers above