refactored the type hierarchy for Rascal-specific types.
reimplemented type reachability using a visitor instead of if-then-else.