protected function applyPadding($left = 0, $right = 0, $padStr = ' ')
    {
        $length = UTF8::strlen($padStr, $this->encoding);
        $strLength = $this->getLength();
        $paddedLength = $strLength + $left + $right;

        if (!$length || $paddedLength <= $strLength) return $this;

        $leftPadding = UTF8::substr
        (
            UTF8::str_repeat($padStr, ceil($left / $length)),
            0,
            $left,
            $this->encoding
        );

        $rightPadding = UTF8::substr
        (
            UTF8::str_repeat($padStr, ceil($right / $length)),
            0,
            $right,
            $this->encoding
        );

        return $this->newSelf($leftPadding.$this->scalarString.$rightPadding);
    }