Avoid an AIOOBE I observed with badly broken sources in RL.
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementor.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementor.java
index 8567ae3..012a34e 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementor.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementor.java
@@ -975,7 +975,9 @@
 			|| methodMapping.mappings.length == 0
 		    || idx < generatedArgsLen)                  // don't map generated args.
 	    {
-			targetArgName	  = wrapperDeclaration.arguments[idx+wrapperPrefixLen].name;
+			targetArgName	  = idx+wrapperPrefixLen < wrapperDeclaration.arguments.length
+								? wrapperDeclaration.arguments[idx+wrapperPrefixLen].name
+								: CharOperation.concat(IOTConstants.OT_DOLLAR_NAME, "missingArg".toCharArray()); //$NON-NLS-1$
 	        MethodSpec rmSpec = methodMapping.roleMethodSpec;
 			mappedArgExpr     = genSimpleArgExpr(targetArgName, rmSpec);
 			if (idx >= generatedArgsLen)