Source:
<code>public ThriftIndexPageSource( PrestoThriftServiceProvider clientProvider, ThriftConnectorStats stats, ThriftIndexHandle indexHandle, List<ColumnHandle> lookupColumns, List<ColumnHandle> outputColumns, RecordSet keys, long maxBytesPerResponse, int lookupRequestsConcurrency) { this.clientProvider = requireNonNull(clientProvider, "clientProvider is null"); requireNonNull(indexHandle, "indexHandle is null"); this.schemaTableName = new PrestoThriftSchemaTableName(indexHandle.getSchemaTableName()); this.outputConstraint = tupleDomainToThriftTupleDomain(indexHandle.getTupleDomain()); <START> this.stats = requireNonNull(stats, "stats is null"); <END> requireNonNull(lookupColumns, "lookupColumns is null"); this.lookupColumnNames = lookupColumns.stream() .map(ThriftColumnHandle.class::cast) .map(ThriftColumnHandle::getColumnName) .collect(toImmutableList()); requireNonNull(outputColumns, "outputColumns is null"); ImmutableList.Builder<String> outputColumnNames = new ImmutableList.Builder<>(); ImmutableList.Builder<Type> outputColumnTypes = new ImmutableList.Builder<>(); for (ColumnHandle columnHandle : outputColumns) { ThriftColumnHandle thriftColumnHandle = (ThriftColumnHandle) columnHandle; outputColumnNames.add(thriftColumnHandle.getColumnName()); outputColumnTypes.add(thriftColumnHandle.getColumnType()); } this.outputColumnNames = outputColumnNames.build(); this.outputColumnTypes = outputColumnTypes.build(); this.keys = fromRecordSet(requireNonNull(keys, "keys is null")); checkArgument(maxBytesPerResponse > 0, "maxBytesPerResponse is zero or negative"); this.maxBytesPerResponse = maxBytesPerResponse; checkArgument(lookupRequestsConcurrency >= 1, "lookupRequestsConcurrency is less than one"); this.lookupRequestsConcurrency = lookupRequestsConcurrency; this.contexts = new HashMap<>(lookupRequestsConcurrency); }</code><technical_language>order of initialization order of parameters</technical_language>

Target:
public ThriftIndexPageSource( PrestoThriftServiceProvider clientProvider, ThriftConnectorStats stats, ThriftIndexHandle indexHandle, List<ColumnHandle> lookupColumns, List<ColumnHandle> outputColumns, RecordSet keys, long maxBytesPerResponse, int lookupRequestsConcurrency) { this.clientProvider = requireNonNull(clientProvider, "clientProvider is null"); this.stats = requireNonNull(stats, "stats is null"); requireNonNull(indexHandle, "indexHandle is null"); this.schemaTableName = new PrestoThriftSchemaTableName(indexHandle.getSchemaTableName()); this.outputConstraint = tupleDomainToThriftTupleDomain(indexHandle.getTupleDomain()); requireNonNull(lookupColumns, "lookupColumns is null"); this.lookupColumnNames = lookupColumns.stream() .map(ThriftColumnHandle.class::cast) .map(ThriftColumnHandle::getColumnName) .collect(toImmutableList()); requireNonNull(outputColumns, "outputColumns is null"); ImmutableList.Builder<String> outputColumnNames = new ImmutableList.Builder<>(); ImmutableList.Builder<Type> outputColumnTypes = new ImmutableList.Builder<>(); for (ColumnHandle columnHandle : outputColumns) { ThriftColumnHandle thriftColumnHandle = (ThriftColumnHandle) columnHandle; outputColumnNames.add(thriftColumnHandle.getColumnName()); outputColumnTypes.add(thriftColumnHandle.getColumnType()); } this.outputColumnNames = outputColumnNames.build(); this.outputColumnTypes = outputColumnTypes.build(); this.keys = fromRecordSet(requireNonNull(keys, "keys is null")); checkArgument(maxBytesPerResponse > 0, "maxBytesPerResponse is zero or negative"); this.maxBytesPerResponse = maxBytesPerResponse; checkArgument(lookupRequestsConcurrency >= 1, "lookupRequestsConcurrency is less than one"); this.lookupRequestsConcurrency = lookupRequestsConcurrency; this.contexts = new HashMap<>(lookupRequestsConcurrency); }