Buggy code:
public abstract class AbstractBookmarkableMapper extends AbstractMapper { private static Logger logger = LoggerFactory . getLogger ( AbstractBookmarkableMapper . class ) ; protected static final class UrlInfo { private final PageComponentInfo pageComponentInfo ; private final PageParameters pageParameters ; private final Class < ? extends IRequestablePage > pageClass ; public UrlInfo ( PageComponentInfo pageComponentInfo , Class < ? extends IRequestablePage > pageClass , PageParameters pageParameters ) { } public PageComponentInfo getPageComponentInfo ( ) { } public Class < ? extends IRequestablePage > getPageClass ( ) { } public PageParameters getPageParameters ( ) { } } public AbstractBookmarkableMapper ( ) { } protected abstract AbstractBookmarkableMapper . UrlInfo parseRequest ( Request request ) { } protected abstract Url buildUrl ( AbstractBookmarkableMapper . UrlInfo info ) { } protected abstract boolean pageMustHaveBeenCreatedBookmarkable ( ) { } public abstract int getCompatibilityScore ( Request request ) { } private IRequestHandler processBookmarkable ( Class < ? extends IRequestablePage > pageClass , PageParameters pageParameters ) { } private IRequestHandler processHybrid ( PageInfo pageInfo , Class < ? extends IRequestablePage > pageClass , PageParameters pageParameters , Integer renderCount ) { } private IRequestHandler processListener ( PageComponentInfo pageComponentInfo , Class < ? extends IRequestablePage > pageClass , PageParameters pageParameters ) { } public IRequestHandler mapRequest ( Request request ) { } protected boolean checkPageClass ( Class < ? extends IRequestablePage > pageClass ) { } public Url mapHandler ( final IRequestHandler requestHandler ) { if ( requestHandler instanceof BookmarkablePageRequestHandler ) { BookmarkablePageRequestHandler handler = ( ( BookmarkablePageRequestHandler ) ( requestHandler ) ) ; if ( ! ( checkPageClass ( handler . getPageClass ( ) ) ) ) { return null ; } PageInfo info = new PageInfo ( ) ; AbstractBookmarkableMapper . UrlInfo urlInfo = new AbstractBookmarkableMapper . UrlInfo ( new PageComponentInfo ( info , null ) , handler . getPageClass ( ) , handler . getPageParameters ( ) ) ; return buildUrl ( urlInfo ) ; } else if ( requestHandler instanceof RenderPageRequestHandler ) { RenderPageRequestHandler handler = ( ( RenderPageRequestHandler ) ( requestHandler ) ) ; IRequestablePage page = handler . getPage ( ) ; if ( ! ( checkPageClass ( page . getClass ( ) ) ) ) { return null ; } if ( ( ! ( pageMustHaveBeenCreatedBookmarkable ( ) ) ) || ( page . wasCreatedBookmarkable ( ) ) ) { PageInfo info = null ; if ( ! ( page . isPageStateless ( ) ) ) { info = new PageInfo ( page ) ; } PageComponentInfo pageComponentInfo = ( info != null ) ? new PageComponentInfo ( info , null ) : null ; AbstractBookmarkableMapper . UrlInfo urlInfo = new AbstractBookmarkableMapper . UrlInfo ( pageComponentInfo , page . getClass ( ) , handler . getPageParameters ( ) ) ; return buildUrl ( urlInfo ) ; } else { return null ; } } else if ( requestHandler instanceof BookmarkableListenerInterfaceRequestHandler ) { BookmarkableListenerInterfaceRequestHandler handler = ( ( BookmarkableListenerInterfaceRequestHandler ) ( requestHandler ) ) ; IRequestablePage page = handler . getPage ( ) ; if ( ! ( checkPageClass ( page . getClass ( ) ) ) ) { return null ; } PageInfo pageInfo = new PageInfo ( page ) ; <START_BUG> ComponentInfo componentInfo = new ComponentInfo ( page . getRenderCount ( ) , requestListenerInterfaceToString ( handler . getListenerInterface ( ) ) , handler . getComponent ( ) . getPath ( ) , handler . getBehaviorIndex ( ) ) ; <END_BUG> AbstractBookmarkableMapper . UrlInfo urlInfo = new AbstractBookmarkableMapper . UrlInfo ( new PageComponentInfo ( pageInfo , componentInfo ) , page . getClass ( ) , handler . getPageParameters ( ) ) ; return buildUrl ( urlInfo ) ; } return null ; } }

Fix:
ComponentInfo componentInfo = new ComponentInfo ( page . getRenderCount ( ) , requestListenerInterfaceToString ( handler . getListenerInterface ( ) ) , handler . getComponent ( ) . getPageRelativePath ( ) , handler . getBehaviorIndex ( ) ) ;