class mathStrucInteger {

  TPH EBJW model;
  TPH EBJX innerOp;
mathStrucInteger(){
    super(());
    this.innerOp = (TPH EBJY o) -> {
      return (TPH EBJZ ms) -> {
        return new mathStrucInteger(o.apply Signature: [TPH EBKC, TPH EBKD, TPH EBKE](this.model, ms.model));
      };
    };
  }
  mathStrucInteger(TPH EBKT m){
    super(());
    this.model = m;
    return;
  }

}class mathStrucIntegerUse {

mathStrucIntegerUse(){
    super(());
  }
  TPH EBLO main(){
    TPH EBLP ms;
    ms = new mathStrucInteger(2);
    TPH EBLT ms2;
    ms2 = ms.innerOp.apply Signature: [TPH EBMD, TPH EBME]((TPH EBLV x, TPH EBLW y) -> {
      return x op y;
    }).apply Signature: [TPH EBMH, TPH EBMI](ms);
    return ms2;
  }

  mathStrucIntegerUse(){
    super(());
  }

}