Buggy code:
public class SvnDiffViewer implements DiffViewer { private static final Logger LOG = Logger . getInstance ( SvnDiffViewer . class ) ; public static final Key < SvnDiffViewer . MyPropertyContext > PROPERTY_CONTEXT_KEY = Key . create ( "MyPropertyContext" ) ; public static final Key < Boolean > FOCUSED_VIEWER_KEY = Key . create ( "SvnFocusedViewer" ) ; @ Nullable private final Project myProject ; @ NotNull private final DiffContext myContext ; @ NotNull private final DiffRequest myPropertyRequest ; @ NotNull private final SvnDiffSettings mySettings ; @ NotNull private final JPanel myPanel ; @ NotNull private final Splitter mySplitter ; @ NotNull private final ModifiablePanel myNotificationPanel ; @ NotNull private final DiffViewer myContentViewer ; @ NotNull private final DiffViewer myPropertiesViewer ; @ NotNull private final FocusListener myContentFocusListener = new SvnDiffViewer . MyFocusListener ( false ) ; @ NotNull private final FocusListener myPropertiesFocusListener = new SvnDiffViewer . MyFocusListener ( true ) ; private boolean myPropertiesViewerFocused ; private boolean myDumbContentViewer ; public SvnDiffViewer ( @ NotNull DiffContext context , @ NotNull DiffRequest propertyRequest , @ NotNull DiffViewer wrappingViewer ) { } @ NotNull private static DiffViewer createPropertiesViewer ( @ NotNull DiffRequest propertyRequest , @ NotNull SvnDiffViewer . MyPropertyContext propertyContext ) { if ( propertyRequest instanceof SvnPropertiesDiffRequest ) { <START_BUG> return new SvnPropertiesDiffViewer ( propertyContext , ( ( SvnPropertiesDiffRequest ) ( propertyRequest ) ) ) ; <END_BUG> } else { return INSTANCE . createComponent ( propertyContext , propertyRequest ) ; } } @ NotNull @ Override public ToolbarComponents init ( ) { } @ Override public void dispose ( ) { } private void processContextHints ( ) { } private void updateContextHints ( ) { } @ Nullable private JComponent createNotification ( ) { } @ NotNull private static Map < String , PropertyValue > getProperties ( @ NotNull DiffContent content ) { } @ NotNull private static JPanel createNotification ( @ NotNull String text ) { } private void updatePropertiesPanel ( ) { } @ NotNull private List < AnAction > createToolbar ( @ Nullable List < AnAction > propertiesActions ) { } @ NotNull private static SvnDiffSettings initSettings ( @ NotNull DiffContext context ) { } @ NotNull private SvnDiffViewer . MyPropertyContext initPropertyContext ( @ NotNull DiffContext context ) { } private void installListeners ( ) { } private void destroyListeners ( ) { } @ NotNull @ Override public JComponent getComponent ( ) { } @ Nullable @ Override public JComponent getPreferredFocusedComponent ( ) { } @ Nullable private JComponent getPropertiesPreferredFocusedComponent ( ) { } private class ToggleHidePropertiesAction extends ToggleAction implements DumbAware { public ToggleHidePropertiesAction ( ) { } @ Override public boolean isSelected ( AnActionEvent e ) { } @ Override public void setSelected ( AnActionEvent e , boolean state ) { } } private class MyPropertyContext extends DiffContext { @ Nullable @ Override public Project getProject ( ) { } @ Override public boolean isWindowFocused ( ) { } @ Override public boolean isFocused ( ) { } @ Override public void requestFocus ( ) { } } private class MyFocusListener extends FocusAdapter { private final boolean myValue ; public MyFocusListener ( boolean value ) { } @ Override public void focusGained ( FocusEvent e ) { } } private static class MySplitter extends Splitter { @ NotNull private final String myLabelText ; public MySplitter ( @ NotNull String text ) { } @ Override protected Divider createDivider ( ) { } } }

Fix:
return SvnPropertiesDiffViewer . create ( propertyContext , ( ( SvnPropertiesDiffRequest ) ( propertyRequest ) ) , true ) ;