private function generatePropertyDocBlock(array $metadata)
    {
        $lines = [
            $this->spaces . '/**',
            $this->spaces . ' * @var string',
            $this->spaces . ' *',
        ];

        $column = [];
        if (isset($metadata['property_name']) && $metadata['property_name'] != $metadata['field_name']) {
            $column[] = 'name="' . $metadata['property_name'] . '"';
        }

        if (isset($metadata['property_class'])) {
            $column[] = 'class="' . $metadata['property_class'] . '"';
        }

        if (isset($metadata['property_multiple']) && $metadata['property_multiple']) {
            $column[] = 'multiple=true';
        }

        if (isset($metadata['property_type']) && $metadata['annotation'] == 'property') {
            $column[] = 'type="' . $metadata['property_type'] . '"';
        }

        if (isset($metadata['property_default'])) {
            $column[] = 'default="' . $metadata['property_default'] . '"';
        }

        if (isset($metadata['property_options'])  && $metadata['property_options']) {
            $column[] = 'options={' . $metadata['property_options'] . '}';
        }

        $lines[] = $this->spaces . ' * @ES\\' . ucfirst($metadata['annotation']) . '(' . implode(', ', $column) . ')';

        $lines[] = $this->spaces . ' */';

        return implode("\n", $lines);
    }