code: public @CheckForNull String checkSanity() {
          OUTER: for (int i = 0; i < 5; i++) {
              long bitMask = (i<4)?bits[i]:(long)dayOfWeek;
              for( int j=BaseParser.LOWER_BOUNDS[i]; j<=BaseParser.UPPER_BOUNDS[i]; j++ ) {
                  if(!checkBits(bitMask,j)) {
                      // this rank has a sparse entry.
                      // if we have a sparse rank, one of them better be the left-most.
                      if(i>0)
                          return Messages.CronTab_do_you_really_mean_every_minute_when_you(spec, "H " + spec.substring(spec.indexOf(' ') + 1));
                      // once we find a sparse rank, upper ranks don't matter
                      break OUTER;
                  }
              }
          }
  
          int daysOfMonth = 0;
          for (int i = 1; i < 31; i++) {
              if (checkBits(bits[2], i)) {
                  daysOfMonth++;
              }
          }
          if (daysOfMonth > 5 && daysOfMonth < 28) { // a bit arbitrary
              return Messages.CronTab_short_cycles_in_the_day_of_month_field_w();
          }
  
          String hashified = hashify(spec);
          if (hashified != null) {
              return Messages.CronTab_spread_load_evenly_by_using_rather_than_(hashified, spec);
          }
  
          return null;
      }
docs: Checks if this crontab entry looks reasonable,
  and if not, return an warning message.
  
  <p>
  The point of this method is to catch syntactically correct
  but semantically suspicious combinations, like
  "* 0 * * *"