public function supports(\stdClass $data, \ReflectionClass $reflection)
    {
        $constructor       = $reflection->getConstructor();
        $constructorParams = $constructor->getParameters();

        $invalidParams = array_filter(
            $constructorParams,
            function($param) use ($data) {
                $name = $param->getName();
                if ($param->isDefaultValueAvailable()|| property_exists($data, $name)) {
                    return false;
                } else {
                    return true;
                }
            }
        );

        return count($invalidParams) > 0 ? false : true;
    }