Buggy code:
public abstract class RequestCycle { private static final ThreadLocal current = new ThreadLocal ( ) ; private static final int DETACH_REQUEST = 5 ; private static final int DONE = 6 ; private static final Logger log = LoggerFactory . getLogger ( 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 static void set ( RequestCycle cycle ) { } private boolean automaticallyClearFeedbackMessages = true ; private int currentStep = RequestCycle . NOT_STARTED ; private boolean handlingException = false ; private final Response originalResponse ; private boolean redirect ; private final transient ArrayListStack requestTargets = new ArrayListStack ( 3 ) ; private PageParameters pageParameters ; private Session session ; private final long startTime = System . currentTimeMillis ( ) ; protected final Application application ; protected final IRequestCycleProcessor processor ; protected Request request ; protected Response response ; protected RequestCycle ( final Application application , final Request request , final Response response ) { } public final Application getApplication ( ) { } public final ClientInfo getClientInfo ( ) { } public final Response getOriginalResponse ( ) { } public final PageParameters getPageParameters ( ) { } 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 final Session getSession ( ) { } public final long getStartTime ( ) { } public boolean isRedirect ( ) { } 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 void setAutomaticallyClearFeedbackMessages ( boolean automaticallyClearFeedbackMessages ) { } 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 pageClass ) { } public final void setResponsePage ( final Class pageClass , final PageParameters pageParameters ) { } public final void setResponsePage ( final Page page ) { } public String toString ( ) { } public final CharSequence urlFor ( final Class pageClass , final PageParameters parameters ) { } public final CharSequence urlFor ( final Component component , final IBehavior behaviour , final RequestListenerInterface listener ) { } public final CharSequence urlFor ( final Component component , final RequestListenerInterface listener ) { } public final CharSequence urlFor ( final IPageMap pageMap , final Class pageClass , final PageParameters parameters ) { } public final CharSequence urlFor ( final IRequestTarget requestTarget ) { } public final CharSequence urlFor ( final Page page ) { } public final CharSequence urlFor ( final ResourceReference resourceReference ) { } public final CharSequence urlFor ( final ResourceReference resourceReference , ValueMap parameters ) { } private void checkReuse ( ) { } public void detach ( ) { } private void prepare ( ) { } private final void processEventsAndRespond ( ) { } private final void respond ( ) { } private final IRequestCycleProcessor safeGetRequestProcessor ( ) { } private boolean sessionExists ( ) { } private final void step ( ) { try { switch ( currentStep ) { case RequestCycle . PREPARE_REQUEST : { prepare ( ) ; break ; } case RequestCycle . RESOLVE_TARGET : { final IRequestTarget target = processor . resolve ( this , request . getRequestParameters ( ) ) ; if ( target == null ) { throw new WicketRuntimeException ( "the<seq2seq4repair_space>processor<seq2seq4repair_space>did<seq2seq4repair_space>not<seq2seq4repair_space>resolve<seq2seq4repair_space>to<seq2seq4repair_space>any<seq2seq4repair_space>request<seq2seq4repair_space>target" ) ; } requestTargets . add ( 0 , target ) ; break ; } case RequestCycle . PROCESS_EVENTS : { processEventsAndRespond ( ) ; break ; } case RequestCycle . RESPOND : { respond ( ) ; break ; } default : { } } } catch ( AbortException e ) { throw e ; } catch ( RuntimeException e ) { if ( ! ( handlingException ) ) { handlingException = true ; <START_BUG> if ( e instanceof PageExpiredException ) { <END_BUG> logRuntimeException ( e ) ; } if ( ( processor ) != null ) { processor . respond ( e , this ) ; } } else { RequestCycle . log . error ( ( "unexpected<seq2seq4repair_space>exception<seq2seq4repair_space>when<seq2seq4repair_space>handling<seq2seq4repair_space>another<seq2seq4repair_space>exception:<seq2seq4repair_space>" + ( e . getMessage ( ) ) ) , e ) ; } } } private final void steps ( ) { } private final void threadDetach ( ) { } final void setPageParameters ( PageParameters parameters ) { } protected void logRuntimeException ( RuntimeException e ) { } protected abstract ClientInfo newClientInfo ( ) { } protected void onBeginRequest ( ) { } protected void onEndRequest ( ) { } private MetaDataEntry [ ] metaData ; public final void setMetaData ( final MetaDataKey key , final Serializable object ) { } public final Serializable getMetaData ( final MetaDataKey key ) { } }

Fix:
if ( ! ( e instanceof PageExpiredException ) ) {