Buggy code:
public class UMLTreeCellRenderer extends DefaultTreeCellRenderer { protected ImageIcon _ActionStateIcon = ResourceLoader . lookupIconResource ( "ActionState" ) ; protected ImageIcon _StateIcon = ResourceLoader . lookupIconResource ( "State" ) ; protected ImageIcon _InitialStateIcon = ResourceLoader . lookupIconResource ( "Initial" ) ; protected ImageIcon _DeepIcon = ResourceLoader . lookupIconResource ( "DeepHistory" ) ; protected ImageIcon _ShallowIcon = ResourceLoader . lookupIconResource ( "ShallowHistory" ) ; protected ImageIcon _ForkIcon = ResourceLoader . lookupIconResource ( "Fork" ) ; protected ImageIcon _JoinIcon = ResourceLoader . lookupIconResource ( "Join" ) ; protected ImageIcon _BranchIcon = ResourceLoader . lookupIconResource ( "Branch" ) ; protected ImageIcon _FinalStateIcon = ResourceLoader . lookupIconResource ( "FinalState" ) ; protected ImageIcon _RealizeIcon = ResourceLoader . lookupIconResource ( "Realization" ) ; protected ImageIcon _SignalIcon = ResourceLoader . lookupIconResource ( "SignalSending" ) ; protected ImageIcon _CommentIcon = ResourceLoader . lookupIconResource ( "Note" ) ; protected Hashtable _iconCache = new Hashtable ( ) ; public Component getTreeCellRendererComponent ( JTree tree , Object value , boolean sel , boolean expanded , boolean leaf , int row , boolean hasFocus ) { Component r = super . getTreeCellRendererComponent ( tree , value , sel , expanded , leaf , row , hasFocus ) ; if ( r instanceof JLabel ) { JLabel lab = ( ( JLabel ) ( r ) ) ; Icon icon = ( ( Icon ) ( _iconCache . get ( value . getClass ( ) ) ) ) ; if ( value instanceof MPseudostate ) { MPseudostate ps = ( ( MPseudostate ) ( value ) ) ; MPseudostateKind kind = ps . getKind ( ) ; if ( INITIAL . equals ( kind ) ) icon = _InitialStateIcon ; if ( DEEP_HISTORY . equals ( kind ) ) icon = _DeepIcon ; if ( SHALLOW_HISTORY . equals ( kind ) ) icon = _ShallowIcon ; if ( FORK . equals ( kind ) ) icon = _ForkIcon ; if ( JOIN . equals ( kind ) ) icon = _JoinIcon ; if ( BRANCH . equals ( kind ) ) icon = _BranchIcon ; } if ( value instanceof MAbstraction ) { icon = _RealizeIcon ; } if ( value instanceof MSignal ) { icon = _SignalIcon ; } if ( value instanceof MComment ) { icon = _CommentIcon ; } if ( icon == null ) { String clsPackName = value . getClass ( ) . getName ( ) ; if ( ( clsPackName . startsWith ( "org" ) ) || ( clsPackName . startsWith ( "ru" ) ) ) { String cName = clsPackName . substring ( ( ( clsPackName . lastIndexOf ( "." ) ) + 1 ) ) ; if ( cName . startsWith ( "UML" ) ) cName = cName . substring ( 3 ) ; if ( cName . startsWith ( "M" ) ) cName = cName . substring ( 1 ) ; if ( cName . endsWith ( "Impl" ) ) cName = cName . substring ( 0 , ( ( cName . length ( ) ) - 4 ) ) ; icon = ResourceLoader . lookupIconResource ( cName ) ; if ( icon != null ) _iconCache . put ( value . getClass ( ) , icon ) ; if ( icon == null ) System . out . println ( ( "UMLTreeCellRenderer:<seq2seq4repair_space>using<seq2seq4repair_space>default<seq2seq4repair_space>Icon<seq2seq4repair_space>for<seq2seq4repair_space>" + cName ) ) ; } } if ( icon != null ) lab . setIcon ( icon ) ; String tip ; <START_BUG> if ( value instanceof MModelElementImpl ) <END_BUG> tip = ( ( ( ( ( MModelElementImpl ) ( value ) ) . getUMLClassName ( ) ) + ":<seq2seq4repair_space>" ) + ( ( ( MModelElementImpl ) ( value ) ) . getName ( ) ) ) + "<seq2seq4repair_space>" ; else tip = ( value == null ) ? "null<seq2seq4repair_space>" : ( value . toString ( ) ) + "<seq2seq4repair_space>" ; lab . setToolTipText ( tip ) ; tree . setToolTipText ( tip ) ; } return r ; } }

Fix:
if ( value instanceof MModelElement )