Currently the following pattern is used for storing an State Object:
State<ByteChannel> state = mgr.getOrCreateState(key);
ByteChannel channel = ... create a ByteChannel from a file, etc ...
We might want to also add an blocking State:recordFully method as well and make the record method non-blocking. Similar to the way DataInputStream:readFully works: http://docs.oracle.com/javase/1.4.2/docs/api/java/io/DataInput.html#readFully(byte)