На сегодня есть проблема разработки подобного скрипта , т.к. очень много нюансов и частных случаев и в сообществах решений этого вопроса нет....
который вообще не является типизированным
Поэтому чтобы сделать такую функцию, пришлось бы писать ее реализацию для всех возможных типов, а это невозможно.