code: public void binmode() {
          Transcoder[] transcoders = new Transcoder[3];
          int n = 0;
          if ((flags & UNIVERSAL_NEWLINE_DECORATOR) != 0) {
              TranscoderDB.Entry entry = TranscoderDB.getEntry(NULL_STRING, "universal_newline".getBytes());
              if (entry.getTranscoder() != null) transcoders[n++] = entry.getTranscoder();
          }
  
          if ((flags & CRLF_NEWLINE_DECORATOR) != 0) {
              TranscoderDB.Entry entry = TranscoderDB.getEntry(NULL_STRING, "crlf_newline".getBytes());
              if (entry.getTranscoder() != null) transcoders[n++] = entry.getTranscoder();
          }
  
          if ((flags & CR_NEWLINE_DECORATOR) != 0) {
              TranscoderDB.Entry entry = TranscoderDB.getEntry(NULL_STRING, "cr_newline".getBytes());
              if (entry.getTranscoder() != null) transcoders[n++] = entry.getTranscoder();
          }
  
          int nTrans = numTranscoders;
          int j = 0;
          for (int i = 0; i < nTrans; i++) {
              int k;
              for (k = 0; k < n; k++) {
                  if (transcoders[k] == elements[i].transcoding.transcoder) break;
              }
  
              if (k == n) {
                  elements[j] = elements[i];
                  j++;
              } else {
                  elements[i].transcoding.close();
                  numTranscoders--;
              }
  
          }
          flags &= ~NEWLINE_DECORATOR_MASK;
      }
docs: /* rb_econv_binmode