Maybe `throw` should mean parse failure?