/* This is your typical header comment */
int foo(int bar)
{
    int idx;
    int res = 0;     /*
                      * trailing comment
                      * that spans two lines
                      */


    /* Comment with embedded / * C comment * / */
    for (idx = 1; idx < bar; idx++)
        /* comment in virtual braces */
        res += idx;

    /*
     * Multi-line comment with embedded / * C comment * / and junk
     * afterwards
     */
    res *= idx;       /* some comment */

    /* almost continued, but a NL in between */

/*
 * col1 comment in level 1
 * second comment
 */
    return(res);
}

/*
 * col1 comment in level 0
 * and another
 */

