@Override
 protected void setInfoBit(final int bit) {
   int infoBits = mProgram.getIntField(ProgramFieldType.INFO_TYPE);
   if (infoBits == -1) {
     infoBits = 0;
   }
   infoBits |= bit;
   mProgram.setIntField(ProgramFieldType.INFO_TYPE, infoBits);
 }
 @Override
 protected void addField(final ProgramFieldType fieldType, final int value) {
   if (fieldType.getFormat() == ProgramFieldType.TIME_FORMAT) {
     mProgram.setTimeField(fieldType, value);
   } else {
     mProgram.setIntField(fieldType, value);
   }
   if (fieldType.equals(ProgramFieldType.END_TIME_TYPE)) {
     int endTime = value;
     int startTime = mProgram.getTimeField(ProgramFieldType.START_TIME_TYPE);
     int progLength = endTime - startTime;
     // Assumption: If the program length is less than 0, the program spans
     // midnight
     if (progLength < 0) {
       progLength += 24 * 60; // adding 24 hours to the length
     }
     // Only allow program length for 12 hours.... This will take care of
     // possible DST problems
     if ((progLength > 0) && (progLength < 12 * 60)) {
       mProgram.setLength(progLength);
     }
   }
 }