Nullable having range interface, maybe you can just add error to the range contract? ``` V op(Range)(Range r) { if(r.hasError)return r.error; ... } ```