@@ -864,9 +864,20 @@ private static void HandleIterator(
864864 DomainResolver domainResolver
865865 )
866866 {
867- var compilerGeneratedGeneratorObject = (
868- ( MethodReference ) methodBody . Instructions . First ( inst => inst . IsNewObjectOp ( ) ) . Operand
869- ) . DeclaringType . Resolve ( ) ;
867+ var compilerGeneratedGeneratorObject = methodBody
868+ . Instructions . Where ( inst => inst . IsNewObjectOp ( ) )
869+ . Select ( inst => ( ( MethodReference ) inst . Operand ) . DeclaringType . Resolve ( ) )
870+ . FirstOrDefault ( type =>
871+ type != null
872+ && type . Methods . Any ( method => method . Name == nameof ( IEnumerator . MoveNext ) )
873+ ) ;
874+
875+ if ( compilerGeneratedGeneratorObject == null )
876+ {
877+ methodDefinition = methodBody . Method ;
878+ return ;
879+ }
880+
870881 methodDefinition = compilerGeneratedGeneratorObject . Methods . First ( method =>
871882 method . Name == nameof ( IEnumerator . MoveNext )
872883 ) ;
@@ -898,10 +909,15 @@ private static void HandleAsync(
898909 DomainResolver domainResolver
899910 )
900911 {
901- var compilerGeneratedGeneratorObject = (
902- ( MethodReference )
903- methodBody . Instructions . FirstOrDefault ( inst => inst . IsNewObjectOp ( ) ) ? . Operand
904- ) ? . DeclaringType . Resolve ( ) ;
912+ var compilerGeneratedGeneratorObject = methodBody
913+ . Instructions . Where ( inst => inst . IsNewObjectOp ( ) )
914+ . Select ( inst => ( ( MethodReference ) inst . Operand ) . DeclaringType . Resolve ( ) )
915+ . FirstOrDefault ( type =>
916+ type != null
917+ && type . Methods . Any ( method =>
918+ method . Name == nameof ( IAsyncStateMachine . MoveNext )
919+ )
920+ ) ;
905921
906922 if ( compilerGeneratedGeneratorObject == null )
907923 {
0 commit comments