Stanislav Iliev, yes, I am aware of advanced type systems, e.g., linear types and dependent types, and I think such type systems are not ready for general consumption by mainstream developers. Hence, my reserved position in the post — static typing as it is generally available today — and the closing remark in the post “Until the day we have static type systems that allow us to easily and succinctly specify both value and behavioral types and use them to check for type correctness”.