class_docstr: Listener for FunctionGraph events which makes sure that no
  operation overwrites the contents of protected Variables. The
  outputs of the FunctionGraph are protected by default.
class_docstr_tok: ["Listener","for","FunctionGraph","events","which","makes","sure","that","no","operation","overwrites","the","contents","of","protected","Variables",".","The","outputs","of","the","FunctionGraph","are","protected","by","default","."]
code: def __init__(self, protected):
      self.protected = list(protected)
  
imports: from __future__ import absolute_import, print_function, division
  import copy
  from six import string_types, iteritems, iterkeys
  from six.moves import xrange
  import six.moves.copyreg
  import six.moves.cPickle
  from itertools import chain
  import time
  import warnings
  import numpy
  import theano
  from theano import config, gof
  from theano.compat import izip
  from theano.gof import graph
  import theano.compile.profiling
  from theano.compile.io import In, SymbolicInput, SymbolicOutput
  from theano.compile.ops import deep_copy_op, view_op
  from theano.gof.graph import is_same_graph
  from theano.gof.op import ops_with_inner_function
  import logging
label_desc: Use image node_id 1 to create a new Supervisor object  with example: obj = Supervisor(protected)