Use a macro to interface the GC