make IntervalEdge package-private