code: public static void verifyMethodCondition(@Nullable ErrorCollector errorCollector, @Nullable ValueRecorder recorder, @Nullable String text, int line, int column,
        @Nullable Object message, Object target, String method, Object[] args, boolean safe, boolean explicit, int lastVariableNum) {
      MatcherCondition matcherCondition = MatcherCondition.parse(target, method, args, safe);
      if (matcherCondition != null) {
        matcherCondition.verify(errorCollector, getValues(recorder), text, line, column, messageToString(message));
        return;
      }
  
      if (recorder != null) {
        recorder.startRecordingValue(lastVariableNum);
      }
      Object result = safe ? GroovyRuntimeUtil.invokeMethodNullSafe(target, method, args) :
          GroovyRuntimeUtil.invokeMethod(target, method, args);
  
      if (!explicit && result == null && isVoidMethod(target, method, args)) return;
  
      if (!GroovyRuntimeUtil.isTruthy(result)) {
        List<Object> values = getValues(recorder);
        if (values != null) CollectionUtil.setLastElement(values, result);
        final ConditionNotSatisfiedError conditionNotSatisfiedError = new ConditionNotSatisfiedError(
            new Condition(values, text, TextPosition.create(line, column), messageToString(message), null, null));
        errorCollector.collectOrThrow(conditionNotSatisfiedError);
      }
    }
docs: method calls with spread-dot operator are not rewritten, hence this method doesn't have to care about spread-dot