code: def annotation_wrapper(annotation, doc=None):
      
      def decorator(attr):
          __cache__.setdefault(attr, []).append(annotation)
          # Also mark the annotation on the object itself. This will
          # fail if the object has a restrictive __slots__, but it's
          # required for some objects like Column because SQLAlchemy copies
          # them in subclasses, changing their hash and making them
          # undiscoverable via the cache.
          try:
              if not hasattr(attr, '_coaster_annotations'):
                  setattr(attr, '_coaster_annotations', [])
              attr._coaster_annotations.append(annotation)
          except AttributeError:
              pass
          return attr
  
      decorator.__name__ = decorator.name = annotation
      decorator.__doc__ = doc
      return decorator
docs: Defines an annotation, which can be applied to attributes in a database model.