code: def get_text_contents(self):
          
          ###TODO: something reasonable about universal newlines
          contents = str(self.value)
          for kid in self.children(None):
              contents = contents + kid.get_contents().decode()
          return contents
docs: By the assumption that the node.built_value is a
          deterministic product of the sources, the contents of a Value
          are the concatenation of all the contents of its sources.  As
          the value need not be built when get_contents() is called, we
          cannot use the actual node.built_value.