protected function addMethodVisitors(\ReflectionClass $originalClass, NodeTraverser $traverser)
    {
        $accessibleProperties = $this->getProperties(
            $originalClass,
            \ReflectionProperty::IS_PUBLIC | \ReflectionProperty::IS_PROTECTED
        );

        $propertyWriters = $this->getPropertyWriters($originalClass);

        $traverser->addVisitor(new Visitor\ConstructorMethod($accessibleProperties, $propertyWriters));
        $traverser->addVisitor(new Visitor\HydrateMethod($accessibleProperties, $propertyWriters));
        $traverser->addVisitor(new Visitor\ExtractMethod($accessibleProperties, $propertyWriters));
    }