class Prism::Location

def join(other)

location or if they don't share the same source.
other location. Raises an error if this location is not before the other
Returns a new location that stretches from this location to the given
def join(other)
  raise "Incompatible sources" if source != other.source
  raise "Incompatible locations" if start_offset > other.start_offset
  Location.new(source, start_offset, other.end_offset - start_offset)
end