Child data readers may need to do something complex to get the values necessary to configure the parent class, so they should construct and pass a DataReaderSetup object. This way if they need to also configure other values at the same time, they can create a more complicated Setup object that contains values used in their own constructor.