code: private Data<Input, Output> derive_(Input input) {
          Data<Input, Output> result = new Data<>(input, fn_.apply(input));
          recent_.set(result);
          return result;
      }
docs: Derive and remember a calculation.
  
  Future invocations of match_(input) will return the returned Data instance.
  @param input The input for the calculation.
  @return A data object, holding the result of the calculation.