func (r Range) ContainsOffset(offset int) bool {
	return offset >= r.Start.Byte && offset < r.End.Byte
}
ContainsOffset returns true if and only if the given byte offset is within
the receiving Range.
package hcl
import "fmt"
type Pos struct {
	Line int
	Column int
	Byte int
}
var InitialPos = Pos{Byte: 0, Line: 1, Column: 1}
type Range struct {
	Filename string
	Start, End Pos
}
func RangeBetween(start, end Range) Range {
	return Range{
		Filename: start.Filename,
		Start:    start.Start,
		End:      end.End,
	}
}
func RangeOver(a, b Range) Range {
	if a.Empty() {
		return b
	}
	if b.Empty() {
		return a
	}
	var start, end Pos
	if a.Start.Byte < b.Start.Byte {
		start = a.Start
	} else {
		start = b.Start
	}
	if a.End.Byte > b.End.Byte {
		end = a.End
	} else {
		end = b.End
	}
	return Range{
		Filename: a.Filename,
		Start:    start,
		End:      end,
	}
}
func (r Range) ContainsPos(pos Pos) bool {
	return r.ContainsOffset(pos.Byte)
}