The following snipped is from ags_audio.c namely in ags_audio_real_set_pads() and isn't fully populated. May be a macro will be used to do so.
if(alloc_recycling){
channel->first_recycling =
channel->last_recycling = ags_recycling_new(audio->devout);
if(link_recycling){
recycling->next = channel->first_recycling;
recycling->next->prev = recycling;
recycling = recycling->next;
}
channel->first_recycling->channel = (GObject *) channel;
// ags_garbage_collector_add(AGS_DEVOUT(audio->devout)->garbage_collector, channel->first_recycling);
}else if(set_sync_link){
channel->first_recycling = input->first_recycling;
channel->last_recycling = input->last_recycling;
input = input->next;
}else if(set_async_link){
channel->first_recycling = input->first_recycling;
channel->last_recycling = input_pad_last->last_recycling;
input = input->next;
input_pad_last = input_pad_last->next;
}