def at(point)
      ipoint = point.to_i
      target = (ipoint < 0) ? (version + ipoint) : ipoint
      return unless (0..version).include? target

      detect { |state| target.equal? state.version }
    end
def at(point)
      ipoint = point.to_i
      target = (ipoint < 0) ? (version + ipoint) : ipoint
      return unless (0..version).include? target

      detect { |state| target.equal? state.version }
    end
Returns the state of the object at some point in the past

 @param [#to_i] point
   Either a positive number of target version,
   or a negative number of version (snapshots) before the current one
   +0+ stands for the first version.

 @return [Object, nil]