func newR2Pos(idx Pos) Pos {
	if idx.ReadType() != R1 {
		panic(idx)
	}
	return idx + r2PosOffset
}
newR2Pos creates a Pos that refers to the idx'th base in R2.
package fusion
type Pos int64
type PosRange struct{ Start, End Pos }
func (r PosRange) Equal(other PosRange) bool {
	return r.Start == other.Start && r.End == other.End
}
func (r PosRange) span() int {
	return posSpan(r.End, r.Start)
}
type CrossReadPosRange struct{ Start, End Pos }
func newCrossReadPosRange(start, end Pos) CrossReadPosRange {
	if end < start {
		panic("inverted range")
	}
	return CrossReadPosRange{start, end}
}
func (r CrossReadPosRange) Equal(other CrossReadPosRange) bool {
	return r.Start == other.Start && r.End == other.End
}
type ReadType uint8
const (
	R1 ReadType = iota
	R2
)
const r2PosOffset = Pos(1000000000)