private function generatePublicOptionsStruct(Options $options) : Options
{
$code = "return new class extends \\Aerys\\Options {\n";
foreach ((new \ReflectionClass($options))->getProperties() as $property) {
$name = $property->getName();
if ($name[0] !== "_") {
$code .= "\tpublic \${$name};\n";
}
}
$code .= "};\n";
$publicOptions = eval($code);
foreach ($publicOptions as $option => $value) {
$publicOptions->{$option} = $options->{$option};
}
return $publicOptions;
}