code: def parseGameTree(self):
  		
  		g = GameTree()
  		while self.index < self.datalen:
  			match = self.reGameTreeNext.match(self.data, self.index)
  			if match:
  				self.index = match.end()
  				if match.group(1) == ";":				# found start of node
  					if g.variations:
  						raise GameTreeParseError(
  									"A node was encountered after a variation.")
  					g.append(g.makeNode(self.parseNode()))
  				elif match.group(1) == "(":				# found start of variation
  					g.variations = self.parseVariations()
  				else:									# found end of GameTree ")"
  					return g
  			else:										# error
  				raise GameTreeParseError
  		return g
docs: Called when "(" encountered, ends when a matching ")" encountered.
  			Parses and returns one 'GameTree' from 'self.data'. Raises
  			'GameTreeParseError' if a problem is encountered.