If you call invalidate() and it sets skip to true, you cannot call reset() inside validate() afterwards or it would not work. You need to reset the validation after it has been done.
The only other option would be to have a second resetSkip(). But that doesn't make much sense to me.