code: public function getFusionTagTypes() {
  
  		// Determine existing tag types.
  
  		$types = array();
  		$configuration = Config::inst();
  
  		// The tag type exclusions need checking.
  
  		$exclusions = $configuration->get('FusionService', 'tag_type_exclusions');
  		$classes = ClassInfo::subclassesFor('DataObject');
  		unset($classes['FusionTag']);
  		foreach($classes as $class) {
  
  			// Determine the tag types to consolidate, based on data objects ending with "Tag".
  
  			if((strpos(strrev($class), strrev('Tag')) === 0) && !in_array($class, $exclusions) && !ClassInfo::classImplements($class, 'TestOnly')) {
  
  				// Use the title field as a default.
  
  				$types[$class] = 'Title';
  			}
  		}
  
  		// Determine configuration defined tag types.
  
  		foreach($configuration->get('FusionService', 'custom_tag_types') as $type => $field) {
  			if(in_array($type, $classes) && !in_array($type, $exclusions)) {
  
  				// Use the configuration defined field.
  
  				$types[$type] = $field;
  			}
  		}
  		return $types;
  	}
docs: Determine the existing and configuration defined tag types to consolidate.
  
  @return array(string, string)