| line | true | false | branch | 
 
| 134 | 0 | 26 | unless shift() | 
 
| 138 | 26 | 0 | $self->keep ? : | 
 
| 145 | 0 | 2082 | unless &blessed($model) and $model->does("Attean::API::Model") | 
 
| 147 | 1283 | 799 | if ($plan->has_cost) { } | 
 
| 150 | 799 | 0 | if ($model->does("Attean::API::CostPlanner")) | 
 
| 151 | 27 | 772 | if (defined(my $cost = $model->cost_for_plan($plan, $self))) | 
 
| 160 | 0 | 772 | if ($plan->isa('Attean::Plan::Quad')) { } | 
 
|  | 0 | 772 | elsif ($plan->isa('Attean::Plan::Table')) { } | 
 
|  | 408 | 364 | elsif ($plan->isa('Attean::Plan::NestedLoopJoin')) { } | 
 
|  | 356 | 8 | elsif ($plan->isa('Attean::Plan::HashJoin')) { } | 
 
|  | 3 | 5 | elsif ($plan->isa('Attean::Plan::Service')) { } | 
 
|  | 0 | 5 | elsif ($plan->isa('Attean::Plan::Unique')) { } | 
 
| 161 | 0 | 0 | if &blessed($_) | 
 
| 169 | 26 | 382 | if ($lcost == 0) { } | 
 
|  | 0 | 382 | elsif ($rcost == 0) { } | 
 
| 180 | 52 | 356 | unless $plan->children_are_variable_connected | 
 
| 187 | 0 | 356 | unless $plan->children_are_variable_connected | 
 
| 206 | 0 | 772 | if ($self->log->is_trace) { } | 
 
| 255 | 0 | 13 | $k < scalar @todo ? : | 
 
| 261 | 16 | 52 | if scalar @$o == 0 | 
 
| 262 | 16 | 36 | if scalar @$o == scalar @$s | 
 
| 287 | 51 | 9 | if ($cost == $min) | 
 
| 300 | 51 | 0 | if (not defined $min_key or $min_key eq $v_key) | 
 
| 336 | 0 | 125 | unless shift() | 
 
| 339 | 0 | 125 | if ($self->log->is_trace) | 
 
| 355 | 0 | 1075 | unless &blessed($model) and $model->does("Attean::API::Model") | 
 
| 357 | 796 | 279 | if ($plan->has_cost) { } | 
 
| 360 | 279 | 0 | if ($model->does("Attean::API::CostPlanner")) | 
 
| 361 | 29 | 250 | if (defined(my $cost = $model->cost_for_plan($plan, $self))) | 
 
| 370 | 4 | 246 | if ($plan->isa('Attean::Plan::Quad')) { } | 
 
|  | 0 | 246 | elsif ($plan->isa('Attean::Plan::Table')) { } | 
 
|  | 124 | 122 | elsif ($plan->isa('Attean::Plan::NestedLoopJoin')) { } | 
 
|  | 104 | 18 | elsif ($plan->isa('Attean::Plan::HashJoin')) { } | 
 
|  | 1 | 17 | elsif ($plan->isa('Attean::Plan::Service')) { } | 
 
|  | 0 | 17 | elsif ($plan->isa('Attean::Plan::Unique')) { } | 
 
| 371 | 12 | 4 | if &blessed($_) | 
 
| 380 | 2 | 122 | if ($lcost == 0) { } | 
 
|  | 2 | 120 | elsif ($rcost == 0) { } | 
 
| 392 | 0 | 104 | if ($lcost == 0) { } | 
 
|  | 0 | 104 | elsif ($rcost == 0) { } | 
 
| 465 | 0 | 4 | if ($t->subject->does('Attean::API::Variable')) { } | 
 
| 470 | 0 | 4 | if ($t->predicate->does('Attean::API::Variable')) { } | 
 
| 473 | 0 | 4 | if ($t->predicate->equals(iri('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'))) { } | 
 
| 479 | 4 | 0 | if ($t->object->does('Attean::API::Variable')) { } | 
 
|  | 0 | 0 | elsif ($t->object->does('Attean::API::Literal')) { } | 
 
| 496 | 208 | 16 | if (scalar @$jv) { } | 
 
| 497 | 64 | 144 | if (&all(sub { | 
 
| 504 | 64 | 0 | if ($lnodes[$i]->does("Attean::API::Variable") and $lnodes[$i]->value eq $var) | 
 
| 507 | 64 | 0 | if ($rnodes[$i]->does("Attean::API::Variable") and $rnodes[$i]->value eq $var) | 
 
| 510 | 64 | 0 | if scalar keys %joinpos >= 2 | 
 
| 519 | 64 | 0 | if (exists $costs{$joinpos}) |