def tree(self,offset=0,prefix_inherited="",nofeatsplease=['Phoneme']):
		tree = ""
		numchild=0
		for child in self.children:
			if type(child)==type([]):
				child=child[0]
			numchild+=1
			classname=child.classname()
			if classname=="Word":
				tree+="\n\n"
			elif classname=="Line":
				tree+="\n\n\n"
			elif classname=="Stanza":
				tree+="\n\n\n\n"
			if offset!=0:
				tree+="\n"
				for i in range(0,offset):
					tree+="      "
				tree+="|"
			tree+="\n"
			newline=""
			for i in range(0,offset):
				newline+="      "
			newline+="|"
			cname=""
			for letter in classname:
				if letter==letter.upper():
					cname+=letter
			prefix=prefix_inherited+cname+str(numchild) + "."
			newline+="-----| ("+prefix[:-1]+") <"+classname+">"
			if child.isBroken():
				newline+="<<broken>>"
			else:
				string=self.u2s(child)
				if (not "<" in string):
					newline=makeminlength(newline,99)
					newline+="["+string+"]"
				elif string[0]!="<":
					newline+="\t"+string
				if len(child.feats):
					if (not child.classname() in nofeatsplease):
						for k,v in sorted(child.feats.items()):
							if v==None:
								continue
							newline+="\n"
							for i in range(0,offset+1):
								newline+="      "
							newline+="|     "
							newline+=self.showFeat(k,v)
			tree+=newline
			tree+=child.tree(offset+1,prefix)
		return tree