@Override
            public double applyAsDouble(T object) {
                final int p = power.applyAsInt(object);
                if (p == 0) return 1;
                final double value = inner.applyAsByte(object);
                switch (p) {
                    case 1: return value;
                    case 2: return value * value;
                    case 3: return value * value * value;
                    case 4: return value * value * value * value;
                    case 5: return value * value * value * value * value;
                    case -1: return 1d / value;
                    default: return Math.pow(value, p);
                }
            }
Returns an expression that gives the value of the specified expression,
raised to the specified power.

@param expression  the expression to raise
@param power       the power to raise it to
@param <T>         the type of the input
@return            the new expression
runtime-parent/runtime-compute/src/main/java/com/speedment/runtime/compute/internal/expression/PowUtil.java