public class Assert2 { // pre : y >= 0 // post: returns x^y public static int pow(int x, int y) { int prod = 1; // Point A while (y > 0) { // Point B if (y % 2 == 0) { // Point C x = x * x; y = y / 2; // Point D } else { // Point E prod = prod * x; y--; // Point F } // Point G } // Point H return prod; } } /* Assume the method is called only if the precondition is true. Fill in the table below with the words ALWAYS, NEVER or SOMETIMES. y == 0 y % 2 == 0 +---------------------+---------------------+ Point A | sometimes | sometimes | +---------------------+---------------------+ Point B | never | sometimes | +---------------------+---------------------+ Point C | never | always | +---------------------+---------------------+ Point D | never | sometimes | +---------------------+---------------------+ Point E | never | never | +---------------------+---------------------+ Point F | sometimes | always | +---------------------+---------------------+ Point G | sometimes | sometimes | +---------------------+---------------------+ Point H | always | always | +---------------------+---------------------+ */