private Expression rewriteToSpockRuntimeCall(MethodNode method, Expression condition, Expression message,
      List<Expression> additionalArgs, boolean optOut) {
    List<Expression> args = new ArrayList<>();

    MethodCallExpression result = createDirectMethodCall(
        new ClassExpression(resources.getAstNodeCache().SpockRuntime), method,
        new ArgumentListExpression(args));

    args.add(new VariableExpression(errorCollectorName, resources.getAstNodeCache().ErrorCollector));
    args.add(createDirectMethodCall(optOut ? ConstantExpression.NULL :
            new VariableExpression(valueRecorderName),
            resources.getAstNodeCache().ValueRecorder_Reset,
            ArgumentListExpression.EMPTY_ARGUMENTS));
    args.add(new ConstantExpression(resources.getSourceText(condition)));
    args.add(primitiveConstExpression(condition.getLineNumber()));
    args.add(primitiveConstExpression(condition.getColumnNumber()));
    // the following means that "assert x, exprEvaluatingToNull" will be
    // treated the same as "assert x"; but probably it doesn't matter too much
    args.add(message == null ? ConstantExpression.NULL : message);
    args.addAll(additionalArgs);

    result.setSourcePosition(condition);
    return result;
  }
Treat the nonsensical `!!` prefix as opt-out from implicit conditions
spock-core/src/main/java/org/spockframework/compiler/ConditionRewriter.java