public function pad(int $length, string $piece = ' ', int $side = STR_PAD_RIGHT)
    {
        if ($side === STR_PAD_BOTH) {
            $length -= $this->count();

            if ($length <= 0) {
                return $this;
            }

            $left = (int) ($length / 2);
            $right = $length - $left;

            $this->_string = Strings::padRight(
                Strings::padLeft($this->_string, $left, $piece),
                $right, $piece
            );
        } elseif (STR_PAD_LEFT === $side) {
            $this->_string = Strings::padLeft($this->_string, $length, $piece);
        } else {
            $this->_string = Strings::padRight($this->_string, $length, $piece);
        }

        return $this;
    }