public function configure(Object $object): ConfigurationInterface
    {
        foreach ($this as $key => $value) {
            $method = 'set' . ucfirst($key);
            $property = lcfirst($key);
            $reflection = new \ReflectionClass($object);

            if ($reflection->hasMethod($method)) {
                $reflectionMethod = $reflection->getMethod($method);
                $reflectionMethod->setAccessible(true);
                $reflectionMethod->invoke($object, $value);
                continue;
            }

            if ($reflection->hasProperty($property) || isset($object->$property)) {
                $reflectionProperty = $reflection->getProperty($property);
                $reflectionProperty->setAccessible(true);
                $reflectionProperty->setValue($object, $value);
            }
        }

        return $this;
    }
public function configure(Object $object): ConfigurationInterface
    {
        foreach ($this as $key => $value) {
            $method = 'set' . ucfirst($key);
            $property = lcfirst($key);
            $reflection = new \ReflectionClass($object);

            if ($reflection->hasMethod($method)) {
                $reflectionMethod = $reflection->getMethod($method);
                $reflectionMethod->setAccessible(true);
                $reflectionMethod->invoke($object, $value);
                continue;
            }

            if ($reflection->hasProperty($property) || isset($object->$property)) {
                $reflectionProperty = $reflection->getProperty($property);
                $reflectionProperty->setAccessible(true);
                $reflectionProperty->setValue($object, $value);
            }
        }

        return $this;
    }
{@inheritdoc}