code: public MutableInt mapInput(final IntUnaryOperator fn) {
          final MutableInt host = this;
          return new MutableInt() {
              @Override
              public MutableInt set(final int value) {
                  host.set(fn.applyAsInt(value));
                  return this;
              }
  
          };
      }
docs: Use the supplied function to perform a lazy transform operation when getValue is called
  <pre>
  {@code
  MutableInt mutable = MutableInt.fromExternal(()->!this.value,val->!this.value);
  MutableInt withOverride = mutable.mapInput(b->{
  if(override)
  return 10;
  return b;
  });
  
  }
  </pre>
  
  
  @param fn Map function to be applied to the input when set is called
  @return Mutable that lazily applies the provided function when set is called to the input value