class_docstr: Base class for all objects that may be included in a GLSL program
  (Functions, Variables, Expressions).
  
  Shader objects have a *definition* that defines the object in GLSL, an
  *expression* that is used to reference the object, and a set of
  *dependencies* that must be declared before the object is used.
  
  Dependencies are tracked hierarchically such that changes to any object
  will be propagated up the dependency hierarchy to trigger a recompile.
class_docstr_tok: ["Base","class","for","all","objects","that","may","be","included","in","a","GLSL","program","(","Functions",",","Variables",",","Expressions",")",".","Shader","objects","have","a","*","definition","*","that","defines","the","object","in","GLSL",",","an","*","expression","*","that","is","used","to","reference","the","object",",","and","a","set","of","*","dependencies","*","that","must","be","declared","before","the","object","is","used",".","Dependencies","are","tracked","hierarchically","such","that","changes","to","any","object","will","be","propagated","up","the","dependency","hierarchy","to","trigger","a","recompile","."]
docstr: Called when a dependency's expression has changed.
docstr_tok: ["Called","when","a","dependency","'s","expression","has","changed","."]
code: def _dep_changed(self, dep, code_changed=False, value_changed=False):
      """Called when a dependency's expression has changed."""
      self.changed(code_changed, value_changed)
  
imports: from collections import OrderedDict
  from weakref import WeakKeyDictionary
  from .compiler import Compiler
  from .variable import Variable
  from .expression import TextExpression
label_desc: Use image node_id 11 for calling the ShaderObject obj's underlying member method code with example usage: obj._dep_changed(dep, code_changed, value_changed) without return types