def description
values = []
value_str_prefix = "with"
if @expected_params_count
values << "exactly #{@expected_params_count} parameters"
end
if @expected_params.any?
values.concat(generate_param_list(@expected_params, :should))
end
if @expected_undef_params.any?
values.concat(generate_param_list(@expected_undef_params, :not))
end
if @notifies.any?
value_str_prefix = "that notifies"
values = @notifies
end
if @subscribes.any?
value_str_prefix = "that subscribes to"
values = @subscribes
end
if @requires.any?
value_str_prefix = "that requires"
values = @requires
end
if @befores.any?
value_str_prefix = "that comes before"
values = @befores
end
unless values.empty?
if values.length == 1
value_str = " #{value_str_prefix} #{values.first}"
else
value_str = " #{value_str_prefix} #{values[0..-2].join(", ")} and #{values[-1]}"
end
end
"contain #{@referenced_type}[#{@title}]#{value_str}"
end