Previously typed(fun0) wasn't called if isErroneous happened to be true. Isn't the current approach going to sometimes cause spurious errors?