# File lib/rgen/metamodel_builder/builder_extensions.rb, line 202
  def many_to_many(target_role, target_class, own_role, raw_props={}, &block)
    props1 = Intermediate::Reference.new(target_class, _setManyUpperBound(_ownProps(raw_props).merge({
      :name=>target_role, :containment=>false})))
    props2 = Intermediate::Reference.new(self, _setManyUpperBound(_oppositeProps(raw_props).merge({
      :name=>own_role, :containment=>false})))
    FeatureBlockEvaluator.eval(block, props1, props2)
    _build_internal(props1, props2)
  end