code: def _generate_struct_class_init(self, data_type):
          
  
          args = ['self']
          for field in data_type.all_fields:
              field_name_reserved_check = fmt_var(field.name, True)
              args.append('%s=None' % field_name_reserved_check)
  
          self.generate_multiline_list(args, before='def __init__', after=':')
  
          with self.indent():
              lineno = self.lineno
  
              # Call the parent constructor if a super type exists
              if data_type.parent_type:
                  class_name = class_name_for_data_type(data_type)
                  all_parent_fields = [fmt_func(f.name, check_reserved=True)
                                for f in data_type.parent_type.all_fields]
                  self.generate_multiline_list(
                      all_parent_fields,
                      before='super({}, self).__init__'.format(class_name))
  
              # initialize each field
              for field in data_type.fields:
                  field_var_name = fmt_var(field.name)
                  self.emit('self._{}_value = None'.format(field_var_name))
                  self.emit('self._{}_present = False'.format(field_var_name))
  
              # handle arguments that were set
              for field in data_type.fields:
                  field_var_name = fmt_var(field.name, True)
                  self.emit('if {} is not None:'.format(field_var_name))
                  with self.indent():
                      self.emit('self.{0} = {0}'.format(field_var_name))
  
              if lineno == self.lineno:
                  self.emit('pass')
              self.emit()
docs: Generates constructor. The constructor takes all possible fields as
          optional arguments. Any argument that is set on construction sets the
          corresponding field for the instance.