This class can be used as a starting point for those writing their own
ActiveDescriptor. It also has some helper methods to deal with metadata
and adding and removing contracts and qualifiers, which can be helpful
when customizing the implementation

This equals matches only if the following fields of the descriptor match:
implementation
contracts
name
scope
qualifiers
descriptorType
descriptorVisibility
metadata
proxiable
proxyForSameScope
analysisName

getCache

This can be used for scopes that will only every be created once.
The returned value must have been set previously with setCache.
If this is called when isCacheSet is false will result in a
RuntimeException

isReified

This method returns true if this descriptor has been reified
(class loaded). If this method returns false then the other methods
in this interface will throw an IllegalStateException. Once this
method returns true it may be