can we just delegate to `valueOf` and if it throws an exception we return the default? I don't think we should do the linear checks here