This is done by implementing the required functions for your custom type.
Sadly I could not solve this by using the regular traits like `Add`,
since I can't easily check if a different trait is implemented.
You just need to implement `CustomValue`, `Debug` and `Clone`
for your own types, and the type can be used in your code.
Next on the list: method calls (e.g. x.y(), instead of y(x))