The restriction on E is too strong, this should be:  `if (isBidirectionalRange!Range && is(typeof(E.init == (ElementType!Range).init)))`