public <A, E extends Exception> A into(Serializer.Accumulator<A, E> accumulator) throws E { for (Property<T, ?> property : rekord.properties()) { @SuppressWarnings("unchecked") Key<T, Object> castKey = (Key<T, Object>) property.key(); Object value = property.value(); castKey.accumulate(value, accumulator); } return accumulator.result(); } }