docs: public void pushConstant(ConstantExpression expression) {
          MethodVisitor mv = controller.getMethodVisitor();
          Object value = expression.getValue();
          ClassNode origType = expression.getType().redirect();
          ClassNode type = ClassHelper.getUnwrapper(origType);
          boolean boxing = origType!=type;
          boolean asPrimitive = boxing || ClassHelper.isPrimitiveType(type);
  
          if (value == null) {
              mv.visitInsn(ACONST_NULL);
          } else if (boxing && value instanceof Boolean) {
              // special path for boxed boolean
              Boolean bool = (Boolean) value;
              String text = bool ? "TRUE" : "FALSE";
              mv.visitFieldInsn(GETSTATIC, "java/lang/Boolean", text, "Ljava/lang/Boolean;");
              boxing = false;
              type = origType;
          } else if (asPrimitive) {
              pushPrimitiveConstant(mv, value, type);
          } else if (value instanceof BigDecimal) {
              newInstance(mv, value);
          } else if (value instanceof BigInteger) {
              newInstance(mv, value);
          } else if (value instanceof String) {
              mv.visitLdcInsn(value);
          } else {
              throw new ClassGeneratorException(
                      "Cannot generate bytecode for constant: " + value + " of type: " + type.getName());
          }
          
          push(type);
          if (boxing) box(); 
      }