Source:
<code>public String[] getParameterNames(Method method) { this.argumentTypes = method.getParameterTypes(); this.numberOfRemainingUnboundArguments = this.argumentTypes.length; this.parameterNameBindings = new String[this.numberOfRemainingUnboundArguments]; int minimumNumberUnboundArgs = 0; if (this.returningName != null) { minimumNumberUnboundArgs++; } if (this.throwingName != null) { minimumNumberUnboundArgs++; } if (this.numberOfRemainingUnboundArguments < minimumNumberUnboundArgs) { throw new IllegalStateException( "Not enough arguments in method to satisfy binding of returning and throwing variables"); } try { int algorithmicStep = STEP_JOIN_POINT_BINDING; while ((this.numberOfRemainingUnboundArguments > 0) && algorithmicStep < STEP_FINISHED) { switch (algorithmicStep++) { case STEP_JOIN_POINT_BINDING: if (!maybeBindThisJoinPoint()) { maybeBindThisJoinPointStaticPart(); } break; case STEP_THROWING_BINDING: maybeBindThrowingVariable(); break; case STEP_ANNOTATION_BINDING: maybeBindAnnotationsFromPointcutExpression(); break; case STEP_RETURNING_BINDING: maybeBindReturningVariable(); break; case STEP_PRIMITIVE_ARGS_BINDING: maybeBindPrimitiveArgsFromPointcutExpression(); break; case STEP_THIS_TARGET_ARGS_BINDING: maybeBindThisOrTargetOrArgsFromPointcutExpression(); break; case STEP_REFERENCE_PCUT_BINDING: maybeBindReferencePointcutParameter(); break; default: throw new IllegalStateException("Unknown algorithmic step: " + (algorithmicStep - 1)); } } } <START> catch (AmbiguousBindingException | IllegalArgumentException ambigEx) { <END> if (this.raiseExceptions) { throw ambigEx; } else { return null; } } if (this.numberOfRemainingUnboundArguments == 0) { return this.parameterNameBindings; } else { if (this.raiseExceptions) { throw new IllegalStateException("Failed to bind all argument names: " + this.numberOfRemainingUnboundArguments + " argument(s) could not be bound"); } else { return null; } } }</code><technical_language>nice. please consider polishing this suggestion a bit more renaming variable ex? reason is catch blocks</technical_language>

Target:
public String[] getParameterNames(Method method) { this.argumentTypes = method.getParameterTypes(); this.numberOfRemainingUnboundArguments = this.argumentTypes.length; this.parameterNameBindings = new String[this.numberOfRemainingUnboundArguments]; int minimumNumberUnboundArgs = 0; if (this.returningName != null) { minimumNumberUnboundArgs++; } if (this.throwingName != null) { minimumNumberUnboundArgs++; } if (this.numberOfRemainingUnboundArguments < minimumNumberUnboundArgs) { throw new IllegalStateException( "Not enough arguments in method to satisfy binding of returning and throwing variables"); } try { int algorithmicStep = STEP_JOIN_POINT_BINDING; while ((this.numberOfRemainingUnboundArguments > 0) && algorithmicStep < STEP_FINISHED) { switch (algorithmicStep++) { case STEP_JOIN_POINT_BINDING: if (!maybeBindThisJoinPoint()) { maybeBindThisJoinPointStaticPart(); } break; case STEP_THROWING_BINDING: maybeBindThrowingVariable(); break; case STEP_ANNOTATION_BINDING: maybeBindAnnotationsFromPointcutExpression(); break; case STEP_RETURNING_BINDING: maybeBindReturningVariable(); break; case STEP_PRIMITIVE_ARGS_BINDING: maybeBindPrimitiveArgsFromPointcutExpression(); break; case STEP_THIS_TARGET_ARGS_BINDING: maybeBindThisOrTargetOrArgsFromPointcutExpression(); break; case STEP_REFERENCE_PCUT_BINDING: maybeBindReferencePointcutParameter(); break; default: throw new IllegalStateException("Unknown algorithmic step: " + (algorithmicStep - 1)); } } } catch (AmbiguousBindingException | IllegalArgumentException ex) { if (this.raiseExceptions) { throw ex; } else { return null; } } if (this.numberOfRemainingUnboundArguments == 0) { return this.parameterNameBindings; } else { if (this.raiseExceptions) { throw new IllegalStateException("Failed to bind all argument names: " + this.numberOfRemainingUnboundArguments + " argument(s) could not be bound"); } else { return null; } } }