Alpha-Beta Pruning
public class Alpha extends MaxAcc {
 
    public AAccumulator makeOpposite() {

        return new Beta(modelPlayer) {

            public boolean isNotDone() {
                return Alpha.this.getVal() < Beta.this.getVal();
            }
        };
   }
}
Just a new accumulator!
Override the creation of the next level’s accumulator
Accumulator for the opposite player as an anonymous inner class.
Stop mapping if pruning condition is met.
Abstraction isolates the essence
and provides extensibility
Closure gives the scoping we need!