%WITH-ARRAY-DATA in the hairy cases. Now this macro checks that (<= start end length), to prevent bounds errors in unsafe code.