public Either <RfcErrorInfo, Unit> SetFieldValue <T>(IDataContainerHandle handle, T value, Func <Either <RfcErrorInfo, RfcFieldInfo> > func) { return(func().Bind(fieldInfo => { Logger.IfSome(l => l.LogTrace("setting field value", new { handle, fieldInfo, SourceType = typeof(T) })); return FieldMapper.SetField(value, new FieldMappingContext(this, handle, fieldInfo)); })); }