private function LoadSourceLines(\ReflectionFunctionAbstract $Reflection)
{
if (!$Reflection->isUserDefined()) {
throw new Functional\FunctionException('Cannot parse function: Function must be user defined');
}
$FileName = $Reflection->getFileName();
if (!file_exists($FileName)) {
throw new Functional\FunctionException('Cannot parse function: Function does not belong to a valid file (cannot be eval\'d code)');
}
$SourceLines = [];
$File = new \SplFileObject($Reflection->getFileName());
$StartLine = $Reflection->getStartLine() - 2;
$File->seek($StartLine);
$EndLine = $Reflection->getEndLine() - 2;
while ($File->key() <= $EndLine) {
$SourceLines[] = trim($File->fgets());
}
unset($File);
$FirstLine =& $SourceLines[0];
$FirstLine = substr($FirstLine, stripos($FirstLine, 'function'));
$LastLine =& $SourceLines[count($SourceLines) - 1];
$LastLine = substr($LastLine, 0, strrpos($LastLine, '}') + 1);
return array_filter($SourceLines);
}