code: def _generate_union_class_h(self, union):
          
          self._generate_init_imports_h(union)
          self._generate_imports_h(self._get_imports_h(union))
  
          self.emit()
          self.emit('NS_ASSUME_NONNULL_BEGIN')
          self.emit()
  
          self.emit('#pragma mark - API Object')
          self.emit()
          self._generate_class_comment(union)
  
          union_name = fmt_class_prefix(union)
  
          with self.block_h_from_data_type(union, protocol=['DBSerializable', 'NSCopying']):
              self.emit('#pragma mark - Instance fields')
              self.emit()
              self._generate_union_tag_state(union)
              self._generate_union_tag_property(union)
              self._generate_union_properties(union.all_fields)
              self.emit('#pragma mark - Constructors')
              self.emit()
              self._generate_union_cstor_signatures(union, union.all_fields)
              self._generate_init_unavailable_signature(union)
              self.emit('#pragma mark - Tag state methods')
              self.emit()
              self._generate_union_tag_access_signatures(union)
  
          self.emit()
          self.emit()
  
          self.emit('#pragma mark - Serializer Object')
          self.emit()
          self.emit(comment_prefix)
          self.emit_wrapped_text(
              'The serialization class for the `{}` union.'.format(union_name),
              prefix=comment_prefix)
          self.emit(comment_prefix)
          with self.block_h(fmt_serial_class(union_name)):
              self._generate_serializer_signatures(union_name)
  
          self.emit()
          self.emit('NS_ASSUME_NONNULL_END')
          self.emit()
docs: Defines an Obj C header file that represents a union in Stone.