private Data<Input,Output> derive_(Input input){
  Data<Input,Output> result=new Data<>(input,fn_.apply(input));
  recent_.set(result);
  return result;
}

private Data < Input , Output > derive_ ( Input input ) { Data < Input , Output > result = new Data < > ( input , fn_ . apply ( input ) ) ; recent_ . set ( result ) ; return result ; }
derive and remember a calculation . future invocations of match_ ( input ) will return the returned data instance .
