lib/catissue/metadata.rb
def create_proxy_attribute(mod, proxy)
      # the proxy attribute symbol
      pa = mod.name.demodulize.underscore.to_sym
      # Define the proxy attribute.
      attr_create_on_demand_accessor(pa) { Set.new }
      # Register the attribute.
      add_attribute(pa, proxy, :collection, :saved, :nosync)
      # the annotation module => proxy attribute association
      @ann_mod_pxy_hash ||= {}
      @ann_mod_pxy_hash[mod] = pa
      # The proxy is a logical dependent.
      add_dependent_attribute(pa, :logical)
      logger.debug { "Created #{qp} #{mod.qp} annotation proxy logical dependent reference attribute #{pa} to #{proxy}." }
      pa
    end
def create_proxy_attribute(mod, proxy)
      # the proxy attribute symbol
      pa = mod.name.demodulize.underscore.to_sym
      # Define the proxy attribute.
      attr_create_on_demand_accessor(pa) { Set.new }
      # Register the attribute.
      add_attribute(pa, proxy, :collection, :saved, :nosync)
      # the annotation module => proxy attribute association
      @ann_mod_pxy_hash ||= {}
      @ann_mod_pxy_hash[mod] = pa
      # The proxy is a logical dependent.
      add_dependent_attribute(pa, :logical)
      logger.debug { "Created #{qp} #{mod.qp} annotation proxy logical dependent reference attribute #{pa} to #{proxy}." }
      pa
    end
Makes an attribute whose name is the demodulized underscored given module name.
 The attribute reader creates an {Annotation::Proxy} instance of the method
 receiver {Annotatable} instance on demand.

 @param [AnnotationModule] mod the subject annotation
 @return [ProxyClass] proxy the proxy class