docs: def common(self, other, suffix=False):
  		'''
  			Return the common prefix of these two concs; that is, the largest conc
  			which can be safely beheaded() from the front of both.
  			The result could be emptystring.
  			"ZYAA, ZYBB" -> "ZY"
  			"CZ, CZ" -> "CZ"
  			"YC, ZC" -> ""
  
  			With the "suffix" flag set, works from the end. E.g.:
  			"AAZY, BBZY" -> "ZY"
  			"CZ, CZ" -> "CZ"
  			"CY, CZ" -> ""
  		'''
  		mults = []
  
  		indices = range(min(len(self.mults), len(other.mults))) # e.g. [0, 1, 2, 3]
  
  		# Work backwards from the end of both concs instead.
  		if suffix:
  			indices = [-i - 1 for i in indices] # e.g. [-1, -2, -3, -4]
  
  		for i in indices:
  
  			common = self.mults[i].common(other.mults[i])
  
  			# Happens when multiplicands disagree (e.g. "A.common(B)") or if
  			# the multiplicand is shared but the common multiplier is zero
  			# (e.g. "ABZ*.common(CZ)".)
  			if common.multiplier == zero:
  				break
  
  			mults.append(common)
  
  			# If we did not remove the entirety of both mults, we cannot continue.
  			if common != self.mults[i] or common != other.mults[i]:
  				break
  
  		if suffix:
  			mults = reversed(mults)
  
  		return conc(*mults)