private function buildLinesFromSource($source)
{
$eols = ["\r", "\n", "\r\n"];
$lines = [];
$index = 1;
while ($source !== '') {
$line = $this->extractNextLine($source, $eols, $eolUsed);
$lines[$index++] = $line;
$source = strval(substr($source, strlen($line)));
if ($eolUsed !== null && $source === '') {
$lines[$index++] = '';
break;
}
}
return $lines;
}