# File lib/ruote/part/participant_list.rb, line 198
    def instantiate (pinfo, opts={})

      irt = opts[:if_respond_to?]

      pinfo = @instantiated_participants[pinfo] if pinfo.is_a?(String)

      if pinfo.respond_to?(:consume)
        return (pinfo.respond_to?(irt) ? pinfo : nil) if irt
        return pinfo
      end

      return nil unless pinfo

      pa_class_name, options = pinfo

      if rp = options['require_path']
        require(rp)
      end
      if lp = options['load_path']
        load(lp)
      end

      pa_class = Ruote.constantize(pa_class_name)
      pa_m = pa_class.instance_methods

      if irt && ! (pa_m.include?(irt.to_s) || pa_m.include?(irt.to_sym))
        return nil
      end

      pa = if pa_class.instance_method(:initialize).arity > 0
        pa_class.new(options)
      else
        pa_class.new
      end
      pa.context = @context if pa.respond_to?(:context=)

      pa
    end