+ bool ret = false;
+
+ if (mode == MODE_ENGLISH) {
+ buf1 = rerender(str, cdecl_parse_english, cdecl_declare);
+ if (!buf1)
+ goto out;
+ buf2 = rerender(buf1, cdecl_parse_decl, cdecl_explain);
+ if (!buf2)
+ goto out;
+ buf3 = rerender(buf2, cdecl_parse_english, cdecl_declare);
+ if (!buf3)
+ goto out;
+ } else {
+ buf1 = rerender(str, cdecl_parse_decl, cdecl_explain);
+ if (!buf1)
+ goto out;
+ buf2 = rerender(buf1, cdecl_parse_english, cdecl_declare);
+ if (!buf2)
+ goto out;
+ buf3 = rerender(buf2, cdecl_parse_decl, cdecl_explain);
+ if (!buf3)
+ goto out;
+ }
+
+ if (!strcmp(buf1, buf3))
+ ret = true;
+out:
+ free(buf1);
+ free(buf2);
+ free(buf3);
+ return ret;
+}
+
+int main(int argc, char **argv)
+{