Program: 13365
Project: 13365
Buggy source:
public MapViewModel(final MapNetworkAdapter mapNetworkAdapter){
  this.mapNetworkAdapter=mapNetworkAdapter;
  dragDelta=PublishSubject.create();
  zoomLevel=new ZoomLevel(3);
  viewSize=PublishSubject.create();
  centerCoordSubject=BehaviorSubject.create(new LatLng(51.507351,-0.127758));
  coordinateProjection=new CoordinateProjection(mapNetworkAdapter.getTileSizePx());
  final LatLngCalculator latLngCalculator=new LatLngCalculator(coordinateProjection,dragDelta,centerCoordSubject);
  centerCoord=latLngCalculator.getObservable();
  final Subject<Collection<MapTileDrawable>,Collection<MapTileDrawable>> mapTilesSubject=BehaviorSubject.create();
  final Subject<MapTileBitmap,MapTileBitmap> loadedMapTilesSubject=PublishSubject.create();
  Observable<MapState> mapStateObservable=Observable.combineLatest(zoomLevel.getObservable().doOnNext(MapTileUtils.logOnNext("String_Node_Str")),viewSize.doOnNext(MapTileUtils.logOnNext("String_Node_Str")),centerCoord.doOnNext(MapTileUtils.logOnNext("String_Node_Str")),MapTileUtils.combineToMapState(coordinateProjection)).cache();
  latLngCalculator.setMapStateObservable(mapStateObservable);
  final Observable<Collection<MapTileDrawable>> mapTiles=mapStateObservable.map(MapTileUtils.calculateMapTiles(mapNetworkAdapter.getTileSizePx()));
  mapTiles.observeOn(AndroidSchedulers.mainThread()).subscribe(mapTilesSubject);
  mapTiles.flatMap(MapTileUtils.expandCollection).flatMap(MapTileUtils.loadMapTile(mapNetworkAdapter)).observeOn(AndroidSchedulers.mainThread()).subscribe(loadedMapTilesSubject);
  loadedMapTiles=loadedMapTilesSubject;
  this.mapTiles=mapTilesSubject;
}

Fixed version (ground truth):
public MapViewModel(final MapNetworkAdapter mapNetworkAdapter){
  this.mapNetworkAdapter=mapNetworkAdapter;
  dragDelta=PublishSubject.create();
  zoomLevel=new ZoomLevel(0);
  viewSize=PublishSubject.create();
  centerCoordSubject=BehaviorSubject.create(new LatLng(51.507351,-0.127758));
  coordinateProjection=new CoordinateProjection(mapNetworkAdapter.getTileSizePx());
  final LatLngCalculator latLngCalculator=new LatLngCalculator(coordinateProjection,dragDelta,centerCoordSubject);
  centerCoord=Observable.merge(centerCoordSubject,latLngCalculator.getObservable()).distinctUntilChanged();
  final Subject<Collection<MapTileDrawable>,Collection<MapTileDrawable>> mapTilesSubject=BehaviorSubject.create();
  final Subject<MapTileBitmap,MapTileBitmap> loadedMapTilesSubject=PublishSubject.create();
  Observable<MapState> mapStateObservable=Observable.combineLatest(zoomLevel.getObservable().doOnNext(MapTileUtils.logOnNext("String_Node_Str")),viewSize.doOnNext(MapTileUtils.logOnNext("String_Node_Str")),centerCoord.doOnNext(MapTileUtils.logOnNext("String_Node_Str")),MapTileUtils.combineToMapState(coordinateProjection)).cache();
  latLngCalculator.setMapStateObservable(mapStateObservable);
  final Observable<Collection<MapTileDrawable>> mapTiles=mapStateObservable.map(MapTileUtils.calculateMapTiles(mapNetworkAdapter.getTileSizePx()));
  mapTiles.observeOn(AndroidSchedulers.mainThread()).subscribe(mapTilesSubject);
  mapTiles.flatMap(MapTileUtils.expandCollection).flatMap(MapTileUtils.loadMapTile(mapNetworkAdapter)).observeOn(AndroidSchedulers.mainThread()).subscribe(loadedMapTilesSubject);
  loadedMapTiles=loadedMapTilesSubject;
  this.mapTiles=mapTilesSubject;
}