Buggy code:
public abstract class RequestCycle { private static final class RequestTargetStack extends ArrayList < IRequestTarget > { private static final long serialVersionUID = 1L ; public RequestTargetStack ( final int initialCapacity ) { } public final boolean empty ( ) { } public final IRequestTarget peek ( ) { } public final IRequestTarget pop ( ) { } public final void push ( final IRequestTarget requestTarget ) { } } private static final ThreadLocal < RequestCycle > current = new ThreadLocal < RequestCycle > ( ) ; private static final int DETACH_REQUEST = 6 ; private static final int DONE = 7 ; private static final int HANDLE_EXCEPTION = 5 ; private static final Log log = LogFactory . getLog ( RequestCycle . class ) ; private static final int NOT_STARTED = 0 ; private static final int PREPARE_REQUEST = 1 ; private static final int PROCESS_EVENTS = 3 ; private static final int RESOLVE_TARGET = 2 ; private static final int RESPOND = 4 ; public static RequestCycle get ( ) { } protected final Application application ; protected final IRequestCycleProcessor processor ; protected Request request ; protected Response response ; protected final Session session ; private int currentStep = RequestCycle . NOT_STARTED ; private final Response originalResponse ; private boolean redirect ; private final transient RequestCycle . RequestTargetStack requestTargets = new RequestCycle . RequestTargetStack ( 3 ) ; private final long startTime = System . currentTimeMillis ( ) ; private boolean updateSession ; protected RequestCycle ( final Session session , final Request request , final Response response ) { } public Application getApplication ( ) { } public ClientInfo getClientInfo ( ) { } public final Response getOriginalResponse ( ) { } public abstract IRequestCycleProcessor getProcessor ( ) { } public final boolean getRedirect ( ) { } public final Request getRequest ( ) { } public final IRequestTarget getRequestTarget ( ) { } public final Response getResponse ( ) { } public final Page getResponsePage ( ) { } public final Class getResponsePageClass ( ) { } public Session getSession ( ) { } public final long getStartTime ( ) { } public Page onRuntimeException ( Page page , RuntimeException e ) { } public abstract void redirectTo ( final Page page ) { } public final void request ( ) { } public final void request ( final Component component ) { } public final void request ( IRequestTarget target ) { } public final void setRedirect ( final boolean redirect ) { } public final void setRequest ( Request request ) { } public final void setRequestTarget ( IRequestTarget requestTarget ) { } public final Response setResponse ( final Response response ) { } public final void setResponsePage ( final Class < ? extends Page > pageClass ) { } public final void setResponsePage ( final Class < ? extends Page > pageClass , final PageParameters pageParameters ) { } public final void setResponsePage ( final Page page ) { } public void setUpdateSession ( boolean updateCluster ) { } @ Override public String toString ( ) { } public final CharSequence urlFor ( final Component component , final RequestListenerInterface listener ) { final Page page = component . getPage ( ) ; final IRequestTarget target ; <START_BUG> if ( ( component . getStatelessHint ( ) ) && ( page . isBookmarkable ( ) ) ) { <END_BUG> target = new wicket . request . target . component . BookmarkableListenerInterfaceRequestTarget ( page . getPageMap ( ) . getName ( ) , page . getClass ( ) , new PageParameters ( ) , component , listener ) ; } else { session . getSessionStore ( ) . getSessionId ( request , true ) ; target = new wicket . request . target . component . listener . ListenerInterfaceRequestTarget ( page , component , listener ) ; } final IRequestCodingStrategy requestCodingStrategy = getProcessor ( ) . getRequestCodingStrategy ( ) ; return requestCodingStrategy . encode ( this , target ) ; } public final CharSequence urlFor ( final IRequestTarget requestTarget ) { } public final CharSequence urlFor ( final Page page ) { } public final CharSequence urlFor ( final PageMap pageMap , final Class < ? extends Page > pageClass , final PageParameters parameters ) { } public final CharSequence urlFor ( final ResourceReference resourceReference ) { } public final CharSequence urlFor ( final ResourceReference resourceReference , ValueMap parameters ) { } protected abstract ClientInfo newClientInfo ( ) { } protected void onBeginRequest ( ) { } protected void onEndRequest ( ) { } private void checkReuse ( ) { } private void detach ( ) { } private final void doProcessEventsAndRespond ( IRequestCycleProcessor processor ) { } private void prepare ( ) { } private final void processEventsAndRespond ( ) { } private final void respond ( ) { } private final IRequestCycleProcessor safeGetRequestProcessor ( ) { } private final void step ( ) { } private final void steps ( ) { } private final void threadDetach ( ) { } }

Fix:
if ( ( component . isStateless ( ) ) && ( page . isBookmarkable ( ) ) ) {