code: public <T> Observable<T> getAndObserve(String key, Class<T> classOfT, T defaultValue) {
      return getAndObserve(key, TypeToken.fromClass(classOfT), defaultValue);
    }
docs: Gets value from SharedPreferences with a given key and type
  as a RxJava Observable, which can be subscribed.
  If value is not found, we can return defaultValue.
  Emit preference as first element of the stream even if preferences wasn't changed.
  
  @param key key of the preference
  @param classOfT class of T (e.g. String.class)
  @param defaultValue default value of the preference (e.g. "" or "undefined")
  @param <T> return type of the preference (e.g. String)
  @return Observable value from SharedPreferences associated with given key or default value