itFails("1gg..2g")
				itFails("1a..")
			})
		})
	})

	Context("memory_size constructors", func() {
		var (
			boundedWorks   func(lo, hi memory.MemSize) memory.Range
			unboundedWorks func(lo memory.MemSize) memory.Range
			boundedFails   func(lo, hi memory.MemSize)
		)

		BeforeEach(func() {
			boundedWorks = func(lo, hi memory.MemSize) memory.Range {
				rnge, err := memory.NewRange(lo, hi)
				Ω(err).ShouldNot(HaveOccurred())
				Ω(rnge).ShouldNot(BeNil())
				Ω(rnge.Floor()).Should(Equal(lo))
				Ω(rnge.Ceiling()).Should(Equal(hi))
				if lo.Equals(hi) {
					Ω(rnge.Degenerate()).Should(BeTrue())
				}
				return rnge
			}

			unboundedWorks = func(lo memory.MemSize) memory.Range {
				rnge, err := memory.NewUnboundedRange(lo)
				Ω(err).ShouldNot(HaveOccurred())
				Ω(rnge).ShouldNot(BeNil())
				Ω(rnge.Floor()).Should(Equal(lo))
func boundedMemoryRange(lo, hi int64) memory.Range {
	r, err := memory.NewRange(getMs(lo), getMs(hi))
	Ω(err).ShouldNot(HaveOccurred())
	return r
}