class AST::Node
def initialize(type, children=[], properties={})
your code does not expect the argument to be frozen, use `#dup`.
the most common case is to pass an array literal to the constructor. If
is frozen. While mutating the arguments is generally considered harmful,
`to_a` respectively. Additionally, the result of converting `children`
The arguments `type` and `children` are converted with `to_sym` and
Constructs a new instance of Node.
def initialize(type, children=[], properties={}) @type, @children = type.to_sym, children.to_a.freeze assign_properties(properties) @hash = [@type, @children, self.class].hash freeze end