generateForAnnotatedElement method
      
  
FutureOr<String> 
generateForAnnotatedElement(
    
- Element element,
 - ConstantReader annotation,
 - BuildStep buildStep
 
Main entry point for CherryPick field injection code generation.
- Only triggers for classes marked with 
@injectable(). - Throws an error if used on non-class elements.
 - Scans all fields marked with 
@inject()and gathers qualifiers (if any). - Generates Dart code for a mixin that injects all dependencies into the target class instance.
 
Returns the Dart code as a String defining the new mixin.
Example input (user code):
@injectable()
class UserBloc with _$UserBloc {
  @inject() late final AuthRepository authRepository;
}
Example output (generated):
mixin _$UserBloc {
  void _inject(UserBloc instance) {
    instance.authRepository = CherryPick.openRootScope().resolve<AuthRepository>();
  }
}
Implementation
@override
FutureOr<String> generateForAnnotatedElement(
  Element element,
  ConstantReader annotation,
  BuildStep buildStep,
) {
  if (element is! ClassElement) {
    throw InvalidGenerationSourceError(
      '@injectable() can only be applied to classes.',
      element: element,
    );
  }
  final classElement = element;
  final className = classElement.name;
  final mixinName = '_\$$className';
  final buffer = StringBuffer()
    ..writeln('mixin $mixinName {')
    ..writeln('  void _inject($className instance) {');
  // Collect and process all @inject fields
  final injectFields =
      classElement.fields.where(_isInjectField).map(_parseInjectField);
  for (final parsedField in injectFields) {
    buffer.writeln(_generateInjectionLine(parsedField));
  }
  buffer
    ..writeln('  }')
    ..writeln('}');
  return buffer.toString();
}