docs: def dock(self, other):
  		'''
  			Subtract another conc from this one.
  			This is the opposite of concatenation. For example, if ABC + DEF = ABCDEF,
  			then logically ABCDEF - DEF = ABC.
  		'''
  
  		# e.g. self has mults at indices [0, 1, 2, 3, 4, 5, 6] len=7
  		# e.g. other has mults at indices [0, 1, 2] len=3
  		new = list(self.mults)
  		for i in reversed(range(len(other.mults))): # [2, 1, 0]
  			# e.g. i = 1, j = 7 - 3 + 1 = 5
  			j = len(self.mults) - len(other.mults) + i
  			new[j] = new[j].dock(other.mults[i])
  
  			if new[j].multiplier == zero:
  				# omit that mult entirely since it has been factored out
  				del new[j]
  
  			# If the subtraction is incomplete but there is more to
  			# other.mults, then we have a problem. For example, "ABC{2} - BC"
  			# subtracts the C successfully but leaves something behind,
  			# then tries to subtract the B too, which isn't possible
  			else:
  				if i != 0:
  					raise Exception("Can't subtract " + repr(other) + " from " + repr(self))
  
  		return conc(*new)