Deep function arguments type check