I feel like I'm annoying you or doing something stupid.
The sentence after the while loop would be: Console.Out.WriteLine(requirements[req]);
since the body is in brackets.
Since req is 1+ the element number in the array its asking it to state whats in an "imaginary" element.
I changed it to: Console.Out.WriteLine(requirements);
to test it out but it doesn't seems to change the problem.
This means it's in the blocked statements but i don't see whats wrong with them.