private Statement rewriteMethodCondition(MethodCallExpression condition, Expression message, boolean explicit, boolean optOut) {
    MethodCallExpression rewritten;
    int lastVariableNum;
    if (explicit && optOut) {
      rewritten = condition;
      lastVariableNum = -1;
    } else {
      final Expression converted = convert(condition);
      rewritten = (MethodCallExpression) unrecord(converted);
      lastVariableNum = extractVariableNumber(converted);
    }

    List<Expression> args = new ArrayList<>();
    args.add(rewritten.getObjectExpression());
    args.add(rewritten.getMethod());
    args.add(AstUtil.toArgumentArray(AstUtil.getArgumentList(rewritten), resources));
    // rewriting has produced N/A's that haven't been realized yet, so do that now
    args.add(realizeNas(primitiveConstExpression(rewritten.isSafe())));
    args.add(primitiveConstExpression(explicit));
    args.add(primitiveConstExpression(lastVariableNum));

    return surroundWithTryCatch(
        condition,
        message,
        rewriteToSpockRuntimeCall(
            resources.getAstNodeCache().SpockRuntime_VerifyMethodCondition,
            condition,
            message,
            args, optOut), optOut);
  }
Treat the nonsensical `!!` prefix as opt-out from implicit conditions
spock-core/src/main/java/org/spockframework/compiler/ConditionRewriter.java