docs: public static Expression transformInlineConstants(final Expression exp) {
          if (exp instanceof PropertyExpression) {
              PropertyExpression pe = (PropertyExpression) exp;
              if (pe.getObjectExpression() instanceof ClassExpression) {
                  ClassExpression ce = (ClassExpression) pe.getObjectExpression();
                  ClassNode type = ce.getType();
                  FieldNode field = ClassNodeUtils.getField(type, pe.getPropertyAsString());
                  if (type.isEnum() && field != null && field.isEnum()) return exp;
                  Expression constant = findConstant(field);
                  if (constant != null) return constant;
              }
          } else if (exp instanceof BinaryExpression) {
              BinaryExpression be = (BinaryExpression) exp;
              be.setLeftExpression(transformInlineConstants(be.getLeftExpression()));
              be.setRightExpression(transformInlineConstants(be.getRightExpression()));
              return be;
          } else if (exp instanceof ListExpression) {
              ListExpression origList = (ListExpression) exp;
              ListExpression newList = new ListExpression();
              boolean changed = false;
              for (Expression e : origList.getExpressions()) {
                  Expression transformed = transformInlineConstants(e);
                  newList.addExpression(transformed);
                  if (transformed != e) changed = true;
              }
              if (changed) {
                  newList.setSourcePosition(origList);
                  return newList;
              }
              return origList;
          }
  
          return exp;
      }