InputProvider(onProvided: (T, callback: ResultCallback<NoValue>) -> Unit)
InputProvider(onProvided: (T, callback: ResultCallback<NoValue>) -> Unit, validation: (T) -> String?)