I kinda dislike storing `raw_value` temporarily. If you move the `coerce_value` call up to line 29 and don't use parens on it, I don't think it will look too bad, and you can do the memoization right there. Up to you, though. Thoughts?