struct Margins
    top::Integer
    bottom::Integer
    left::Integer
    right::Integer
    function Margins(; top, bottom, left, right)
        top = isnothing(top) ? 0 : top
        bottom = isnothing(bottom) ? 0 : bottom
        left = isnothing(left) ? 0 : left
        right = isnothing(right) ? 0 : right
        new(top, bottom, left, right)
    end
end