Write function "show" for own multi-level structure

I want to write a function Base.show for my structure Node:

mutable struct Node
    keys::Vector
    vals::Vector
    count::Int
end

and which will display:

nod = Node(
    ["a", "b", "c", "d"],
    [Node( 
        ["aA", "aB", "aC"], 
        [11, 12, 13], 
        3,
    ), 2, 3, 4],
    4
)

as well as display OrderedDict the following dict:

dict_ord = OrderedDict(
    "a" => OrderedDict(
        "aA" => 11,
        "aB" => 12,
        "aC" => 13,
    ),
    "b" => 2,
    "c" => 3,  
    "d" => 4,
)

Besides doing it yourself, you could also consider using existing packages for pretty-printing nested structures, see eg GitHub - MechanicalRabbit/PrettyPrinting.jl: Julia library for optimal formatting of composite data structures

I would like to write my own function so that Atom displays the result near the code, and not in the console, and so that there is a visual disclosure/hiding of nested structures (as in the photo in the description)