/** * Adds the mixin field to the target class. * * @param fieldInfo * @param deploymentModel * @param mixinDef */ private void addMixinField( final MixinFieldInfo fieldInfo, final DeploymentModel deploymentModel, final MixinDefinition mixinDef) { final String signature = fieldInfo.mixinClassInfo.getSignature(); int modifiers = 0; if (deploymentModel.equals(DeploymentModel.PER_CLASS) || deploymentModel.equals(DeploymentModel.PER_JVM)) { fieldInfo.isStatic = true; fieldInfo.isPerJVM = deploymentModel.equals(DeploymentModel.PER_JVM); modifiers = ACC_PRIVATE + ACC_FINAL + ACC_STATIC + ACC_SYNTHETIC; } else if (deploymentModel.equals(DeploymentModel.PER_INSTANCE)) { fieldInfo.isStatic = false; modifiers = ACC_PRIVATE + ACC_FINAL + ACC_SYNTHETIC; } else { throw new DefinitionException( "deployment model [" + mixinDef.getDeploymentModel() + "] for mixin [" + mixinDef.getMixinImpl().getName() + "] is not supported"); } if (mixinDef.isTransient()) { modifiers += ACC_TRANSIENT; } cv.visitField(modifiers, fieldInfo.fieldName, signature, null, null); m_mixinFields.put(mixinDef.getMixinImpl(), fieldInfo); }