Implementation
@visibleForTesting
String generateForElement(
Element element, ConstantReader annotation, LibraryReader library) {
var classes = annotation.read('classes').listValue;
ClassElement classElement = _validateElement(element, false);
var subTypes = classes.isNotEmpty
? _findSubTypesForAllClasses(classes, library)
: [_findSubTypesForSingleClass(library, classElement)];
subTypes.forEach((e) => _validateSubType(e, classes.isNotEmpty));
var optionsReader = annotation.read('options');
ClassSwitchOptions generatorOptions =
extractOptionsFromAnnotation(optionsReader);
ClassSwitchClassGenerator classSwitchCodeBuilder =
ClassSwitchClassGenerator.create(
classElement, subTypes, generatorOptions);
return classSwitchCodeBuilder.generateAll();
}