added support for recursive pointer types