code: def add_annotation(name, opts={})
        # the module symbol
        mod_sym = name.camelize.to_sym
        # the module spec defaults
        pkg = opts[:package] ||= name.underscore
        svc = opts[:service] ||= name.underscore
        grp = opts[:group] ||= pkg
        pxy_nm = opts[:proxy_name] || "#{self.name.demodulize}RecordEntry"
        self.annotation_proxy_class_name = pxy_nm
        # add the annotation entry
        @ann_spec_hash ||= {}
        @ann_spec_hash[mod_sym] = opts
        logger.info("Added #{qp} annotation #{name} with module #{mod_sym}, package #{pkg}, service #{svc} and group #{grp}.")
      end
docs: Declares an annotation scoped by this class.
  
   @param [String] name the name of the annotation module
   @param [{Symbol => Object}] opts the annotation options
   @option opts [String] :package the package name (default is the lower-case underscore name)
   @option opts [String] :service the service name (default is the lower-case underscore name)
   @option opts [String] :group the DE group short name (default is the package)
   @option opts [String] :proxy_name the DE proxy class name (default is the class name followed by +RecordEntry+)