fn generate(&self) -> impl Iterator<Item = Test> {
        let mut more = vec![];

        // Add bytes to the start of the corpus.
        for i in 0..Seed::EXPAND_LEN {
            let mut t = Test::new(self);
            let mut new: String = core::iter::repeat('%').take(i).collect();
            new.push_str(&t.haystack);
            t.haystack = new;
            t.expected = t.expected.into_iter().map(|p| p + i).collect();
            more.push(t);
        }
        // Add bytes to the end of the corpus.
        for i in 1..Seed::EXPAND_LEN {
            let mut t = Test::new(self);
            let padding: String = core::iter::repeat('%').take(i).collect();
            t.haystack.push_str(&padding);
            more.push(t);
        }

        more.into_iter()
    }
Expand this test into many variations of the same test.

In particular, this will generate more tests with larger corpus sizes.
The expected positions are updated to maintain the integrity of the
test.

This is important in testing a memchr implementation, because there are
often different cases depending on the length of the corpus.

Note that we extend the corpus by adding `%` bytes, which we
don't otherwise use as a needle.
src/tests/memchr/mod.rs