In #185 we used default values when we encountered error (for example, if we have an error in single expression, it return an unit type () ).
It shouldn't return default values, but recovering to special error state, so an analyzer can distinguish between them, and handle it correctly. Right now if we have we don't return "poisoned" tree, but if we implement this we could analyze even broken code.