/** @since 4.1 */ public void write(CDODataOutput out, int referenceChunk, CDOBranchPoint securityContext) throws IOException { if (WRITING.isEnabled()) { WRITING.start(this); } writeSystemValues(out); CDOPermissionProvider permissionProvider = out.getPermissionProvider(); CDOPermission permission = permissionProvider.getPermission(this, securityContext); out.writeByte(permission.getBits()); if (permission == CDOPermission.NONE) { if (getClassInfo().isResourceNode()) { EClass eClass = getEClass(); EStructuralFeature[] features = getAllPersistentFeatures(); writeValue(out, eClass, features, RESOURCE_NODE_NAME_INDEX, referenceChunk); if (getClassInfo().isResourceFolder()) { writeValue(out, eClass, features, RESOURCE_FOLDER_NODES_INDEX, referenceChunk); } } } else { if (!isUnchunked() && referenceChunk != 0) { CDORevisionUnchunker unchunker = out.getRevisionUnchunker(); if (unchunker != null) { unchunker.ensureChunks(this, referenceChunk); } } writeValues(out, referenceChunk); } if (WRITING.isEnabled()) { WRITING.stop(this); } }