def visit_environment(self, e, prev_e=None):
    self._dump('<table border="0">')

    def dump_location_context(lc, is_added=None):
        self._dump(('<tr><td>%s</td><td align="left"><b>%s</b></td><td align="left" colspan="2"><font color="gray60">%s </font>%s</td></tr>' % (self._diff_plus_minus(is_added), lc.caption, lc.decl, (('(%s)' % self._make_sloc(lc.loc)) if (lc.loc is not None) else ''))))

    def dump_binding(f, b, is_added=None):
        self._dump(('<tr><td>%s</td><td align="left"><i>S%s</i></td>%s<td align="left">%s</td><td align="left">%s</td></tr>' % (self._diff_plus_minus(is_added), b.stmt_id, ('<td align="left"><font color="%s"><i>%s</i></font></td>' % (('lavender' if self._dark_mode else 'darkgreen'), (('(%s)' % b.kind) if (b.kind is not None) else ' '))), self._short_pretty(b.pretty), f.bindings[b])))
    frames_updated = (e.diff_frames(prev_e) if (prev_e is not None) else None)
    if frames_updated:
        for i in frames_updated:
            f = e.frames[i]
            prev_f = prev_e.frames[i]
            dump_location_context(f.location_context)
            (bindings_removed, bindings_added) = f.diff_bindings(prev_f)
            for b in bindings_removed:
                dump_binding(prev_f, b, False)
            for b in bindings_added:
                dump_binding(f, b, True)
    else:
        for f in e.frames:
            dump_location_context(f.location_context)
            for b in f.bindings:
                dump_binding(f, b)
    self._dump('</table>')
def visit_environment(self, e, prev_e=None):
    self._dump('<table border="0">')

    def dump_location_context(lc, is_added=None):
        self._dump(('<tr><td>%s</td><td align="left"><b>%s</b></td><td align="left" colspan="2"><font color="gray60">%s </font>%s</td></tr>' % (self._diff_plus_minus(is_added), lc.caption, lc.decl, (('(%s)' % self._make_sloc(lc.loc)) if (lc.loc is not None) else ))))

    def dump_binding(f, b, is_added=None):
        self._dump(('<tr><td>%s</td><td align="left"><i>S%s</i></td>%s<td align="left">%s</td><td align="left">%s</td></tr>' % (self._diff_plus_minus(is_added), b.stmt_id, ('<td align="left"><font color="%s"><i>%s</i></font></td>' % (('lavender' if self._dark_mode else 'darkgreen'), (('(%s)' % b.kind) if (b.kind is not None) else ' '))), self._short_pretty(b.pretty), f.bindings[b])))
    frames_updated = (e.diff_frames(prev_e) if (prev_e is not None) else None)
    if frames_updated:
        for i in frames_updated:
            f = e.frames[i]
            prev_f = prev_e.frames[i]
            dump_location_context(f.location_context)
            (bindings_removed, bindings_added) = f.diff_bindings(prev_f)
            for b in bindings_removed:
                dump_binding(prev_f, b, False)
            for b in bindings_added:
                dump_binding(f, b, True)
    else:
        for f in e.frames:
            dump_location_context(f.location_context)
            for b in f.bindings:
                dump_binding(f, b)
    self._dump('</table>')