Added javadoc and did some refactoring
Created SameObjectMap
Created SameObjectList
Created SameObjectSet