checkBindings("args(.., a,..,b)", all); checkBindings("args(a,..,b, ..)", all);
try {checkBindings("args(.., a,..,b)", all);  fail("shouldn't be implemented yet"); } catch (AbortException ae) {  }
	public void testResolveBindings() {		BindingTypePattern at = new BindingTypePattern(world.resolve("java.lang.Object"), 0);		BindingTypePattern bt = new BindingTypePattern(world.resolve("java.lang.Object"), 1);				BindingTypePattern[] all = new BindingTypePattern[] {at, bt};		BindingTypePattern[] none = new BindingTypePattern[] {null, null};		BindingTypePattern[] a = new BindingTypePattern[] {at, null};		BindingTypePattern[] b = new BindingTypePattern[] {null, bt};				checkBindings("this(b)",b);		checkBindings("this(Foo)", none);		checkBindings("this(*)", none);		checkBindings("this(a)", a);				checkBindings("args(.., a,..,b)", all);		checkBindings("args(a,..,b, ..)", all);				checkBindings("args(a,..,b)", all);		checkBindings("args(b)", b);				checkBindings("args()", none);		checkBindings("this(a) && this(b)", all);				checkBindingFailure("this(a) && this(a)", "multiple");		//checkBindingFailure("this(a) && this(b)");		checkBindingFailure("this(a) || this(b)", "inconsistent");		checkBindingFailure("this(A) || this(b)", "inconsistent");		checkBindingFailure("this(a) || this(B)", "inconsistent");		checkBindings("this(a) || this(a)", a);				checkBindings("!this(Foo)", none);		checkBindings("!this(Foo) && this(a)", a);		checkBindingFailure("!this(a)", "negation");		//checkBindingFailure("this(a)");				checkBindings("cflow(this(a))", a);		checkBindings("cflow(this(a)) && this(b)", all);				checkBindingFailure("cflow(this(a)) || this(b)", "inconsistent");		checkBindingFailure("cflow(this(a)) && this(a)", "multiple");				checkBindingFailure("!cflow(this(a))", "negation");				// todo		// this should fail since a isn't visible to if		//checkBindingFailure("cflow(if(a != null)) && this(a)");		//checkBinding("cflow(if(a != null) && this(a))", a);			}