I think you issue is with
@Provides
public Device provideDevice(Device device) {
return device;
}
Where does the device come from? You need to make a new instance at that point.
For your Device and AndroidSystemValidator, I think you should inject them using the constructor. If you want to use Dagger to do this for you do something like
@Inject public Device(SystemValidator systemValidator) {
this.systemValidator = systemValidator;
}
Otherwise use the modules similar do what you have just change to
@Provides
public Device provideDevice(SystemValidator systemValidator) {
return new Device(systemValidator);
}