Buggy code:
public abstract class Page extends MarkupContainer implements IRedirectListener , IPageMapEntry { protected static final boolean ACCESS_ALLOWED = true ; protected static final boolean ACCESS_DENIED = false ; private static final short FLAG_IS_DIRTY = FLAG_RESERVED1 ; private static final short FLAG_IS_RENDERING = FLAG_RESERVED2 ; private static final short FLAG_NEW_VERSION = FLAG_RESERVED3 ; private static final short FLAG_TRACK_CHANGES = FLAG_RESERVED4 ; private static final Log log = LogFactory . getLog ( Page . class ) ; private short accessSequenceNumber ; private short autoIndex ; private FeedbackMessages feedbackMessages ; private Page . MetaDataEntry [ ] metaData ; private short numericId ; private transient PageMap pageMap ; private String pageMapName ; private transient Set renderedComponents ; private transient boolean stateless = true ; private IPageVersionManager versionManager ; private static class MetaDataEntry { Component component ; MetaDataKey key ; Serializable object ; } protected Page ( ) { } protected Page ( final IModel model ) { } public void afterCallComponent ( final Component component , final Method method ) { } public void beforeCallComponent ( final Component component , final Method method ) { } public boolean checkAccess ( ) { } public final boolean continueToOriginalDestination ( ) { } public void detachModels ( ) { } public final void doRender ( ) { } public final void endComponentRender ( Component component ) { } public final void expireOldestVersion ( ) { } public int getAccessSequenceNumber ( ) { } public final short getAutoIndex ( ) { } public final int getCurrentVersionNumber ( ) { } public final FeedbackMessages getFeedbackMessages ( ) { } public final String getId ( ) { } public int getNumericId ( ) { } public final Class getPageClass ( ) { } public final PageMap getPageMap ( ) { } public IPageMapEntry getPageMapEntry ( ) { } public final int getSize ( ) { } public Page getVersion ( final int versionNumber ) { } public final int getVersions ( ) { <START_BUG> return ( versionManager ) == null ? 1 : versionManager . getVersions ( ) ; <END_BUG> } public final String hierarchyAsString ( ) { } public final boolean isDirty ( ) { } public boolean isErrorPage ( ) { } public final void onRedirect ( ) { } public final void redirectToInterceptPage ( final Page page ) { } public final void removePersistedFormData ( final Class formClass , final boolean disablePersistence ) { } public void setAccessSequenceNumber ( int accessSequenceNumber ) { } public final void setDirty ( final boolean dirty ) { } public final void setNumericId ( final int id ) { } public final void startComponentRender ( Component component ) { } public String toString ( ) { } public final String urlFor ( final Component component , final Class listenerInterface ) { } public final String urlFor ( final IRequestTarget requestTarget ) { } public final String urlFor ( final String resourceKey ) { } public final String urlFor ( final String pageMapName , final Class pageClass , final PageParameters parameters ) { } protected void configureResponse ( ) { } protected final void internalOnEndRequest ( ) { } protected final void internalOnModelChanged ( ) { } protected IPageVersionManager newVersionManager ( ) { } protected final void onRender ( final MarkupStream markupStream ) { } final void componentAdded ( final Component component ) { } final void componentModelChanging ( final Component component ) { } final void componentRemoved ( final Component component ) { } final void componentRendered ( final Component component ) { } final void componentStateChanging ( final Component component , Change change ) { } Serializable getMetaData ( final Component component , final MetaDataKey key ) { } final boolean isStateless ( ) { } final void setFormComponentValuesFromCookies ( ) { } void setMetaData ( final Component component , final MetaDataKey key , final Serializable object ) { } final void setPageMap ( final String pageMapName ) { } private void checkHierarchyChange ( Component component ) { } private final void checkRendering ( final MarkupContainer renderedContainer ) { } private final void endVersion ( ) { } private final void init ( ) { } private final boolean mayTrackChangesFor ( final Component component ) { } }

Fix:
return ( versionManager ) == null ? 1 : ( versionManager . getVersions ( ) ) + 1 ;