module T::Props::GeneratedCodeValidation

def self.validate_serialize(source)

def self.validate_serialize(source)
  parsed = parse(source)
  # def %<name>(strict)
  # ...
  # end
  assert_equal(:def, parsed.type)
  name, args, body = parsed.children
  assert_equal(:__t_props_generated_serialize, name)
  assert_equal(s(:args, s(:arg, :strict)), args)
  assert_equal(:begin, body.type)
  init, *prop_clauses, ret = body.children
  # h = {}
  # ...
  # h
  assert_equal(s(:lvasgn, :h, s(:hash)), init)
  assert_equal(s(:lvar, :h), ret)
  prop_clauses.each do |clause|
    validate_serialize_clause(clause)
  end
end