code: def _get_imports_m(self, data_types, default_imports):
          
          if not isinstance(data_types, list):
              data_types = [data_types]
  
          import_classes = default_imports
  
          for data_type in data_types:
              import_classes.append(fmt_class_prefix(data_type))
  
              if data_type.parent_type:
                  import_classes.append(fmt_class_prefix(data_type.parent_type))
  
              if is_struct_type(
                      data_type) and data_type.has_enumerated_subtypes():
                  for _, subtype in data_type.get_all_subtypes_with_tags():
                      import_classes.append(fmt_class_prefix(subtype))
  
              for field in data_type.all_fields:
                  data_type, _ = unwrap_nullable(field.data_type)
  
                  # unpack list or map
                  while is_list_type(data_type) or is_map_type(data_type):
                      data_type = (data_type.value_data_type if
                          is_map_type(data_type) else data_type.data_type)
  
                  if is_user_defined_type(data_type):
                      import_classes.append(fmt_class_prefix(data_type))
  
          if import_classes:
              import_classes = list(set(import_classes))
              import_classes.sort()
  
          return import_classes
docs: Emits all necessary implementation file imports for the given Stone data type.