As Julie said, quit offering choices or a second chance. If you WANT to offer a choice, you give him a couple of options..... if he says he wants chicken nuggets, and then when you give them to him and he decides he doesn't want them, tell him... "That's fine... you don't have to eat. However, I'm not giving you any other food until the next meal. Maybe you'll decide to eat then."
Stick with it... if he has to skip a few meals, he will learn.
He has found he is the puppetmaster... and you are the puppet... he knows which strings to pull!
My kids always ate what we ate....... I created the menu, and they ate what I fixed, or they waited until the next meal. No arguing, no cajoling, no bribing (if you eat dinner, you can have a cookie)...... I didn't give them the option of them fixing a sandwich or bowl of cereal as an alternative, also.
I rarely fixed things like chicken nuggets.... lunch was sandwiches or mac and cheese, usually... dinner was what I wanted to eat..... frequently casseroles, soups, roasts, chops, a big variety.
I have 4 very adventurous eaters... they will try just about anything, and that has continued into their adulthood.... and the youngest is going to Culinary School!