class Johnson::Visitors::Visitor

def accept(target)

def accept(target)
  target.accept(self)
end

def visit_For(o)

def visit_For(o)
  o.init && o.init.accept(self)
  o.cond && o.cond.accept(self)
  o.update && o.update.accept(self)
  o.body.accept(self)
end

def visit_ForIn(o)

def visit_ForIn(o)
  o.in_cond.accept(self)
  o.body.accept(self)
end

def visit_Function(o)

## FUNCTION NODES ###
def visit_Function(o)
  o.body.accept(self)
end

def visit_LexicalScope(o)

def visit_LexicalScope(o)
  o.right.accept(self)
end

def visit_SourceElements(o)

def visit_SourceElements(o)
  o.value.each { |x| x.accept(self) }
end

def visit_Try(o)

def visit_Try(o)
  o.cond.accept(self)
  o.b_then && o.b_then.map { |x| x.accept(self) }
  o.b_else && o.b_else.accept(self)
end