class RequestStartReplay extends Request {

    @Override
    public Sc2Api.Request toSc2Api() {
        Sc2Api.RequestStartReplay.Builder aSc2ApiRequestStartReplay = Sc2Api.RequestStartReplay.newBuilder()
                .setOptions(interfaceOptions.toSc2Api())
                .setObservedPlayerId(observedPlayerId)
                .setDisableFog(disableFog)
                .setRealtime(realtime);

        getReplayPath().map(Path::toString).ifPresent(aSc2ApiRequestStartReplay::setReplayPath);
        getReplayDataInBytes().map(ByteString::copyFrom).ifPresent(aSc2ApiRequestStartReplay::setReplayData);
        getMapDataInBytes().map(ByteString::copyFrom).ifPresent(aSc2ApiRequestStartReplay::setMapData);

        return Sc2Api.Request.newBuilder()
                .setStartReplay(aSc2ApiRequestStartReplay.build())
                .build();
    }

    private  RequestStartReplay(Builder builder);

}