def changes_between(from, to)
			from_number, to_number = versions.number_at(from), versions.number_at(to)
			return {} if from_number == to_number
			chain = versions.between(from_number, to_number).reject(&:initial?)
			return {} if chain.empty?

			backward = from_number > to_number
			backward ? chain.pop : chain.shift unless from_number == 1 || to_number == 1

			chain.inject({}) do |changes, version|
				changes.append_changes!(backward ? version.changes.reverse_changes : version.changes)
			end
		end
def changes_between(from, to)
			from_number, to_number = versions.number_at(from), versions.number_at(to)
			return {} if from_number == to_number
			chain = versions.between(from_number, to_number).reject(&:initial?)
			return {} if chain.empty?

			backward = from_number > to_number
			backward ? chain.pop : chain.shift unless from_number == 1 || to_number == 1

			chain.inject({}) do |changes, version|
				changes.append_changes!(backward ? version.changes.reverse_changes : version.changes)
			end
		end
Methods available to versioned ActiveRecord::Base instances in order to manage changes used
 for version creation.
 Collects an array of changes from a record's versions between the given range and compiles
 them into one summary hash of changes. The +from+ and +to+ arguments can each be either a
 version number, a symbol representing an association proxy method, a string representing a
 version tag or a version object itself.