Abstractions for recursive pointer data structures | Synapse