} else { BindingTypePattern btp = (BindingTypePattern)type;  if (state.get(btp.getFormalIndex())!=null) { ISourceLocation isl = getSourceLocation(); Message errorMessage = new Message( "Ambiguous binding of type "+type.getExactType().toString()+ " using args(..) at this line.  Use one args(..) per matched join point,"+"" + " see secondary source location for location of extraneous args(..)", shadow.getSourceLocation(),true,new ISourceLocation[]{getSourceLocation()}); shadow.getIWorld().getMessageHandler().handleMessage(errorMessage); }
	private Test findResidueNoEllipsis(Shadow shadow, ExposedState state, TypePattern[] patterns) {		int len = shadow.getArgCount();		//System.err.println("boudn to : " + len + ", " + patterns.length);		if (patterns.length != len) {			return Literal.FALSE;		}				Test ret = Literal.TRUE;				for (int i=0; i < len; i++) {			TypeX argType = shadow.getArgType(i);			TypePattern type = patterns[i];			if (!(type instanceof BindingTypePattern)) {				if (type.matchesInstanceof(shadow.getIWorld().resolve(argType)).alwaysTrue()) {					continue;				}			}			ret = Test.makeAnd(ret,				exposeStateForVar(shadow.getArgVar(i), type, state,shadow.getIWorld()));		}				return ret;			}