/* 641 */ mv = binfo.getMemberValue("isTransient");
/* 642 */ boolean isTransient = mv != null ? ((BooleanMemberValue)mv).getValue() : true;
/* */
/* 644 */ String name = cf.getName() + "." + minfo.getName();
/* */
/* 646 */ InterfaceIntroduction intro = null;
/* 647 */ String construction = name;
/* 648 */ switch (Descriptor.numOfParameters(minfo.getDescriptor()))
/* */ {
/* */ case 0:
/* 651 */ construction = construction + "()";
/* 652 */ intro = createIntroduction(name, target, typeExpression, null, null, null);
/* 653 */ break;
/* */ case 1:
/* 655 */ construction = construction + "(this)";
/* 656 */ intro = createIntroduction(name, target, typeExpression, null, cf.getName(), minfo.getName());
/* */
/* 658 */ String parameter = Descriptor.getParamDescriptor(minfo.getDescriptor());
/* */
/* 660 */ if (parameter.charAt(1) == 'L')
/* */ break;
/* 662 */ String errorMessage = "Mixin creator method '" + name + "' parameter is primitive type ";
/* */
/* 664 */ char desc = parameter.charAt(1);
/* 665 */ if (desc == ((CtPrimitiveType)CtClass.booleanType).getDescriptor())
/* */ {
/* 667 */ errorMessage = errorMessage + "boolean";
/* */ }
/* 669 */ else if (desc == ((CtPrimitiveType)CtClass.byteType).getDescriptor())
/* */ {
/* 671 */ errorMessage = errorMessage + "byte";
/* */ }
/* 673 */ else if (desc == ((CtPrimitiveType)CtClass.charType).getDescriptor())
/* */ {
/* 675 */ errorMessage = errorMessage + "char";
/* */ }
/* 677 */ else if (desc == ((CtPrimitiveType)CtClass.doubleType).getDescriptor())
/* */ {
/* 679 */ errorMessage = errorMessage + "double";
/* */ }
/* 681 */ else if (desc == ((CtPrimitiveType)CtClass.floatType).getDescriptor())
/* */ {
/* 683 */ errorMessage = errorMessage + "float";
/* */ }
/* 685 */ else if (desc == ((CtPrimitiveType)CtClass.intType).getDescriptor())
/* */ {
/* 687 */ errorMessage = errorMessage + "int";
/* */ }
/* 689 */ else if (desc == ((CtPrimitiveType)CtClass.longType).getDescriptor())
/* */ {
/* 691 */ errorMessage = errorMessage + "long";
/* */ } else {
/* 693 */ if (desc != ((CtPrimitiveType)CtClass.shortType).getDescriptor())
/* */ break;
/* 695 */ errorMessage = errorMessage + "short";
/* */ }
/* */
/* 701 */ errorMessage = errorMessage + ".\n It should have the introduction target type as parameter, or have no parameter at all.";
/* 702 */ throw new RuntimeException(errorMessage);
/* */ default:
/* 707 */ throw new RuntimeException("Mixin creator method '" + name + "' should not have more than one parameter.");
/* */ }
/* */
/* 711 */ if ((!Modifier.isStatic(minfo.getAccessFlags())) || (!Modifier.isPublic(minfo.getAccessFlags())))
/* */ {
/* 714 */ throw new RuntimeException("Mixin creator method '" + name + "' must be public and static.");
/* */ }
/* */
/* 719 */ String classname = getReturnType(minfo);
/* */
/* 721 */ intro.getMixins().add(new InterfaceIntroduction.Mixin(classname, interfaces, construction, isTransient));
/* */
/* 723 */ this.manager.addInterfaceIntroduction(intro);
/* */ }
/* */ }
/* */ }