GROOVY-9519: also fix groovy.cli.internal.CliBuilderInternal
diff --git a/src/main/groovy/groovy/cli/internal/OptionAccessor.groovy b/src/main/groovy/groovy/cli/internal/OptionAccessor.groovy
index af6105a..5d89ecd 100644
--- a/src/main/groovy/groovy/cli/internal/OptionAccessor.groovy
+++ b/src/main/groovy/groovy/cli/internal/OptionAccessor.groovy
@@ -126,6 +126,13 @@
         if (parseResult.commandSpec().findOption(name)) { // requested option was not matched: return its default
             def option = parseResult.commandSpec().findOption(name)
             def result = option.value
+
+            // GROOVY-9519: zero default for non-Boolean type options should not be converted to false
+            def longOpt = option.longestName()
+            longOpt = longOpt?.startsWith("--") ? longOpt.substring(2) : longOpt
+            Class userSpecifiedType = savedTypeOptions[longOpt]?.type
+            if (userSpecifiedType && Boolean != userSpecifiedType) { return result }
+
             return result ? result : false
         }
         if (name.size() > 1 && name.endsWith('s')) { // user wants multi-value result