protected void acceptExpression(
     @NonNull XExpression expression, @NonNull CharSequence indentation, boolean immediate) {
   XStringLiteral literal = (XStringLiteral) expression;
   String value = literal.getValue();
   value = value.replaceAll("\\n", "\n" + indentation);
   if (immediate) {
     if (currentLine.toString().matches("^\\s*$")) {
       for (int at = builder.length() - 1; at >= 0; at++) {
         if (builder.charAt(at) == '\n') {
           builder.insert(at, value);
           return;
         }
       }
     }
   }
   for (int i = value.length() - 1; i >= 0; i--) {
     if (value.charAt(i) == '\n') {
       builder.append(currentLine);
       builder.append(value.substring(0, i + 1));
       if (i != value.length() - 1) {
         currentLine = new StringBuilder(value.substring(i + 1));
       } else {
         currentLine = new StringBuilder();
       }
       return;
     }
   }
   currentLine.append(value);
 }
 @Override
 public void acceptForLoop(
     @NonNull JvmFormalParameter parameter, @NonNull XExpression expression) {
   if (!ignore()) {
     XMemberFeatureCall featureCall = (XMemberFeatureCall) expression;
     XStringLiteral receiver = (XStringLiteral) featureCall.getMemberCallTarget();
     int length = receiver.getValue().length();
     if (length != 0) forLoopStack.push(length * -1);
     else forLoopStack.push(null);
   }
 }