Builder
object is used to represent an single constructor within an object. It contains the actual constructor as well as the list of parameters. Each builder will score its weight when given a Criteria
object. This allows the deserialization process to find the most suitable one to use when instantiating an object.