anchor.diff:  The `type` attribute can be used to control for each field what concrete class the string value should be converted to.
   For example:
   
  -[source,java]
  +.Java
  +[source,java,role="primary"]
   ----
   class App {
       @Option(names = "--big", type = BigDecimal.class) // concrete Number subclass
  
positive.code: }
  ----
  
  [source,java]
  ----
  App app = new App();
  CommandLine commandLine = new CommandLine(app)
  
negative.code: }
  ----
  
  .Kotlin
  [source,kotlin,role="secondary"]
  ----
  import java.net.InetSocketAddress
  // ...
  
  class InetSocketAddressConverter : ITypeConverter<InetSocketAddress> {
      override fun convert(value: String): InetSocketAddress {
          val pos = value.lastIndexOf(':')
          if (pos < 0) {
              throw CommandLine.TypeConversionException(
                  "Invalid format: must be 'host:port' but was '$value'")
          }
          val adr = value.substring(0, pos)
          val port = value.substring(pos + 1).toInt()
          return InetSocketAddress(adr, port)
      }
  }
  ----
  
  The `picocli-examples` module on GitHub has a minimal working https://github.com/remkop/picocli/blob/master/picocli-examples/src/main/java/picocli/examples/typeconverter/InetSocketAddressConverterDemo.java[example] which you can run in our https://www.jdoodle.com/embed/v0/2mxo?stdin=1&arg=1[online-editor^].
  
  === Option-specific Type Converters
  