CTGeofenceAPI implements GeofenceCallback { @SuppressWarnings("WeakerAccess") @NonNull public static CTGeofenceAPI getInstance(@NonNull Context context) { if (ctGeofenceAPI == null) { synchronized (CTGeofenceAPI.class) { if (ctGeofenceAPI == null) { ctGeofenceAPI = new CTGeofenceAPI(context); } } } return ctGeofenceAPI; } private  CTGeofenceAPI(Context context); @SuppressWarnings("WeakerAccess") @NonNull static CTGeofenceAPI getInstance(@NonNull Context context); static Logger getLogger(); @SuppressWarnings("unused") void deactivate(); @Nullable CTGeofenceEventsListener getCtGeofenceEventsListener(); void setCtGeofenceEventsListener(@NonNull CTGeofenceEventsListener ctGeofenceEventsListener); @Nullable CTLocationUpdatesListener getCtLocationUpdatesListener(); void setCtLocationUpdatesListener(@NonNull CTLocationUpdatesListener ctLocationUpdatesListener); @SuppressWarnings("WeakerAccess") @Nullable CTGeofenceSettings getGeofenceSettings(); @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) @Override void handleGeoFences(JSONObject fenceList); void init(CTGeofenceSettings ctGeofenceSettings, @NonNull CleverTapAPI cleverTapAPI); @SuppressWarnings("WeakerAccess") void initBackgroundLocationUpdates(); @SuppressWarnings("unused") void setOnGeofenceApiInitializedListener(
            @NonNull OnGeofenceApiInitializedListener onGeofenceApiInitializedListener); @SuppressWarnings("unused") @Override void triggerLocation(); static final String GEOFENCE_LOG_TAG; }
@Test public void testGetInstance() { CTGeofenceAPI ctGeofenceAPI = CTGeofenceAPI.getInstance(application); Assert.assertNotNull(ctGeofenceAPI); CTGeofenceAPI ctGeofenceAPI1 = CTGeofenceAPI.getInstance(application); Assert.assertSame(ctGeofenceAPI, ctGeofenceAPI1); }