private MarkerMoveResultWithCircle onMarkerMoved(Marker marker){
  GeofenceCircle.MarkerMoveResult result=GeofenceCircle.MarkerMoveResult.none;
  GeofenceCircle affectedDraggableCircle=null;
  ArrayList<GeofenceCircle> allMarkers=new ArrayList<>();
  allMarkers.addAll(areas);
  allMarkers.addAll(savedPoints);
  allMarkers.addAll(savedDataPoints);
  for (int i=0; i < allMarkers.size(); i++) {
    GeofenceCircle draggableCircle=allMarkers.get(i);
    result=draggableCircle.onMarkerMoved(marker);
    if (result != GeofenceCircle.MarkerMoveResult.none) {
      affectedDraggableCircle=draggableCircle;
      break;
    }
  }
  return new MarkerMoveResultWithCircle(result,affectedDraggableCircle);
}

private MarkerMoveResultWithCircle onMarkerMoved ( Marker marker ) { GeofenceCircle . MarkerMoveResult result = GeofenceCircle . MarkerMoveResult . none ; GeofenceCircle affectedDraggableCircle = null ; ArrayList < GeofenceCircle > allMarkers = new ArrayList < > ( ) ; allMarkers . addAll ( areas ) ; allMarkers . addAll ( savedPoints ) ; allMarkers . addAll ( savedDataPoints ) ; for ( int i = 0 ; i < allMarkers . size ( ) ; i ++ ) { GeofenceCircle draggableCircle = allMarkers . get ( i ) ; result = draggableCircle . onMarkerMoved ( marker ) ; if ( result != GeofenceCircle . MarkerMoveResult . none ) { affectedDraggableCircle = draggableCircle ; break ; } } return new MarkerMoveResultWithCircle ( result , affectedDraggableCircle ) ; }
when marker is moved , notify circles the circle containing the marker will execute necessary actions
