Memoize validate result in is_valid? as the validate method is destructive