private void init(final ObjectAdapter adapter) {

    final ObjectSpecification specification = adapter.getSpecification();

    final EncodableFacet encodableFacet = specification.getFacet(EncodableFacet.class);
    final boolean isEncodable = encodableFacet != null;
    if (isEncodable) {
      encodableValue = encodableFacet.toEncodedString(adapter);
      type = Type.ENCODEABLE;
      return;
    }

    final RootOid oid = (RootOid) adapter.getOid();
    if (oid.isTransient()) {
      transientMemento = new Memento(adapter);
      type = Type.TRANSIENT;
      return;
    }

    persistentOidStr = oid.enString(getOidMarshaller());
    type = Type.PERSISTENT;
  }