code: static synchronized AnalyticsContext create(
        Context context, Traits traits, boolean collectDeviceId) {
      AnalyticsContext analyticsContext =
          new AnalyticsContext(new NullableConcurrentHashMap<String, Object>());
      analyticsContext.putApp(context);
      analyticsContext.setTraits(traits);
      analyticsContext.putDevice(context, collectDeviceId);
      analyticsContext.putLibrary();
      analyticsContext.put(
          LOCALE_KEY, Locale.getDefault().getLanguage() + "-" + Locale.getDefault().getCountry());
      analyticsContext.putNetwork(context);
      analyticsContext.putOs();
      analyticsContext.putScreen(context);
      putUndefinedIfNull(analyticsContext, USER_AGENT_KEY, System.getProperty("http.agent"));
      putUndefinedIfNull(analyticsContext, TIMEZONE_KEY, TimeZone.getDefault().getID());
      return analyticsContext;
    }
docs: Create a new {@link AnalyticsContext} instance filled in with information from the given {@link
  Context}. The {@link Analytics} client can be called from anywhere, so the returned instances
  is thread safe.