/// @returns TypePointer of a new FunctionType object. All input/return parameters are an appropriate external types of input/return parameters of current function.
/// Returns an empty shared pointer if one of input/return parameters does not have an externaltype.
/// Returns an empty shared pointer if one of the input/return parameters does not have an externaltype.