module Annotation
	
	
	A mechanism for annotating fibers.
Definitions
def initialize(annotation: nil, **options, &block)
Annotate the current fiber with the given annotation.
Signature
	- 
					parameter annotationObject
- The annotation to set. 
Implementation
						def initialize(annotation: nil, **options, &block)
	@annotation = annotation
	super(**options, &block)
endattr_accessor :annotation
Get the current annotation.
Signature
	- 
					returns Object
- The current annotation. 
def annotate(annotation)
Annotate the current fiber with the given annotation.
If a block is given, the annotation is set for the duration of the block and then restored to the previous value.
The block form of this method should only be invoked on the current fiber.
Signature
	- 
					parameter annotationObject
- The annotation to set. 
- 
					yields {}
- The block to execute with the given annotation. 
- 
					returns Object
- The return value of the block. 
Implementation
						def annotate(annotation)
	if block_given?
		raise "Cannot annotation a different fiber!" unless Fiber.current == self
		
		begin
			current_annotation = @annotation
			@annotation = annotation
			return yield
		ensure
			@annotation = current_annotation
		end
	else
		@annotation = annotation
	end
end