| line | true | false | branch | 
 
| 74 | 0 | 461 | if $time_buffer | 
 
| 166 | 41 | 42 | if $b1 | 
 
| 175 | 2 | 30 | if $b1 | 
 
| 185 | 6 | 5 | if $b1 | 
 
| 312 | 0 | 416 | if $suffix eq 'p' and $hour < 12 | 
 
| 313 | 0 | 416 | if $hour > 11 | 
 
| 314 | 0 | 416 | if $hour == 12 and $suffix eq 'a' | 
 
| 315 | 0 | 416 | if $hour > 23 or $minute > 59 or $second > 59 or $suffix eq 'a' and $hour > 12 | 
 
| 322 | 0 | 416 | if $suffix eq 'a' and $hour == 12 | 
 
| 335 | 445 | 0 | if ($phrase =~ m[
    \A \s*+ (?: (?&ever) | (?&span) ) \s*+ \Z
    (?(DEFINE)
     (? (?: all | always | ever | (?:(?:the \s++)? (?: entire | whole ) \s++ )? log ) (?{ $matches{'ever'} = 1; }) )
     
     (?
      ((?&date)) (?{
	$d1 = $^N;
stow($d1);
})
      (?: (?&span_divider) ((?&date)) (?{
	$d2 = $^N;
stow($d2);
}) )?
     )
     (? \s*+ (?: -++ | \b(?: through | thru | to | till?+ | until )\b ) \s*+)
     (? at | @ )
     (? 
       (?{ $time_buffer = undef; })
       (?: (?: \s++ | \s*+ (?&at) \s*+ ) (?&time))? 
     )
     (? (?:(?&at) \s++)? (?&time) \s++ on \s++ )
     (?
      (?{ (%buffer, $b1, $b2, $time_buffer) = (); })
      (?: (?&numeric) | (?&verbal) )
      (?{ $buffer{'time'} = $time_buffer if $time_buffer; })
     )
     
     (? | 
 
| 336 | 0 | 445 | if ($matches{'ever'}) | 
 
| 340 | 0 | 0 | if ($se) { } | 
 
| 351 | 4 | 441 | if ($unit) { } | 
 
| 361 | 20 | 421 | if ($d2 and $matches{$d2}) { } | 
 
| 375 | 356 | 85 | if (is_fixed($h1)) { } | 
 
|  | 1 | 84 | elsif (is_fixed($h2)) { } | 
 
| 384 | 0 | 441 | unless 'DateTime'->compare($h1, $h2) <= 0 | 
 
| 388 | 0 | 441 | if ($h1 > $h2) | 
 
| 389 | 0 | 0 | if ($h1->year == $h2->year and $h1->month == $h2->month and $h1->day == $h2->day and $h2->hour < 12 and $s2 eq 'x') { } | 
 
| 413 | 3 | 0 | if (keys %$h1 == 2 and keys %$h2 == 2 and $h1->{'period'} and $h2->{'period'}) | 
 
| 423 | 416 | 45 | if (defined $time) { } | 
 
| 431 | 30 | 15 | $is_start ? : | 
 
| 441 | 0 | 1 | if (is_fixed($h1)) { } | 
 
| 447 | 1 | 0 | if (ref $h1 eq 'DateTime') { } | 
 
| 468 | 0 | 81 | if $delta <= 0 | 
 
| 476 | 82 | 90 | if ($h->{'type'} eq 'numeric') { } | 
 
| 477 | 82 | 0 | if exists $h->{'month'} | 
 
| 481 | 2 | 88 | if (my $period = $h->{'period'}) { } | 
 
| 489 | 7 | 81 | if exists $h->{'month'} | 
 
| 490 | 81 | 0 | if exists $h->{'day'} | 
 
| 500 | 164 | 192 | unless ($two_endpoints or $h2->{'type'} ne 'numeric') | 
 
| 501 | 163 | 1 | if defined $h2->{'day'} | 
 
| 504 | 189 | 3 | if (is_fixed($h2)) { } | 
 
| 510 | 1 | 2 | unless ref $h2 eq 'DateTime' | 
 
| 522 | 82 | 90 | if $h->{'type'} eq 'numeric' | 
 
| 527 | 2 | 88 | if (my $period = $h->{'period'}) { } | 
 
| 532 | 0 | 0 | unless $is_start | 
 
| 536 | 0 | 0 | if sunday_begins_week() | 
 
| 537 | 0 | 0 | unless $is_start | 
 
| 544 | 1 | 1 | unless $is_start | 
 
| 550 | 1 | 1 | unless $is_start | 
 
| 554 | 81 | 7 | if (exists $h->{'day'} and not $h->{'day'} =~ /^\d++$/u) | 
 
| 560 | 7 | 0 | if (exists $h->{'month'}) | 
 
| 578 | 2 | 87 | unless (exists $h->{'day'} or $is_start) | 
 
| 587 | 363 | 187 | if ($d->{'type'} eq 'verbal') | 
 
| 588 | 247 | 116 | if ($d->{'year'}) { } | 
 
|  | 95 | 21 | elsif (my $day = $d->{'day'}) { } | 
 
| 596 | 10 | 85 | if $day eq 'tod' | 
 
| 597 | 2 | 83 | if ($day eq 'yes') { } | 
 
|  | 3 | 80 | elsif ($day eq 'tom') { } | 
 
| 608 | 0 | 80 | if ($d->{'modifier'} eq 'this') { } | 
 
| 609 | 0 | 0 | if $day_num == $todays_num | 
 
| 610 | 0 | 0 | $day_num > $todays_num ? : | 
 
| 619 | 0 | 80 | if ($day_num < $todays_num) { } | 
 
|  | 0 | 80 | elsif ($day_num > $todays_num) { } | 
 
| 626 | 0 | 80 | if $d->{'modifier'} eq 'next' | 
 
| 631 | 17 | 4 | if (my $period = $d->{'period'}) | 
 
| 633 | 10 | 7 | if ($d->{'modifier'} eq 'this') { } | 
 
| 637 | 2 | 2 | unless $is_start | 
 
| 642 | 2 | 0 | if (sunday_begins_week()) | 
 
| 643 | 0 | 2 | $is_sunday ? : | 
 
| 645 | 1 | 1 | unless $is_start | 
 
| 649 | 1 | 1 | unless $is_start | 
 
| 656 | 1 | 1 | unless $is_start | 
 
| 660 | 5 | 5 | unless $is_start | 
 
| 666 | 0 | 0 | if ($is_start) { } | 
 
| 672 | 0 | 0 | if $d->{'modifier'} eq 'next' | 
 
| 677 | 5 | 0 | if (sunday_begins_week()) | 
 
| 678 | 0 | 5 | $is_sunday ? : | 
 
| 680 | 3 | 2 | if ($is_start) { } | 
 
| 686 | 0 | 5 | if $d->{'modifier'} eq 'next' | 
 
| 690 | 1 | 1 | if ($is_start) { } | 
 
| 696 | 0 | 2 | if $d->{'modifier'} eq 'next' | 
 
| 703 | 0 | 0 | if ($is_start) { } | 
 
| 710 | 0 | 0 | if $d->{'modifier'} eq 'next' | 
 
| 722 | 2 | 2 | if ($d->{'modifier'} eq 'this') { } | 
 
| 724 | 0 | 2 | if ($todays_num > $month_num) { } | 
 
|  | 2 | 0 | elsif ($todays_num < $month_num) { } | 
 
| 730 | 1 | 1 | unless $is_start | 
 
| 735 | 0 | 2 | if ($todays_num > $month_num) { } | 
 
|  | 2 | 0 | elsif ($todays_num < $month_num) { } | 
 
| 741 | 1 | 1 | unless $is_start | 
 
| 744 | 2 | 2 | unless $is_start | 
 
| 755 | 2 | 258 | unless (%month_abbr) | 
 
| 763 | 1 | 160 | unless (%day_abbr) | 
 
| 783 | 2 | 82 | if $two_endpoints | 
 
| 788 | 40 | 44 | unless ref $h2 eq 'DateTime' | 
 
| 789 | 40 | 44 | unless ref $h1 eq 'DateTime' | 
 
| 797 | 2 | 82 | if ($two_endpoints) | 
 
| 812 | 0 | 2 | if ($h1->{'type'} eq $h2->{'type'}) { } | 
 
|  | 2 | 0 | elsif ($h2->{'type'} eq 'numeric') { } | 
 
| 821 | 2 | 0 | if ($h1->{'month'} and not $h2->{'month'}) | 
 
| 836 | 236 | 229 | if ($h->{'type'} eq 'verbal') | 
 
| 838 | 362 | 346 | if (my $value = $h->{$key}) | 
 
| 839 | 126 | 236 | if $value =~ /\d/u | 
 
| 841 | 3 | 233 | if ($value =~ /^p/u) { } | 
 
| 842 | 0 | 3 | unless defined start_pay_period() | 
 
| 866 | 430 | 289 | if exists $h->{'year'} | 
 
| 867 | 207 | 82 | if ($h->{'type'} eq 'verbal') | 
 
| 868 | 101 | 106 | if (exists $h->{'modifier'}) | 
 
| 869 | 101 | 0 | if $h->{'modifier'} =~ /this|last|next/u | 
 
| 871 | 100 | 6 | if (exists $h->{'day'}) | 
 
| 872 | 15 | 85 | if $h->{'day'} =~ /yes|tod|tom/u |