def long_out io , level
      io.write(head)
      indent = " " * (level + 1)
      @complex.each do |k,v|
        io.write "\n#{indent}"
        io.write ":#{k}"
        io.write " "
        v.out(io , level + 1)
      end
      if(@super)
        io.write " "
        @super.long_out(io,level)
      end
    end
def long_out io , level
      io.write(head)
      indent = " " * (level + 1)
      @complex.each do |k,v|
        io.write "\n#{indent}"
        io.write ":#{k}"
        io.write " "
        v.out(io , level + 1)
      end
      if(@super)
        io.write " "
        @super.long_out(io,level)
      end
    end
write out at the given level
 level determines the indentation (level * space)
 write out the data and then the children (always key value on one line)