if(getMethodOwner().getEnumNum() != enumArgumentsList.size()){
throw new ASMSupportException("exist unassign enum constant!");
}
Parameterized[] values = new Parameterized[getMethodOwner().getEnumNum()];
GlobalVariable enumConstant;
int i = 0;
for(EnumConstructorInfo enumArgu : enumArgumentsList){
enumConstant = getMethodOwner().getGlobalVariable(enumArgu.name);
values[i] = enumConstant;
String enumName = enumArgu.name;
Parameterized[] otherArgus = enumArgu.argus;
Parameterized[] enumArgus = new Parameterized[otherArgus.length + 2];
enumArgus[0] = Value.value(enumName);
enumArgus[1] = Value.value(i);
System.arraycopy(otherArgus, 0, enumArgus, 2, otherArgus.length);
MethodInvoker mi = invokeConstructor(getMethodOwner(), enumArgus);
assign(enumConstant, mi);
i++;
}
GlobalVariable gv = getMethodOwner().getGlobalVariable("ENUM$VALUES");
ArrayValue av = newArrayWithValue(AClassFactory.getArrayClass(getMethodOwner(), 1), values);
assign(gv, av);
}