extension function

An extension function is a function that can be “added” to an existing type without needing to derive a class from it. It can be called as a member of the class even though it is defined outside of it. 
One of the motivations of extension functions is seamless integration with legacy code. If you can extend a class from your third-party library without actually inheriting it, and not breaking encapsulation at the same time, you can eliminate much of the boilerplate code and unnecessary derived classes.