public Node.Cookie createCookie(Class klass) { if (klass.isAssignableFrom(EditorCookie.class) || klass.isAssignableFrom(OpenCookie.class) || klass.isAssignableFrom(CloseCookie.class) || klass.isAssignableFrom(PrintCookie.class) ) { if (editor == null) editor = createEditorCookie(); // the first pass if (editor == null) return null; //??? gc unfriendly return klass.isAssignableFrom(editor.getClass()) ? editor : null; } else { return null; } } };