diff --git a/alib2data/src/common/visitor.hpp b/alib2data/src/common/visitor.hpp
index 45672c001ce99c3ce375dc6c1d46dc6db82ad357..e7c58f931093112122f85e50717fbeb92e90c9ba 100644
--- a/alib2data/src/common/visitor.hpp
+++ b/alib2data/src/common/visitor.hpp
@@ -11,6 +11,7 @@
 
 #include <stdexcept>
 #include <typeindex>
+#include <iostream>
 
 namespace std {
 
@@ -192,7 +193,7 @@ public:
 	template < typename R >
 	void Visit1 ( void * userData, const T & first, const R & second ) const {
 		if ( std::type_index ( typeid ( T ) ) == std::type_index ( typeid ( second ) ) )
-			this->Visit ( userData, first, static_cast < const T & > ( second ) );
+			this->Visit ( userData, first, dynamic_cast < const T & > ( second ) );
 		else
 			throw std::logic_error ( "Same visitor: Visited types are different." );
 	}
@@ -212,7 +213,7 @@ public:
 	template < typename R >
 	void Visit1 ( void * userData, const T & first, const R & second ) const {
 		if ( std::type_index ( typeid ( T ) ) == std::type_index ( typeid ( second ) ) )
-			this->Visit ( userData, first, static_cast < const T & > ( second ) );
+			this->Visit ( userData, first, dynamic_cast < const T & > ( second ) ); // tady ten dynamic cast muze byt i static cast ale to by to muselo na g++ 5.2 fungovat
 		else
 			throw std::logic_error ( "Same visitor: Visited types are different." );
 	}