def [](key)
return super if has_key?(key)
case key
when :location
store(:location, location)
when :file_path, :line_number
file_path, line_number = file_and_line_number
store(:file_path, file_path)
store(:line_number, line_number)
super
when :execution_result
store(:execution_result, {})
when :describes
store(:describes, described_class_for(self))
when :full_description
store(:full_description, full_description_for(self))
when :description
store(:description, build_description_from(*self[:description_args]))
else
super
end
end