I don't understand the use of SoftCachedObject.
I've not read the entire source but I think we can do this :
Change :
public Object get ( String key, Class objectClass, Type objectType )
by
public <T extends Object> get ( String key, Class<T> objectClass, Type objectType )
And drop SoftCachedObject ?
I tried to make the changes but I'm still using Eclipse and this seems not to be compatible with current project structure...