        newTreeInfo = if (isMax treeInfo) then treeInfo { alpha = (max score (alpha treeInfo))} else treeInfo { beta = (min score (beta treeInfo))} in
    if pruneCondition then movePath
    else calculateBestMove (isMax treeInfo) movePath (nextLevelMinimax node newTreeInfo)

nextLevelMinimax :: a -> TreeInfo a -> MovePath a