### Question:
CompositePageCursor extends PageCursor { public static PageCursor compose( PageCursor first, int firstLength, PageCursor second, int secondLength ) { return new CompositePageCursor( first, first.getOffset(), firstLength, second, second.getOffset(), secondLength ); } private  CompositePageCursor(
            PageCursor first, int firstBaseOffset, int firstLength,
            PageCursor second, int secondBaseOffset, int secondLength ); @Override byte getByte(); @Override byte getByte( int offset ); @Override void putByte( byte value ); @Override void putByte( int offset, byte value ); @Override long getLong(); @Override long getLong( int offset ); @Override void putLong( long value ); @Override void putLong( int offset, long value ); @Override int getInt(); @Override int getInt( int offset ); @Override void putInt( int value ); @Override void putInt( int offset, int value ); @Override void getBytes( byte[] data ); @Override void getBytes( byte[] data, int arrayOffset, int length ); @Override void putBytes( byte[] data ); @Override void putBytes( byte[] data, int arrayOffset, int length ); @Override void putBytes( int bytes, byte value ); @Override short getShort(); @Override short getShort( int offset ); @Override void putShort( short value ); @Override void putShort( int offset, short value ); @Override void setOffset( int offset ); @Override int getOffset(); @Override void mark(); @Override void setOffsetToMark(); @Override long getCurrentPageId(); @Override int getCurrentPageSize(); @Override File getCurrentFile(); @Override void rewind(); @Override boolean next(); @Override boolean next( long pageId ); @Override void close(); @Override boolean shouldRetry(); @Override int copyTo( int sourceOffset, PageCursor targetCursor, int targetOffset, int lengthInBytes ); @Override int copyTo( int sourceOffset, ByteBuffer targetBuffer ); @Override void shiftBytes( int sourceOffset, int length, int shift ); @Override boolean checkAndClearBoundsFlag(); @Override void checkAndClearCursorException(); @Override void raiseOutOfBounds(); @Override void setCursorException( String message ); @Override void clearCursorException(); @Override PageCursor openLinkedCursor( long pageId ); @Override void zapPage(); @Override boolean isWriteLocked(); static PageCursor compose( PageCursor first, int firstLength, PageCursor second, int secondLength );  }### Answer:
@Test void composeMustNotThrowIfFirstLengthExpandsBeyondFirstPage() { CompositePageCursor.compose( first, Integer.MAX_VALUE, second, PAGE_SIZE ); }
@Test void composeMustNotThrowIfSecondLengthExpandsBeyondSecondPage() { CompositePageCursor.compose( first, PAGE_SIZE, second, Integer.MAX_VALUE ); }