import java.util.Map; class ISuiteListener { private final Map<Class<? extends ISuiteListener>, ISuiteListener> m_suiteListeners; private static <E> void maybeAddListener(Map<Class<? extends E>, E> map, Class<? extends E> type, E value) { // do something } void foo(ISuiteListener suite) { maybeAddListener(m_suiteListeners, suite.getClass(), suite); } }