}
private <A extends Entity> ODocument createAssetDocument(ODatabaseDocumentTx db, Class<A> assetClass, A sourceAsset,
EntityAdapter<A> assetEntityAdapter, EntityId assetId, Blob blob, ORID componentDocumentRid) {
// create asset document using source data
ODocument assetDocument = db.newInstance(new OClassNameBuilder().type(assetClass).build());
assetEntityAdapter.populateDocument(sourceAsset, assetDocument);
// amend asset document with base/system-controlled properties
assetDocument.field(EntityAdapter.P_ID, assetId.asUniqueString());
assetDocument.field(P_FIRST_CREATED, blob.getMetrics().getCreationTime().toDate());