A class property processor is any class that implements the ClassPropertyProcessor interface:
// Transform the types of the property
Since any type can exist of arrays, compound types, nullable types, and more, you'll sometimes need to walk (or loop)
over these types to specify types case by case. This can be done by including the ProcessesTypes trait into your type
This trait will add a walk method that takes an initial type and closure.
Let's say you have a compound type like string|bool|int. The walk method will run a string, bool and int type
through the closure. You can then decide a type to be returned for each type given to the closure. Finally, the updated
compound type will also be passed to the closure.
You can remove a type by returning null.
Let's take a look at an example where we only keep string types and remove any others: