Meta technique, that allows to pospone the setting of the dependable type to the runtime.
It is computer programming technique that allows a method/function/class to be defined, depending not only on concrete data types, but on some undefined types also. These types will be chosen concretely upon instantiation