Embedding is not inheritance
Code reuse is not provided by type hierarchy but via composition.
Language ecosystems with classical inheritance is often suffering from excessive level of indirection and premature abstraction based on inheritance which later make code complicated and unmaintainable.