# File lib/rgen/model_builder/builder_context.rb, line 303
    def associateWithContextElement(element, contextElement, asRole)
      return unless contextElement
      contextClass = contextElement.class.ecore
      if asRole
        asRoleRef = eAllReferences(contextClass).find{|r| r.name == asRole.to_s}
        raise "Context class #{contextClass.name} has no reference named #{asRole}" unless asRoleRef
        ref = asRoleRef
      else
        possibleContainmentRefs = containmentRefs(contextClass, element.class.ecore)
        if possibleContainmentRefs.size == 1
          ref = possibleContainmentRefs.first
        elsif possibleContainmentRefs.size == 0
          raise "Context class #{contextClass.name} can not contain a #{element.class.ecore.name}"
        else
          raise "Context class #{contextClass.name} has several containment references to a #{element.class.ecore.name}." +
            " Clearify using \":as => <role>\""
        end
      end
      if ref.many
        contextElement.addGeneric(ref.name, element)
      else
        contextElement.setGeneric(ref.name, element)
      end
    end