code: @SuppressWarnings("unchecked")
      public <T> WeakReference<T> track(T obj, Runnable runnable){
          return (WeakReference<T>)track(obj, WeakReference.class, runnable);
      }
docs: tracks the given {@code obj} using {@link java.lang.ref.WeakReference}.<br>
  Specified {@code runnable} is executed when {@code obj} gets garbage collected.
  
  @param obj       object needs to be tracked
  @param runnable  runnable to be executed when {@code obj} gets garbage collected
  
  @return the {@link java.lang.ref.WeakReference} created for {@code obj}
  
  @see #track(Object, Class, Runnable)