

add_to_page(cursor, payload, child){
  if( fits-on-current-page ){
    insert (child,payload) into cursor
    return
  }
  if( cursor is root page ){
    split cursor+(child,payload) into page1, center, page2
    set cursor page to page1,center,page2
    return
  }
  if( move_some_data_left || move_some_data_right ){
    add (child,payload) to cursor
    return
  }
  split cursor+(child,payload) into self, center, page2
  move_up(cursor)
  add_to_page(cursor, center, page2)
}


split(in_page, payload, child_pgno, out_page1, center_payload, out_page2){
  // It might be that in_page==out_page1

}
