public class CompletionAllocationExpressionIsParent2 {
	public class Inner {
		public Inner(long i, long j){super();}
		public Inner(Object i, Object j){super();}
		
	}
	
	long zzlong;
	int zzint;
	double zzdouble;
	boolean zzboolean;
	Object zzObject;
	
	void foo() {
		this.new Inner(1, zz
	}
}