{NodeType} *output = NULL;

  if (!list || list->node_count == 0) {{
    goto RETURN_{Tupper}_LIST_POP_BACK;
  }}

  output = list->last;

  if (list->node_count == 1) {{
    *list = ({ListType}){{0}};
    goto RETURN_{Tupper}_LIST_POP_BACK;
  }}

  --(list->node_count);
  list->last        = output->prev;

  output->prev = output->next = NULL;

RETURN_{Tupper}_LIST_POP_BACK:
  return output;