protected function addAccumulator($group, $definition) {
		$definition = trim($definition);
		
		if (! preg_match('/^([a-z]+)\s*\(\s*(.+)\s*\)$/i', $definition, $matches)) {
			throw new Exceptions\InvalidDefinition('Invalid definition: "' . $definition . '"');
		}
		
		$function = strtolower(trim($matches[1]));
		$property = trim($matches[2]);
		
		if (! in_array($function, static::$mongoAggregators, true)) {
			throw new Exceptions\InvalidDefinition('Invalid aggregate function: "' . $function . '"');
		}
		
		$this->_groupDefinition[$group] = ['$' . $function => '$' . $property];
	}