private function filterVariablesFromSelection($selectedVariables, DefinedVariables $selection, Closure $filter, $reducer) { $variablesUsed = array(); $compareLine = $reducer == 'max' ? $selection->endLine() : $selection->startLine(); $knownVariables = $this->all(); foreach ($selectedVariables as $variable) { if (!isset($knownVariables[$variable])) { continue; } $lastUsedLine = $reducer($knownVariables[$variable]); if ($filter($lastUsedLine, $compareLine)) { $variablesUsed[] = $variable; } } return $variablesUsed; }