by the way
��
nextOrNextAfterNext := stream next ifNil: [stream next].

I would argue that almost every person who would read this would think it's a bug and it should be ifNotNil:

Also there would be no point in saving it to a variable if you will just return.
^ stream next ifNil: [ stream next ]