class DataSetMarshaller {

    static RoutingProblem toDomain(DataSet dataSet) {
        return new RoutingProblem(
                Optional.ofNullable(dataSet.getName()).orElse(""),
                Optional.ofNullable(dataSet.getVehicles()).orElse(Collections.emptyList())
                        .stream()
                        .map(DataSetMarshaller::toDomain)
                        .collect(toList()),
                Optional.ofNullable(dataSet.getDepot()).map(DataSetMarshaller::toDomain).orElse(null),
                Optional.ofNullable(dataSet.getVisits()).orElse(Collections.emptyList())
                        .stream()
                        .map(DataSetMarshaller::toDomain)
                        .collect(toList()));
    }

      DataSetMarshaller();
      DataSetMarshaller(ObjectMapper mapper);

}