Source:
<code>public ConfigDescriptionParameter(String name, Type type, BigDecimal minimum, BigDecimal maximum, BigDecimal stepsize, String pattern, Boolean required, Boolean readOnly, Boolean multiple, String context, String defaultValue, String label, String description, List<ParameterOption> options, List<FilterCriteria> filterCriteria, String groupName, Boolean advanced, Boolean limitToOptions, Integer multipleLimit) throws IllegalArgumentException { if ((name == null) || (name.isEmpty())) { throw new IllegalArgumentException("The name must neither be null nor empty!"); } if (type == null) { throw new IllegalArgumentException("The type must not be null!"); } this.name = name; this.type = type; this.groupName = groupName; this.min = minimum; this.max = maximum; this.step = stepsize; this.pattern = pattern; this.context = context; this.defaultValue = defaultValue; this.label = label; this.description = description; this.multipleLimit = multipleLimit; if (readOnly == null) { <START> this.readOnly = false; <END> } else { this.readOnly = readOnly; } if (multiple == null) { this.multiple = false; } else { this.multiple = multiple; } if (advanced == null) { this.advanced = false; } else { this.advanced = advanced; } if (required == null) { this.required = false; } else { this.required = required; } if (limitToOptions == null) { this.limitToOptions = false; } else { this.limitToOptions = limitToOptions; } if (options != null) { this.options = Collections.unmodifiableList(options); } else { this.options = Collections.unmodifiableList(new LinkedList<ParameterOption>()); } if (filterCriteria != null) { this.filterCriteria = Collections.unmodifiableList(filterCriteria); } else { this.filterCriteria = Collections.unmodifiableList(new LinkedList<FilterCriteria>()); } }</code><technical_language>This is imho fully clean. In noargs constructor this.readonly uninitialized while specifically set false. I prefer constructors operate way. easiest is explicitly initialize field in class boolean readOnly = false; != case in constructor. for other booleans</technical_language>

Target:
public ConfigDescriptionParameter(String name, Type type, BigDecimal minimum, BigDecimal maximum, BigDecimal stepsize, String pattern, Boolean required, Boolean readOnly, Boolean multiple, String context, String defaultValue, String label, String description, List<ParameterOption> options, List<FilterCriteria> filterCriteria, String groupName, Boolean advanced, Boolean limitToOptions, Integer multipleLimit) throws IllegalArgumentException { if ((name == null) || (name.isEmpty())) { throw new IllegalArgumentException("The name must neither be null nor empty!"); } if (type == null) { throw new IllegalArgumentException("The type must not be null!"); } this.name = name; this.type = type; this.groupName = groupName; this.min = minimum; this.max = maximum; this.step = stepsize; this.pattern = pattern; this.context = context; this.defaultValue = defaultValue; this.label = label; this.description = description; this.multipleLimit = multipleLimit; if (readOnly != null) { this.readOnly = readOnly; } if (multiple != null) { this.multiple = multiple; } if (advanced != null) { this.advanced = advanced; } if (required != null) { this.required = required; } if (limitToOptions != null) { this.limitToOptions = limitToOptions; } if (options != null) { this.options = Collections.unmodifiableList(options); } else { this.options = Collections.unmodifiableList(new LinkedList<ParameterOption>()); } if (filterCriteria != null) { this.filterCriteria = Collections.unmodifiableList(filterCriteria); } else { this.filterCriteria = Collections.unmodifiableList(new LinkedList<FilterCriteria>()); } }