package co.paralleluniverse.firebase;

//~--- non-JDK imports --------------------------------------------------------

import co.paralleluniverse.fibers.SuspendExecution;

import com.firebase.client.DataSnapshot;
import com.firebase.client.Firebase;
import com.firebase.client.Query;

/**
 * This class exposes Firebase functionality that builds on top of the fiber
 * model.
 */
public enum FirebaseUtil {
  INSTANCE;

  /**
   * Retrieves the Firebase server time based off of the local server time
   * offset.
   *
   * @param  ref an authenticated Firebase reference.
   *
   * @return the Firebase server time.
   */
  public long serverTime(Firebase ref) throws SuspendExecution {
    return System.currentTimeMillis() + serverTimeOffset(ref);
  }

  public long serverTimeOffset(Firebase ref) throws SuspendExecution {
    DataSnapshot snap = QuasarUtil.INSTANCE.run(new ValueEventListenerAsync() {
      @Override
      protected void requestAsync() {
        Query query = ref.getRoot().child(".info/serverTimeOffset");

        query.addListenerForSingleValueEvent(this);
      }
    });

    return (Long) snap.getValue();
  }
}

@@ -611,16 +611,51 @@
 r time.%0A
+   *%0A   * @throws SuspendExecution%0A
    */%0A  
@@ -785,16 +785,215 @@
 );%0A  %7D%0A%0A
+  /**%0A   * Retrieves the local server time offset.%0A   *%0A   * @param  ref an authenticated Firebase reference.%0A   *%0A   * @return the local server time offset.%0A   *%0A   * @throws SuspendExecution%0A   */%0A
   public

Add throws to the javadoc