module T::Props::GeneratedCodeValidation

def self.validate_deserialize_ivar_set(clause)

def self.validate_deserialize_ivar_set(clause)
= if val.nil?
ss hash.key?(%<serialized_form>s)

l>s
n, clause.type)
l = clause.children
_a?(Symbol)
rror.new("Unexpected ivar: #{ivar_name}")
eser_val.type)
 else_body = deser_val.children
d, s(:lvar, :val), :nil?), condition)
, if_body.type)
e_nil = if_body.children
pdate_found.type)
und_if_body, found_else_body = update_found.children
 found_condition.type)
rg = found_condition.children
r, :hash), receiver)
 method)
arg.type)
ound_if_body)
asgn, s(:lvasgn, :found), :-, s(:int, 1)), found_else_body)
e_handle_nil(handle_nil)
= :kwbegin
, = else_body.children
cue, rescue_expression.type)
= rescue_expression.children
side_effects(try, whitelisted_methods_for_deserialize)
body, rescue_body.type)
nment, handler = rescue_body.children
ay, exceptions.type)
en.each {|c| assert_equal(:const, c.type)}
sgn, assignment.type)
, assignment.children)
rror, val_return = handler.children
d, deserialization_error.type)
 *args = deserialization_error.children
 receiver)
se_deserialization_error, method)
lidate_lack_of_side_effects(a, whitelisted_methods_for_deserialize)}
side_effects(val_return, whitelisted_methods_for_deserialize)
side_effects(else_body, whitelisted_methods_for_deserialize)