def camel_case_split(str, lower=False):
	"""Split a camel-case string to its constituents, and return their list.
	
	Example: HasA --> ['Has', 'A']
	"""
	words = [[str[0]]]
  
	for c in str[1:]:
		if words[-1][-1].islower() and c.isupper():
			words.append(list(c))
		else:
			words[-1].append(c)
	if lower:
		return [''.join(word).lower() for word in words]
	else:
		return [''.join(word) for word in words]