process_directive
walk_directives
Invoke with walk { wanted => sub { $self->directives(@_) } }, $self->other_thing;
Acts funny with $self->some_other_thing is not a reference
update_directive
Take the values from walk_directive and update the directive