scope test_BStack_v2 please include function test_BStack. /* Goal: Java code with backtracking, like this, to return 4 different values: S color = "black" or "white"; S shape = "circle" or "square"; return "A " + color + " " + shape; */ svoid test_BStack_v2() { test_BStack_v2_oneBranch(); test_BStack_v2_twoBranches(); test_BStack_v2_undos(); test_BStack_v2_oneBranch3Options(); test_BStack_v2_twoBranches3Options(); test_BStack_v2_noOptions(); } svoid test_BStack_v2_oneBranch() { assertEqualsVerbose( ll("Color is black", "Color is white"), new BStackComputeAllWithPrintStruct(new BStack_v2, new test_BStack_OneBranch)!); } svoid test_BStack_v2_oneBranch3Options() { assertEqualsVerbose( ll("Color is black", "Color is white", "Color is gray"), new BStackComputeAllWithPrintStruct(new BStack_v2, new test_BStack_OneBranch3Options)!); } svoid test_BStack_v2_twoBranches() { assertEqualsVerbose( ll("A black circle", "A black square", "A white circle", "A white square"), new BStackComputeAllWithPrintStruct(new BStack_v2, new test_BStack_TwoBranches)!); } svoid test_BStack_v2_twoBranches3Options() { assertEqualsVerbose( ll("A black circle", "A black square", "A black triangle", "A white circle", "A white square", "A white triangle", "A gray circle", "A gray square", "A gray triangle"), new BStackComputeAllWithPrintStruct(new BStack_v2, new test_BStack_TwoBranches3Options)!); } svoid test_BStack_v2_undos() { new LS things; // list that is changed during execution to test the undos var stack = new BStack_v2<>(new test_BStack_TwoBranchesWithUndos(things)); for (S color : ll("black", "white")) for (S shape : ll("circle", "square")) { assertEqualsVerbose("A \*color*/ \*shape*/", stack.nextResultWithPrintStruct(10)); assertEqualsVerbose(ll(color, shape), things); stack = stack.backtrack(); } assertNull(stack);} svoid test_BStack_v2_noOptions() { assertInnerExceptionOfTypeVerbose(BStack_v2.NoOptionsException.class, -> new BStackComputeAllWithPrintStruct(new BStack_v2, new test_BStack_NoOptions)!); }