http://en.wikipedia.org/wiki/Run-time_type_information