Buggy code:
class FetchPlaces extends AsyncTask < GoogleMap , Void , Places [ ] > { private final String LOG_TAG = FetchPlaces . class . getSimpleName ( ) ; private final String [ ] foodDrink ; private final String [ ] entertainment ; private final String [ ] shopping ; private final String [ ] healthBeauty ; private final String [ ] services ; private LatLng latLng ; private GoogleMap googleMap ; private ArrayList < Marker > entertainmentMarkers ; private ArrayList < Marker > foodDrinkMarkers ; private ArrayList < Marker > shoppingMarkers ; private ArrayList < Marker > healthBeautyMarkers ; private ArrayList < Marker > servicesMarkers ; private ArrayList < Marker > otherMarkers = new ArrayList < > ( ) ; private Places [ ] pArray ; private Places currentPlace ; public FetchPlaces ( ) { } private Places [ ] getPlacesFromJson ( String placesJson ) throws JSONException { } private void getJsonLocationData ( String GEOMETRY , String NAME , String TYPES , JSONArray placesArray , Places [ ] pArray ) throws JSONException { } @ Override protected Places [ ] doInBackground ( GoogleMap ... params ) { } @ Override protected void onPostExecute ( Places [ ] places ) { Marker marker ; for ( Places place : places ) { if ( containsPlace ( place , foodDrink ) ) { marker = addMarkerToMap ( place , HUE_VIOLET ) ; foodDrinkMarkers . add ( marker ) ; } else if ( containsPlace ( place , entertainment ) ) { marker = addMarkerToMap ( place , HUE_GREEN ) ; entertainmentMarkers . add ( marker ) ; } else if ( containsPlace ( place , shopping ) ) { marker = addMarkerToMap ( place , HUE_MAGENTA ) ; shoppingMarkers . add ( marker ) ; } else if ( containsPlace ( place , healthBeauty ) ) { marker = addMarkerToMap ( place , HUE_CYAN ) ; healthBeautyMarkers . add ( marker ) ; } else if ( containsPlace ( place , services ) ) { marker = addMarkerToMap ( place , HUE_AZURE ) ; servicesMarkers . add ( marker ) ; } else { marker = addMarkerToMap ( place , HUE_ORANGE ) ; otherMarkers . add ( marker ) ; } } googleMap . setOnMarkerClickListener ( new GoogleMap . OnMarkerClickListener ( ) { @ Override public boolean onMarkerClick ( Marker marker ) { <START_BUG> if ( ( pArray ) != null ) { <END_BUG> for ( Places place : pArray ) { if ( marker . getTitle ( ) . equals ( place . getName ( ) ) ) { setCurrentPlace ( place ) ; } } } return false ; } } ) ; } private Marker addMarkerToMap ( final Places place , float colour ) { } private boolean containsPlace ( Places place , String [ ] listedTypes ) { } public void loopServices ( ) { } public void loopHealth ( ) { } public void loopEntertainment ( ) { } public void loopShopping ( ) { } public void loopOthers ( ) { } public void loopFoodDrink ( ) { } private ArrayList < Marker > getEntertainmentMarkers ( ) { } public void setEntertainmentMarkers ( ArrayList < Marker > entertainmentMarkers ) { } private ArrayList < Marker > getFoodDrinkMarkers ( ) { } public void setFoodDrinkMarkers ( ArrayList < Marker > foodDrinkMarkers ) { } private ArrayList < Marker > getShoppingMarkers ( ) { } public void setShoppingMarkers ( ArrayList < Marker > shoppingMarkers ) { } private ArrayList < Marker > getHealthBeautyMarkers ( ) { } public void setHealthBeautyMarkers ( ArrayList < Marker > healthBeautyMarkers ) { } private ArrayList < Marker > getServicesMarkers ( ) { } public void setServicesMarkers ( ArrayList < Marker > servicesMarkers ) { } private ArrayList < Marker > getOtherMarkers ( ) { } public void setOtherMarkers ( ArrayList < Marker > otherMarkers ) { } public void setCurrentPlace ( Places currentPlace ) { } public Places getCurrentPlace ( ) { } public void setLatLng ( LatLng latLng ) { } public LatLng getLatLng ( ) { } }

Fix:
if ( ( ( pArray ) != null ) && ( ( marker . getTitle ( ) ) != null ) ) {