Melt the butter in a large pot over medium heat.
Add the chicken and cook for 5 to 6 minutes until lightly browned. Transfer to a plate.
Add the onion, carrots, and celery to the pot. Cook for 4 to 5 minutes until softened.
Stir in the garlic and cook for 30 seconds until fragrant.
Sprinkle the flour over the vegetables and cook for 1 minute, stirring constantly.
Gradually whisk in the chicken broth until smooth, then add the diced potatoes, thyme, parsley, salt, and black pepper.
Return the chicken to the pot and bring the soup to a gentle boil. Reduce the heat and simmer for 15 to 20 minutes, or until the potatoes are fork tender.
Stir in the milk and heavy cream. Simmer for 3 to 5 minutes without boiling.
Stir in the cheddar cheese, if using, until melted and smooth.
Garnish with fresh parsley and serve hot.