static void setCharacteristicsVariableDeclaration(final String characteristicsClassName,
                                                      final Characteristics characteristics,
                                                      final List<Field<?>> fields,
                                                      final ClassOrInterfaceDeclaration characteristicsTemplate) {
        int counter = 0;
        NodeList<Expression> arguments = new NodeList<>();
        for (Characteristic characteristic : characteristics.getCharacteristics()) {
            String characteristicVariableName = String.format(VARIABLE_NAME_TEMPLATE, characteristicsClassName, counter);
            addGetCharacteristicMethod(characteristicVariableName, characteristic, fields, characteristicsTemplate);
            MethodCallExpr toAdd = new MethodCallExpr();
            toAdd.setScope(new NameExpr(characteristicsClassName));
            toAdd.setName("get" + characteristicVariableName);
            arguments.add(toAdd);
            counter++;
        }
        final ConstructorDeclaration constructorDeclaration =
                characteristicsTemplate.getDefaultConstructor().orElseThrow(() -> new KiePMMLInternalException(String.format(MISSING_DEFAULT_CONSTRUCTOR, characteristicsTemplate.getName())));

        constructorDeclaration.setName(characteristicsClassName);
        final BlockStmt body = constructorDeclaration.getBody();
        final ExplicitConstructorInvocationStmt superStatement =
                CommonCodegenUtils.getExplicitConstructorInvocationStmt(body)
                        .orElseThrow(() -> new KiePMMLException(String.format(MISSING_CONSTRUCTOR_IN_BODY, body)));
        superStatement.setArgument(0, new StringLiteralExpr(characteristicsClassName));
        superStatement.setArgument(2, getArraysAsListInvocationMethodCall(arguments));
    }
@Test
    void setCharacteristicsVariableDeclaration() {
        KiePMMLCharacteristicsFactory.setCharacteristicsVariableDeclaration(CONTAINER_CLASS_NAME,
                basicComplexPartialScoreCharacteristics,
                getFieldsFromDataDictionary(basicComplexPartialScoreDataDictionary),
                characteristicsTemplate);
        List<Class<?>> imports = Arrays.asList(KiePMMLApply.class,
                KiePMMLAttribute.class,
                KiePMMLCharacteristic.class,
                KiePMMLCharacteristics.class,
                KiePMMLComplexPartialScore.class,
                KiePMMLCompoundPredicate.class,
                KiePMMLConstant.class,
                KiePMMLFieldRef.class,
                KiePMMLSimplePredicate.class,
                KiePMMLSimpleSetPredicate.class,
                KiePMMLTruePredicate.class,
                Arrays.class,
                Collections.class);
        commonValidateCompilationWithImports(characteristicsTemplate, imports);
    }