code: def apply_annotation(self, bo, annotation):
          
  
          # Currently we only support RegionAnnotation
  
          if not isinstance(annotation, RegionAnnotation):
              return bo
  
          if not isinstance(bo, ValueSet):
              # Convert it to a ValueSet first
              # Note that the original value is not kept at all. If you want to convert a StridedInterval to a ValueSet,
              # you gotta do the conversion by calling AST.annotate() from outside.
              bo = ValueSet.empty(bo.bits)
  
          return bo.apply_annotation(annotation)
docs: Apply an annotation on the backend object.
  
          :param BackendObject bo: The backend object.
          :param Annotation annotation: The annotation to be applied
          :return: A new BackendObject
          :rtype: BackendObject