it may not work for `result.nothing()`