"  at a time; faster to use FileWriter<int>, which is buffered.");
"  at a time; faster to use FileReader<int>, which is buffered.");
    private static void genFileReaderWorkBit(SIRFileReader filter,                                              int selfID,                                             CodegenPrintWriter p) {        // haven't bothered to do buffered file input on top of the        // bit input (it is possible but seems a little complicated)        System.err.println("PERFORMANCE WARNING:  FileReader<bit> reads only 1 byte" +                           "  at a time; faster to use FileWriter<int>, which is buffered.");        String theType = "" + filter.getOutputType();        // wrap in loop        p.println("for (; 0 < ____n; ____n--) {");        p.indent();                // the bit type is special since you can not just read or        // write a bit.  It requires bufferring in some larger        // integer type.        String bits_to_go = bitsToGoName(filter);        String the_bits = theBitsName(filter);                    p.println("static " + bits_type + " " + the_bits + " = 0;");        p.println("static int " + bits_to_go + " = 0;");        p.newline();        p.println("if (" + bits_to_go + " == 0) {");        p.indent();        p.println("if (fread(" + "&"+ the_bits + ", "                   + "sizeof(" + the_bits + "),"                  + " " + "1, "                   + fpName(filter) + ")) {");        p.indent();        p.println(bits_to_go + " = 8 * sizeof("+ the_bits + ");");        // identical to code fragment below ///////////////////////        p.println(ClusterUtils.pushName(selfID)                   + "((" + the_bits +" & (1 << (sizeof(" + the_bits + ") * 8 - 1))) ? 1 : 0);");        p.println(the_bits + " <<= 1;");        p.println(bits_to_go + "--;");        // end identical to code fragment below ////////////////////        p.outdent();        p.println("}");        p.outdent();        p.println("} else {");        p.indent();        // identical to code fragment above /////////////////////////        p.println(ClusterUtils.pushName(selfID)                   + "((" + the_bits +" & (1 << (sizeof(" + the_bits + ") * 8 - 1))) ? 1 : 0);");        p.println(the_bits + " <<= 1;");        p.println(bits_to_go + "--;");        // end identical to code fragment above /////////////////////        p.outdent();        p.println("}");        // close loop        p.outdent();        p.print("}"); // end of for loop.    }