code: protected Expression power() {
          Expression left = atom();
          if (tokenizer.current().isSymbol("^") || tokenizer.current().isSymbol("**")) {
              tokenizer.consume();
              Expression right = power();
              return reOrder(left, right, BinaryOperation.Op.POWER);
          }
          return left;
      }
docs: Parser rule for parsing a power.
  <p>
  A power is an <tt>atom</tt> which might be followed by ^ or ** as operator and another <tt>power</tt>.
  
  @return a power parsed from the given input