# File lib/rgen/metamodel_builder/builder_extensions.rb, line 69
  def has_many_attr(role, target_class=nil, raw_props={}, &block)
    props = Intermediate::Attribute.new(target_class, _setManyUpperBound(_ownProps(raw_props).merge({
      :name=>role})))
    raise "No opposite available" unless _oppositeProps(raw_props).empty?
    FeatureBlockEvaluator.eval(block, props)
    _build_internal(props)
  end