def _get_pep_484_type_mapping_callbacks(self):<EOL>
def upon_encountering_list(ns, data_type, override_dict):<EOL><INDENT>self.import_tracker._register_typing_import("<STR_LIT>")<EOL>return "<STR_LIT>".format(<EOL>map_stone_type_to_python_type(ns, data_type, override_dict)<EOL>)<EOL><DEDENT>def upon_encountering_map(ns, map_data_type, override_dict):<EOL><INDENT>map_type = cast(Map, map_data_type)<EOL>self.import_tracker._register_typing_import("<STR_LIT>")<EOL>return "<STR_LIT>".format(<EOL>map_stone_type_to_python_type(ns, map_type.key_data_type, override_dict),<EOL>map_stone_type_to_python_type(ns, map_type.value_data_type, override_dict)<EOL>)<EOL><DEDENT>def upon_encountering_nullable(ns, data_type, override_dict):<EOL><INDENT>self.import_tracker._register_typing_import("<STR_LIT>")<EOL>return "<STR_LIT>".format(<EOL>map_stone_type_to_python_type(ns, data_type, override_dict)<EOL>)<EOL><DEDENT>def upon_encountering_timestamp(<EOL>ns, data_type, override_dict<EOL>):  <EOL><INDENT>self.import_tracker._register_adhoc_import("<STR_LIT>")<EOL>return map_stone_type_to_python_type(ns, data_type)<EOL><DEDENT>def upon_encountering_string(<EOL>ns, data_type, override_dict<EOL>):  <EOL><INDENT>self.import_tracker._register_typing_import("<STR_LIT>")<EOL>return "<STR_LIT>"<EOL><DEDENT>callback_dict = {<EOL>List: upon_encountering_list,<EOL>Map: upon_encountering_map,<EOL>Nullable: upon_encountering_nullable,<EOL>Timestamp: upon_encountering_timestamp,<EOL>String: upon_encountering_string,<EOL>}  <EOL>return callback_dict<EOL>
Once-per-instance, generate a mapping from
"List" -> return pep4848-compatible List[SomeType]
"Nullable" -> return pep484-compatible Optional[SomeType]

This is per-instance because we have to also call `self._register_typing_import`, because
we need to potentially import some things.