def _fmt_serialization_call(self, data_type, input_value, serialize, depth=<NUM_LIT:0>):
data_type, _ = unwrap_nullable(data_type)<EOL>serializer_func = '<STR_LIT>' if serialize else '<STR_LIT>'<EOL>serializer_args = []<EOL>if is_primitive_type(data_type):<EOL><INDENT>return input_value<EOL><DEDENT>if is_list_type(data_type) or is_map_type(data_type):<EOL><INDENT>serializer_args.append(('<STR_LIT:value>', input_value))<EOL>elem_data_type = (data_type.value_data_type if<EOL>is_map_type(data_type) else data_type.data_type)<EOL>serialization_call = self._fmt_serialization_call(<EOL>elem_data_type, '<STR_LIT>'.format(depth), serialize, depth + <NUM_LIT:1>)<EOL>data_struct_block = '<STR_LIT>'.format(<EOL>depth, serialization_call)<EOL>serializer_args.append(('<STR_LIT>', data_struct_block))<EOL><DEDENT>elif is_timestamp_type(data_type):<EOL><INDENT>serializer_args.append(('<STR_LIT:value>', input_value))<EOL>serializer_args.append(('<STR_LIT>',<EOL>'<STR_LIT>'.format(data_type.format)))<EOL><DEDENT>else:<EOL><INDENT>serializer_args.append(('<STR_LIT:value>', input_value))<EOL><DEDENT>return '<STR_LIT:{}>'.format(<EOL>fmt_func_call(<EOL>caller=fmt_serial_obj(data_type),<EOL>callee=serializer_func,<EOL>args=fmt_func_args(serializer_args)))<EOL>
Returns the appropriate serialization / deserialization method
        call for the given data type.