private function writeAtEndOfClass($class, $method, $prependNewLine = false)
{
$tokens = token_get_all($class);
$searching = false;
$inString = false;
$searchPattern = array();
for ($i = count($tokens) - 1; $i >= 0; $i--) {
$token = $tokens[$i];
if ($token === '}' && !$inString) {
$searching = true;
continue;
}
if (!$searching) {
continue;
}
if ($token === '"') {
$inString = !$inString;
continue;
}
if ($this->isWritePoint($token)) {
$line = $token[2];
return $this->insertStringAfterLine($class, $method, $line, $token[0] === T_COMMENT ?: $prependNewLine);
}
array_unshift($searchPattern, is_array($token) ? $token[1] : $token);
if ($token === '{') {
$search = implode('', $searchPattern);
$position = strpos($class, $search) + strlen($search) - 1;
return substr_replace($class, "\n" . $method . "\n", $position, 0);
}
}
}