Going back to if (certainly(b)) return b; if (is_indeterminate(b)) result = b; as there seems to be a compiler issues