Cleaned up the code. Memory reduction: Do not create empty dependency lists, simply use null. Improved hierarchy: Assume every reference type can be stored in a variable of type java.lang.Object