public function margin($left = 5, $right = 0, $alinea = 0)
    {
        self::mustBeInteger($left, 'Left margin');
        self::mustBeInteger($right, 'Right margin');
        self::mustBeInteger($alinea, 'Alinea');

        $int_left = $left;
        $int_right = $right;
        $int_alinea = $alinea;

        if($left instanceof N) $int_left = $left->int;
        if($right instanceof N) $int_right = $right->int;
        if($alinea instanceof N) $int_alinea = $alinea->int;

        if ($int_left < 0 || $int_right < 0) {
            throw new \InvalidArgumentException(
                'Margins must be null or positive numbers!'
            );
        }

        if (abs($int_alinea) > $int_left) {
            throw new \InvalidArgumentException(
                'Alinea must be equal or less than margin left'
            );
        }

        $arr = explode("\n", $this->value);

        $cnt = count($arr);

        for ($i = 0; $i < $cnt; $i++) {
            $v = $arr[$i];

            $int_margin_left = $int_left;
            $int_margin_right = $int_right;

            if ($i == 0) {
                $int_margin_left = $int_left + $int_alinea;

                if ($int_margin_left < 0) {
                    $int_margin_left = 0;
                }
            }

            $arr[$i] = str_repeat(' ', $int_margin_left);
            $arr[$i] .= $v . str_repeat(' ', $int_margin_right);
        }

        return new self(implode("\n", $arr));
    }