Refactored SourceItemNode to hold a JavaObject. Refactored how the type is determined.