Its very unlikely a user want a real plain object and casts will happen, to make it a bit more convenient the method: `Object getValue(key)` could become: `<T> T getValue(key)`