code: private FDBigInteger mult(FDBigInteger other) {
          if (this.nWords == 0) {
              return this;
          }
          if (this.size() == 1) {
              return other.mult(data[0]);
          }
          if (other.nWords == 0) {
              return other;
          }
          if (other.size() == 1) {
              return this.mult(other.data[0]);
          }
          int[] r = new int[nWords + other.nWords];
          mult(this.data, this.nWords, other.data, other.nWords, r);
          return new FDBigInteger(r, this.offset + other.offset);
      }
docs: /*@
  @ requires this.value() == 0;
  @ assignable \nothing;
  @ ensures \result == this;
  @
  @  also
  @
  @ requires this.value() != 0 && other.value() == 0;
  @ assignable \nothing;
  @ ensures \result == other;
  @
  @  also
  @
  @ requires this.value() != 0 && other.value() != 0;
  @ assignable \nothing;
  @ ensures \result.value() == \old(this.value() * other.value());
  @