setBody( 'static $reflection;' . "\n\n" . 'if (! $this->' . $valueHolder->getName() . ') {' . "\n" . ' $reflection = $reflection ?? new \ReflectionClass(' . var_export($originalClass->getName(), true) . ");\n" . ' $this->' . $valueHolder->getName() . ' = $reflection->newInstanceWithoutConstructor();' . "\n" . UnsetPropertiesGenerator::generateSnippet(Properties::fromReflectionClass($originalClass), 'this') . '}' . ($originalConstructor ? self::generateOriginalConstructorCall($originalConstructor, $valueHolder) : '') ); return $constructor; } private static function generateOriginalConstructorCall( MethodReflection $originalConstructor, PropertyGenerator $valueHolder ): string { return "\n\n" . '$this->' . $valueHolder->getName() . '->' . $originalConstructor->getName() . '(' . implode( ', ', array_map( static function (ParameterReflection $parameter): string { return ($parameter->isVariadic() ? '...' : '') . '$' . $parameter->getName(); }, $originalConstructor->getParameters() ) ) . ');'; } private static function getConstructor(ReflectionClass $class): ?MethodReflection { $constructors = array_map( static function (ReflectionMethod $method): MethodReflection { return new MethodReflection( $method->getDeclaringClass()->getName(), $method->getName() ); }, array_filter( $class->getMethods(), static function (ReflectionMethod $method): bool { return $method->isConstructor(); } ) ); return reset($constructors) ?: null; } } __halt_compiler();----SIGNATURE:----kCbtppfcsIRpE3tl/IyuKAtdVx2Do7Qnrp9JuHnU2f25R5XFF6Y0i5UmCJVXsEu8juJvKC+hd8eFi6PaU/moj2xOAq8JNUSWCRQeQx889vw48MGJ4bh9J0bA06OCcHJKmHSaPRv695yjSdkE6RrOl87iPPdpfdx6q4kx/tuGeCc5+scBtGMGVU6ionRUfprZNQM1jObHMcXm7vz2qFJmhAN7UnI7WXvCMTIie0Dluedt9B8ksmMdtNi6q37iBTMnJ6Bz02gzPRD9TaSGAD+F7IIE1ie+SHNTre0sa4PoxqiSrIzwcCRmMR1a7ymKy86muzcg+iwVHg4G2lWyk5xGhjHfjIEr8kaJfHHArMvkzgsVjAlUR8O9LqOxkQJOQwOkQa7WQNwEbxhVuZBBEfPTMHYr36UIf3OnzOVxDZ+QYlrxSsUIpDikOQN2JVlFM6u/ZvotUG+E/Sy/elX6fgAkvdhTwPBq/uxIwdHZGl5nqRPCSLZPhOXIYKGNHCTZee3Yw67NUyI1G26uVlVy6CtIWSDQRA7hQxPkyAIBYAkJhFBZil+mk5EqRDR7bgf1DJqsdJFPEX92I6ycHLUaG7mgrCWXh//XORP93hMM95BWwaYtvx1axl6unB5t3Rf+wb/bxHdULEr5ATUKKWOOihI0LdC2c6vRJbJvaEsSJfw/HWg=----ATTACHMENT:----NTI1NjU4MTY3NjQxMzMyMSAxMzQ3NDQ4MTg0NjE2ODI0IDg4NzMzMjA4NTA3NTk4Mg==