code: public FastSerializable readObject(final FastSerializable obj, final DeserializationMonitor monitor) throws IOException {
          final int startPosition = buffer.position();
          obj.readExternal(this);
          final int endPosition = buffer.position();
          if (monitor != null) {
              monitor.deserializedBytes(endPosition - startPosition);
          }
          return obj;
      }
docs: Read an object from a a byte array stream into th provied instance. Takes in a
  deserialization monitor which is notified of how many bytes were deserialized.
  
  @param obj Instance of the class of the type to be deserialized.
  @param monitor Monitor that will be notified of how many bytes are deserialized
  @return A deserialized object.
  @throws IOException Rethrows any IOExceptions thrown.