code: def _generate_struct_or_union_class_custom_annotations(self):
          
          self.emit('def _process_custom_annotations(')
          with self.indent():
              self.emit('self,')
              self.emit('annotation_type: Type[T],')
              self.emit('field_path: Text,')
              self.emit('processor: Callable[[T, U], U],')
              self.import_tracker._register_typing_import('Type')
              self.import_tracker._register_typing_import('Text')
              self.import_tracker._register_typing_import('Callable')
          self.emit(') -> None: ...')
          self.emit()
docs: The _process_custom_annotations function allows client code to access
          custom annotations defined in the spec.