class Ed25519FieldElement implements Serializable {

  public Ed25519FieldElement invert() {
    Ed25519FieldElement f0;
    Ed25519FieldElement f1;

    // comments describe how exponent is created

    // 2 == 2 * 1
    f0 = this.square();

    // 9 == 9
    f1 = this.pow2to9();

    // 11 == 9 + 2
    f0 = f0.multiply(f1);

    // 2^252 - 2^2
    f1 = this.pow2to252sub4();

    // 2^255 - 2^5
    for (int i = 1; i < 4; ++i) {
      f1 = f1.square();
    }

    // 2^255 - 21
    return f1.multiply(f0);
  }

  public  Ed25519FieldElement(final int[] values);

}