code: protected function combiner($names)
  	{
  		$return = array('');
  		$names = array_values($names);
  
  		for ($i=0, $c=\count($names); $i<$c; $i++)
  		{
  			$buffer = array();
  
  			foreach ($return as $k=>$v)
  			{
  				$buffer[] = ($k%2 == 0) ? $v : $v.$names[$i];
  				$buffer[] = ($k%2 == 0) ? $v.$names[$i] : $v;
  			}
  
  			$return = $buffer;
  		}
  
  		return array_filter($return);
  	}
docs: Generate possible palette names from an array by taking the first value and either adding or not adding the following values
  
  @param array $names
  
  @return array