Library users cannot change the `kind` discriminant of an object variant without forking the library.
For example in Arraymancer, if you have some neural network layers predefined from super simple (addition, matrix multiplication, mean, sum) to more complex (convolutions, softmax, ...). I can't hardcode the `kind` of layers as that would prevent users to define their own without forking the "LayerKind" enum.
