public static function createSetterFromProperty(PropertyInterface $property)
    {
        $argument = Argument::createFromProperty($property);

        $code = "\$this->{$property->getName()} = {$argument->getNameFormatted()};"
            . PHP_EOL
            . 'return $this;';

        $method = new self;
        $method
            ->setName('set_' . $property->getName())
            ->setCode($code)
            ->getArgumentCollection()->add($argument);

        return $method;
    }