@SuppressWarnings("unchecked")
  @Override
  public U multiply(final BigInteger n) {
    if (n.compareTo(BigInteger.ZERO) == 0) {
      return infinity();
    } else if (n.compareTo(BigInteger.ONE) == 0) {
      return newInstance(x, y);
    } else if (n.mod(TWO).compareTo(BigInteger.ZERO) == 0) {
      return (U) doub().multiply(n.divide(TWO));
    } else {
      return (U) doub().multiply(n.divide(TWO)).add(this);
    }
  }
New instance of generic type U.

@param x the x
@param y the y
@return the U
crypto/algorithms/src/main/java/org/hyperledger/besu/crypto/altbn128/AbstractFieldPoint.java