Let's say, I have a complex object hierarchy, something like:

```
public class ClassRoom
{
    private ClassRoomInfo classRoomInfo;
    private List<Student> students;
    ...
}

```

I get this object as an input from client, but the object might not be filled completely. For example, client can provide very minimal details like `studentId(s)` or minor information in the `classRoomInfo` object. I want to write a `DataCollector` class for this object, which would collect all the missing data upfront. 

What would be the best design pattern in this case?