protected function writePropertyElements($properties, $format = '%s %s\l', $indent = -1)
    {
        $propertyString = '';

        foreach ($properties as $property) {
            if ($property->isPrivate()) {
                $visibility = '-';
            } elseif ($property->isProtected()) {
                $visibility = '#';
            } else {
                $visibility = '+';
            }

            $line = sprintf(
                $format,
                $visibility,
                $property->getName()
            );
            if ($indent >= 0) {
                $propertyString .= $this->formatLine($line, $indent);
            } else {
                $propertyString .= $line;
            }
        }
        return $propertyString;
    }