+ if(supercd.isInnerClass()&&!supercd.isStatic()&&!supercd.getInStaticContext()) {
+ // for a super class that is also an inner class with surrounding reference, add the surrounding
+ // instance of the child instance as the parent instance's surrounding instance
+ if(((MethodDescriptor)md).isConstructor()) {
+ min.addArgument(new NameNode(new NameDescriptor("surrounding$0")));
+ } else if(((MethodDescriptor)md).getClassDesc().isInnerClass()&&!((MethodDescriptor)md).getClassDesc().isStatic()&&!((MethodDescriptor)md).getClassDesc().getInStaticContext()) {
+ min.addArgument(new NameNode(new NameDescriptor("this$0")));
+ }
+ }
+ tdarray=new TypeDescriptor[min.numArgs()];
+ for(int i=0; i<min.numArgs(); i++) {
+ ExpressionNode en=min.getArg(i);
+ checkExpressionNode(md,nametable,en,null);
+ tdarray[i]=en.getType();
+
+ if(en.getType().isClass() && en.getType().getClassDesc().isEnum()) {
+ tdarray[i] = new TypeDescriptor(TypeDescriptor.INT);
+ }
+ }