docs: private void transformConstructor(ConstructorNode ctor, boolean isAic) {
          boolean chainedThisConstructorCall = false;
          ConstructorCallExpression cce = null;
          if (ctor.firstStatementIsSpecialConstructorCall()) {
              Statement code = ctor.getFirstStatement();
              cce = (ConstructorCallExpression) ((ExpressionStatement) code).getExpression();
              if (cce.isSuperCall()) return;
              // must be call to this(...)
              chainedThisConstructorCall = true;
          }
          // we need to add parameters
          Parameter[] oldP = ctor.getParameters();
          Parameter[] newP = new Parameter[oldP.length + 2];
          String stringParameterName = getUniqueVariableName("__str", ctor.getCode());
          newP[0] = new Parameter(ClassHelper.STRING_TYPE, stringParameterName);
          String intParameterName = getUniqueVariableName("__int", ctor.getCode());
          newP[1] = new Parameter(ClassHelper.int_TYPE, intParameterName);
          System.arraycopy(oldP, 0, newP, 2, oldP.length);
          ctor.setParameters(newP);
          VariableExpression stringVariable = new VariableExpression(newP[0]);
          VariableExpression intVariable = new VariableExpression(newP[1]);
          if (chainedThisConstructorCall) {
              TupleExpression args = (TupleExpression) cce.getArguments();
              List<Expression> argsExprs = args.getExpressions();
              argsExprs.add(0, stringVariable);
              argsExprs.add(1, intVariable);
          } else {
              // add a super call
              List<Expression> args = new ArrayList<Expression>();
              args.add(stringVariable);
              args.add(intVariable);
              if (isAic) {
                  for (Parameter parameter : oldP) {
                      args.add(new VariableExpression(parameter.getName()));
                  }
              }
              cce = new ConstructorCallExpression(ClassNode.SUPER, new ArgumentListExpression(args));
              BlockStatement code = new BlockStatement();
              code.addStatement(new ExpressionStatement(cce));
              Statement oldCode = ctor.getCode();
              if (oldCode != null) code.addStatement(oldCode);
              ctor.setCode(code);
          }
      }