class Page {

    public Page getPositions(int[] retainedPositions, int offset, int length)
    {
        requireNonNull(retainedPositions, "retainedPositions is null");

        Block[] blocks = new Block[this.blocks.length];
        for (int i = 0; i < blocks.length; i++) {
            blocks[i] = this.blocks[i].getPositions(retainedPositions, offset, length);
        }
        return wrapBlocksWithoutCopy(length, blocks);
    }

    public  Page(Block... blocks);
    public  Page(int positionCount, Block... blocks);
    private  Page(boolean blocksCopyRequired, int positionCount, Block[] blocks);

}