## Uses of Interface
org.eclipse.emf.cdo.common.id.CDOID

Packages that use CDOID
org.eclipse.emf.cdo
org.eclipse.emf.cdo.common.id
org.eclipse.emf.cdo.common.io
org.eclipse.emf.cdo.common.revision
org.eclipse.emf.cdo.common.revision.cache
org.eclipse.emf.cdo.common.revision.delta
org.eclipse.emf.cdo.server
org.eclipse.emf.cdo.server.db
org.eclipse.emf.cdo.server.db.mapping
org.eclipse.emf.cdo.server.hibernate.id
org.eclipse.emf.cdo.session
org.eclipse.emf.cdo.spi.common.id
org.eclipse.emf.cdo.spi.common.model
org.eclipse.emf.cdo.spi.common.revision
org.eclipse.emf.cdo.spi.server
org.eclipse.emf.cdo.transaction
org.eclipse.emf.cdo.util
org.eclipse.emf.cdo.view
org.eclipse.emf.spi.cdo

Uses of CDOID in org.eclipse.emf.cdo

Methods in org.eclipse.emf.cdo that return CDOID
`CDOID` `CDOObject.cdoID()` Returns the technical object identifier of this object, or `null` if the `state` of this object is `TRANSIENT` or `INVALID`.

Uses of CDOID in org.eclipse.emf.cdo.common.id

Subinterfaces of CDOID in org.eclipse.emf.cdo.common.id
`interface` `CDOIDExternal`
`interface` `CDOIDMeta`
`interface` `CDOIDObject`
`interface` `CDOIDTemp`
`interface` `CDOIDTempMeta`

Fields in org.eclipse.emf.cdo.common.id declared as CDOID
`static CDOID` `CDOID.NULL`

Methods in org.eclipse.emf.cdo.common.id that return CDOID
`static CDOID` `CDOIDUtil.createLong(long value)`
`CDOID` `CDOIDMetaRange.get(int index)`
`CDOID` `CDOIDAndVersion.getID()`
`CDOID` `CDOIDMetaRange.getLowerBound()`
`CDOID` `CDOIDMetaRange.getUpperBound()`
`CDOID` `CDOIDProvider.provideCDOID(java.lang.Object idOrObject)`
`static CDOID` `CDOIDUtil.read(java.lang.String uriFragment, CDOIDObjectFactory factory)` Format of the URI fragment.

Methods in org.eclipse.emf.cdo.common.id with parameters of type CDOID
`boolean` `CDOIDMetaRange.contains(CDOID id)`
`static CDOIDAndVersion` `CDOIDUtil.createIDAndVersion(CDOID id, int version)`
`static CDOIDMetaRange` `CDOIDUtil.createMetaRange(CDOID lowerBound, int count)`
`static boolean` `CDOIDUtil.equals(CDOID id1, CDOID id2)`
`static long` `CDOIDUtil.getLong(CDOID id)`
`static boolean` `CDOIDUtil.isNull(CDOID id)`
`static void` `CDOIDUtil.write(java.lang.StringBuilder builder, CDOID id)` Format of the uri fragment.

Uses of CDOID in org.eclipse.emf.cdo.common.io

Methods in org.eclipse.emf.cdo.common.io that return CDOID
`CDOID` `CDODataInput.readCDOID()`

Methods in org.eclipse.emf.cdo.common.io with parameters of type CDOID
`void` `CDODataOutput.writeCDOID(CDOID id)`

Uses of CDOID in org.eclipse.emf.cdo.common.revision

Methods in org.eclipse.emf.cdo.common.revision that return CDOID
`CDOID` `CDORevision.getID()`
`CDOID` `CDORevisionData.getResourceID()`
`CDOID` `CDORevisionResolver.getResourceID(CDOID folderID, java.lang.String name, long timeStamp)`

Methods in org.eclipse.emf.cdo.common.revision with parameters of type CDOID
`boolean` `CDORevisionResolver.containsRevision(CDOID id)`
`boolean` `CDORevisionResolver.containsRevisionByTime(CDOID id, long timeStamp)`
`boolean` `CDORevisionResolver.containsRevisionByVersion(CDOID id, int version)`
`static CDORevision` `CDORevisionUtil.createRevision(org.eclipse.emf.ecore.EClass eClass, CDOID id)`
`CDORevision` `CDORevisionFactory.createRevision(org.eclipse.emf.ecore.EClass eClass, CDOID id)`
`org.eclipse.emf.ecore.EClass` `CDORevisionResolver.getObjectType(CDOID id)`
`CDOID` `CDORevisionResolver.getResourceID(CDOID folderID, java.lang.String name, long timeStamp)`
`CDORevision` `CDORevisionResolver.getRevision(CDOID id, int referenceChunk)`
`CDORevision` `CDORevisionResolver.getRevision(CDOID id, int referenceChunk, boolean loadOnDemand)`
`CDORevision` `CDORevisionResolver.getRevisionByTime(CDOID id, int referenceChunk, long timeStamp)`
`CDORevision` `CDORevisionResolver.getRevisionByTime(CDOID id, int referenceChunk, long timeStamp, boolean loadOnDemand)`
`CDORevision` `CDORevisionResolver.getRevisionByVersion(CDOID id, int referenceChunk, int version)`
`CDORevision` `CDORevisionResolver.getRevisionByVersion(CDOID id, int referenceChunk, int version, boolean loadOnDemand)`

Method parameters in org.eclipse.emf.cdo.common.revision with type arguments of type CDOID
`java.util.List<CDORevision>` `CDORevisionResolver.getRevisions(java.util.Collection<CDOID> ids, int referenceChunk)`
`java.util.List<CDORevision>` `CDORevisionResolver.getRevisionsByTime(java.util.Collection<CDOID> ids, int referenceChunk, long timeStamp, boolean loadMissingRevisions)`
`static java.lang.Object` `CDORevisionUtil.remapID(java.lang.Object value, java.util.Map<CDOIDTemp,CDOID> idMappings)`

Uses of CDOID in org.eclipse.emf.cdo.common.revision.cache

Methods in org.eclipse.emf.cdo.common.revision.cache that return CDOID
`CDOID` `CDORevisionCache.EvictionEvent.getID()`
`CDOID` `CDORevisionCache.getResourceID(CDOID folderID, java.lang.String name, long timeStamp)`

Methods in org.eclipse.emf.cdo.common.revision.cache with parameters of type CDOID
`org.eclipse.emf.ecore.EClass` `CDORevisionCache.getObjectType(CDOID id)`
`CDOID` `CDORevisionCache.getResourceID(CDOID folderID, java.lang.String name, long timeStamp)`
`InternalCDORevision` `CDORevisionCache.getRevision(CDOID id)`
`InternalCDORevision` `CDORevisionCache.getRevisionByTime(CDOID id, long timeStamp)`
`InternalCDORevision` `CDORevisionCache.getRevisionByVersion(CDOID id, int version)`
`InternalCDORevision` `CDORevisionCache.removeRevision(CDOID id, int version)`

Uses of CDOID in org.eclipse.emf.cdo.common.revision.delta

Methods in org.eclipse.emf.cdo.common.revision.delta that return CDOID
`CDOID` `CDORevisionDelta.getID()`
`CDOID` `CDOContainerFeatureDelta.getResourceID()`

Uses of CDOID in org.eclipse.emf.cdo.server

Methods in org.eclipse.emf.cdo.server that return CDOID
`CDOID[]` `IStoreAccessor.CommitContext.getDetachedObjects()` Returns an array of the removed object that are part of the commit operation represented by this `CommitContext`.
`CDOID` `IStoreAccessor.QueryResourcesContext.getFolderID()`
`CDOID` `IStoreAccessor.QueryResourcesContext.ExactMatch.getResourceID()`
`CDOID` `IView.getResourceID(java.lang.String path)`
`CDOID` `IStoreAccessor.readResourceID(CDOID folderID, java.lang.String name, long timeStamp)` Returns the `CDOID` of the resource node with the given folderID and name if a resource with this folderID and name exists in the store, `null` otherwise.

Methods in org.eclipse.emf.cdo.server that return types with arguments of type CDOID
`java.util.Map<CDOIDTemp,CDOID>` `IStoreAccessor.CommitContext.getIDMappings()` Returns an unmodifiable map from all temporary IDs (meta or not) to their persistent counter parts.

Methods in org.eclipse.emf.cdo.server with parameters of type CDOID
`void` `IStoreAccessor.CommitContext.addIDMapping(CDOIDTemp oldID, CDOID newID)`
`boolean` `IStoreAccessor.QueryResourcesContext.addResource(CDOID resourceID)` Adds the CDOID of one resource to the results of the underlying query.
`CDOID` `IStoreAccessor.readResourceID(CDOID folderID, java.lang.String name, long timeStamp)` Returns the `CDOID` of the resource node with the given folderID and name if a resource with this folderID and name exists in the store, `null` otherwise.
`InternalCDORevision` `IStoreAccessor.readRevision(CDOID id, int listChunk, IStoreAccessor.AdditionalRevisionCache cache)` Reads a current revision (i.e. one with revised == 0) from the back-end.
`InternalCDORevision` `IStoreAccessor.readRevisionByTime(CDOID id, int listChunk, IStoreAccessor.AdditionalRevisionCache cache, long timeStamp)` Reads a revision from the back-end that was valid at the given timeStamp.
`InternalCDORevision` `IStoreAccessor.readRevisionByVersion(CDOID id, int listChunk, IStoreAccessor.AdditionalRevisionCache cache, int version)` Reads a revision with the given version from the back-end.

Method parameters in org.eclipse.emf.cdo.server with type arguments of type CDOID
`java.util.List<CDORevision>` `IAudit.setTimeStamp(long timeStamp, java.util.List<CDOID> invalidObjects)`

Uses of CDOID in org.eclipse.emf.cdo.server.db

Methods in org.eclipse.emf.cdo.server.db with parameters of type CDOID
`static long` `CDODBUtil.getLong(CDOID id)` Get the long value of a CDOID (by delegating to `CDOIDUtil.getLong(org.eclipse.emf.cdo.common.id.CDOID)`) In addition, provide a check for external IDs which are not supported by the DBStore
`CDOClassifierRef` `IObjectTypeCache.getObjectType(IDBStoreAccessor accessor, CDOID id)`
`void` `IObjectTypeCache.putObjectType(IDBStoreAccessor accessor, CDOID id, org.eclipse.emf.ecore.EClass type)`
`void` `IObjectTypeCache.removeObjectType(IDBStoreAccessor accessor, CDOID id)`

Uses of CDOID in org.eclipse.emf.cdo.server.db.mapping

Methods in org.eclipse.emf.cdo.server.db.mapping that return types with arguments of type CDOID
`org.eclipse.net4j.util.collection.CloseableIterator<CDOID>` `IMappingStrategy.readObjectIDs(IDBStoreAccessor dbStoreAccessor)` Get an iterator over all instances of objects in the store.

Methods in org.eclipse.emf.cdo.server.db.mapping with parameters of type CDOID
`java.sql.PreparedStatement` `IClassMapping.createResourceQueryStatement(IDBStoreAccessor accessor, CDOID folderId, java.lang.String name, boolean exactMatch, long timeStamp)` Create a prepared statement which returns all IDs of instances of the corresponding class.
`void` `IClassMapping.detachObject(IDBStoreAccessor dbStoreAccessor, CDOID id, long revised, org.eclipse.net4j.util.om.monitor.OMMonitor monitor)` Removes an object from the database.
`void` `IListMapping.objectRevised(IDBStoreAccessor accessor, CDOID id, long revised)` Hook with which a list mapping is notified that a containing object has been revised.
`void` `IListMappingDeltaSupport.processDelta(IDBStoreAccessor accessor, CDOID id, int oldVersion, int newVersion, long created, CDOListFeatureDelta delta)` Process a set of CDOFeatureDeltas for a many-valued feature.
`CDOClassifierRef` `IMappingStrategy.readObjectType(IDBStoreAccessor dbStoreAccessor, CDOID id)` Read the type (i.e. class) of the object referred to by a given ID.

Uses of CDOID in org.eclipse.emf.cdo.server.hibernate.id

Subinterfaces of CDOID in org.eclipse.emf.cdo.server.hibernate.id
`interface` `CDOIDHibernate`

Uses of CDOID in org.eclipse.emf.cdo.session

Methods in org.eclipse.emf.cdo.session that return types with arguments of type CDOID
`java.util.Collection<CDOID>` `CDOSessionInvalidationEvent.getDetachedObjects()` Returns a collection of the `CDOIDs` of the removed objects.

Uses of CDOID in org.eclipse.emf.cdo.spi.common.id

Classes in org.eclipse.emf.cdo.spi.common.id that implement CDOID
`class` `AbstractCDOID`
`class` `AbstractCDOIDInteger`
`class` `AbstractCDOIDLong`
`class` `CDOIDLongImpl`

Methods in org.eclipse.emf.cdo.spi.common.id with parameters of type CDOID
`int` `AbstractCDOID.compareTo(CDOID o)`
`protected int` `CDOIDLongImpl.doCompareTo(CDOID o)`
`protected abstract int` `AbstractCDOID.doCompareTo(CDOID o)`

Uses of CDOID in org.eclipse.emf.cdo.spi.common.model

Methods in org.eclipse.emf.cdo.spi.common.model that return CDOID
`CDOID` `InternalCDOPackageRegistry.MetaInstanceMapper.lookupMetaInstanceID(org.eclipse.emf.ecore.InternalEObject metaInstance)`

Methods in org.eclipse.emf.cdo.spi.common.model that return types with arguments of type CDOID
`java.util.Set<java.util.Map.Entry<CDOID,org.eclipse.emf.ecore.InternalEObject>>` `InternalCDOPackageRegistry.MetaInstanceMapper.getEntrySet()`

Methods in org.eclipse.emf.cdo.spi.common.model with parameters of type CDOID
`org.eclipse.emf.ecore.InternalEObject` `InternalCDOPackageRegistry.MetaInstanceMapper.lookupMetaInstance(CDOID id)`
`void` `InternalCDOPackageRegistry.MetaInstanceMapper.remapMetaInstanceID(CDOID oldID, CDOID newID)`

Uses of CDOID in org.eclipse.emf.cdo.spi.common.revision

Methods in org.eclipse.emf.cdo.spi.common.revision that return CDOID
`CDOID` `AbstractCDORevision.getID()`
`CDOID` `AbstractCDORevision.getResourceID()`

Methods in org.eclipse.emf.cdo.spi.common.revision that return types with arguments of type CDOID
`java.util.Map<CDOIDTemp,CDOID>` `CDOIDMapper.getIDMappings()`

Methods in org.eclipse.emf.cdo.spi.common.revision with parameters of type CDOID
`void` `InternalCDORevision.setID(CDOID id)`
`void` `AbstractCDORevision.setID(CDOID id)`
`void` `InternalCDORevision.setResourceID(CDOID resourceID)`
`void` `AbstractCDORevision.setResourceID(CDOID resourceID)`

Method parameters in org.eclipse.emf.cdo.spi.common.revision with type arguments of type CDOID
`static java.lang.Object` `AbstractCDORevision.remapID(java.lang.Object value, java.util.Map<CDOIDTemp,CDOID> idMappings)`

Constructors in org.eclipse.emf.cdo.spi.common.revision with parameters of type CDOID
`AbstractCDORevision(org.eclipse.emf.ecore.EClass eClass, CDOID id)`

Constructor parameters in org.eclipse.emf.cdo.spi.common.revision with type arguments of type CDOID
`CDOIDMapper(java.util.Map<CDOIDTemp,CDOID> idMappings)`

Uses of CDOID in org.eclipse.emf.cdo.spi.server

Methods in org.eclipse.emf.cdo.spi.server that return CDOID
`CDOID` `LongIDStore.getNextCDOID()`
`CDOID` `StoreAccessor.readResourceID(CDOID folderID, java.lang.String name, long timeStamp)`

Methods in org.eclipse.emf.cdo.spi.server with parameters of type CDOID
`static IStoreAccessor.QueryResourcesContext.ExactMatch` `Store.createExactMatchContext(CDOID folderID, java.lang.String name, long timeStamp)`
`protected abstract void` `StoreAccessor.detachObjects(CDOID[] detachedObjects, long revised, org.eclipse.net4j.util.om.monitor.OMMonitor monitor)`
`CDOID` `StoreAccessor.readResourceID(CDOID folderID, java.lang.String name, long timeStamp)`

Uses of CDOID in org.eclipse.emf.cdo.transaction

Methods in org.eclipse.emf.cdo.transaction that return types with arguments of type CDOID
`java.util.Map<CDOID,CDOObject>` `CDOTransaction.getDetachedObjects()`
`java.util.Collection<CDOID>` `CDOTimeStampContext.getDetachedObjects()`
`java.util.Map<CDOID,CDOObject>` `CDOCommitContext.getDetachedObjects()` Returns a map of the detached `objects` that are to be committed with this commit context.
`java.util.Map<CDOID,CDOObject>` `CDOTransaction.getDirtyObjects()`
`java.util.Map<CDOID,CDOObject>` `CDOCommitContext.getDirtyObjects()` Returns a map of the dirty `objects` that are to be committed with this commit context.
`java.util.Map<CDOIDTemp,CDOID>` `CDOTransactionFinishedEvent.getIDMappings()`
`java.util.Map<CDOID,CDOObject>` `CDOTransaction.getNewObjects()`
`java.util.Map<CDOID,CDOObject>` `CDOCommitContext.getNewObjects()` Returns a map of the new `objects` that are to be committed with this commit context.
`java.util.Map<CDOID,CDOResource>` `CDOTransaction.getNewResources()`
`java.util.Map<CDOID,CDOResource>` `CDOCommitContext.getNewResources()` Returns a map of the new `resources` that are to be committed with this commit context.
`java.util.Map<CDOID,CDORevisionDelta>` `CDOTransaction.getRevisionDeltas()`
`java.util.Map<CDOID,CDORevisionDelta>` `CDOCommitContext.getRevisionDeltas()` Returns a map of the `revision deltas` that are to be committed with this commit context.

Uses of CDOID in org.eclipse.emf.cdo.util

Methods in org.eclipse.emf.cdo.util that return CDOID
`static CDOID` `CDOURIUtil.convertExternalCDOID(org.eclipse.emf.common.util.URI baseURI, CDOID newCDOID)` Converting temporary CDOID to External CDOID e.g.: baseURI = cdo://2a57dfcf-8f97-4d39-8e17-9d99ae5c4b3c/resB#5/2 newCDOID = OID2 return = cdo://2a57dfcf-8f97-4d39-8e17-9d99ae5c4b3c/resB#1/2

Methods in org.eclipse.emf.cdo.util with parameters of type CDOID
`static CDOID` `CDOURIUtil.convertExternalCDOID(org.eclipse.emf.common.util.URI baseURI, CDOID newCDOID)` Converting temporary CDOID to External CDOID e.g.: baseURI = cdo://2a57dfcf-8f97-4d39-8e17-9d99ae5c4b3c/resB#5/2 newCDOID = OID2 return = cdo://2a57dfcf-8f97-4d39-8e17-9d99ae5c4b3c/resB#1/2

Constructors in org.eclipse.emf.cdo.util with parameters of type CDOID
`InvalidObjectException(CDOID id)`
`ObjectNotFoundException(CDOID id)`

Uses of CDOID in org.eclipse.emf.cdo.view

Methods in org.eclipse.emf.cdo.view that return CDOID
`CDOID` `CDOFetchRuleManager.getContext()` TODO Simon: JavaDoc

Methods in org.eclipse.emf.cdo.view that return types with arguments of type CDOID
`java.util.Collection<CDOID>` `CDORevisionPrefetchingPolicy.loadAhead(CDORevisionManager revisionManager, org.eclipse.emf.ecore.EObject targetObject, org.eclipse.emf.ecore.EStructuralFeature feature, CDOList list, int accessIndex, CDOID accessID)`

Methods in org.eclipse.emf.cdo.view with parameters of type CDOID
`CDOObject` `CDOView.getObject(CDOID id)` Returns the object for the given CDOID.
`CDOObject` `CDOView.getObject(CDOID id, boolean loadOnDemand)` Returns the object for the given CDOID.
`boolean` `CDOView.isObjectRegistered(CDOID id)` Returns `true` if an `object` with the given `id` is currently registered in this view, `false` otherwise.
`java.util.Collection<CDOID>` `CDORevisionPrefetchingPolicy.loadAhead(CDORevisionManager revisionManager, org.eclipse.emf.ecore.EObject targetObject, org.eclipse.emf.ecore.EStructuralFeature feature, CDOList list, int accessIndex, CDOID accessID)`

Method parameters in org.eclipse.emf.cdo.view with type arguments of type CDOID
`java.util.List<CDOFetchRule>` `CDOFetchRuleManager.getFetchRules(java.util.Collection<CDOID> ids)` TODO Simon: JavaDoc

Uses of CDOID in org.eclipse.emf.spi.cdo

Methods in org.eclipse.emf.spi.cdo that return CDOID
`CDOID` `InternalCDOView.getResourceNodeID(java.lang.String path)`

Methods in org.eclipse.emf.spi.cdo that return types with arguments of type CDOID
`java.util.Map<CDOIDTemp,CDOID>` `CDOSessionProtocol.CommitTransactionResult.getIDMappings()`

Methods in org.eclipse.emf.spi.cdo with parameters of type CDOID
`void` `CDOSessionProtocol.CommitTransactionResult.addIDMapping(CDOIDTemp oldID, CDOID newID)`
`void` `InternalCDOObject.cdoInternalSetID(CDOID id)`
`InternalCDORevision` `InternalCDOView.getRevision(CDOID id, boolean loadOnDemand)`
`boolean` `InternalCDOView.hasSubscription(CDOID id)`
`InternalCDORevision` `CDOSessionProtocol.loadRevisionByVersion(CDOID id, int referenceChunk, int version)`
`void` `InternalCDOView.remapObject(CDOID oldID)`
`InternalCDOObject` `InternalCDOView.removeObject(CDOID id)`

Method parameters in org.eclipse.emf.spi.cdo with type arguments of type CDOID
`void` `CDOSessionProtocol.changeSubscription(int viewId, java.util.List<CDOID> cdoIDs, boolean subscribeMode, boolean clear)`
`void` `InternalCDOView.getCDOIDAndVersion(java.util.Map<CDOID,CDOIDAndVersion> uniqueObjects, java.util.Collection<? extends CDOObject> cdoObjects)`
`void` `InternalCDOView.handleChangeSubscription(java.util.Collection<CDORevisionDelta> deltas, java.util.Collection<CDOID> detachedObjects)`
`void` `InternalCDOSession.handleCommitNotification(long timeStamp, java.util.Collection<CDOPackageUnit> newPackageUnits, java.util.Set<CDOIDAndVersion> dirtyOIDs, java.util.Collection<CDOID> detachedObjects, java.util.Collection<CDORevisionDelta> deltas, InternalCDOView excludedView)`
`java.util.Set<CDOObject>` `InternalCDOView.handleInvalidation(long timeStamp, java.util.Set<CDOIDAndVersion> dirtyOIDs, java.util.Collection<CDOID> detachedOIDs)` Returns the conflicting objects.
`java.util.Set<CDOObject>` `InternalCDOView.handleInvalidationWithoutNotification(java.util.Set<CDOIDAndVersion> dirtyOIDs, java.util.Collection<CDOID> detachedOIDs, java.util.Set<InternalCDOObject> dirtyObjects, java.util.Set<InternalCDOObject> detachedObjects)`
`void` `InternalCDOSession.handleSyncResponse(long timestamp, java.util.Collection<CDOPackageUnit> newPackageUnits, java.util.Set<CDOIDAndVersion> dirtyOIDs, java.util.Collection<CDOID> detachedObjects)`
`void` `InternalCDOSession.handleUpdateRevision(long timeStamp, java.util.Set<CDOIDAndVersion> dirtyOIDs, java.util.Collection<CDOID> detachedObjects)` In some cases we need to sync without propagating event.
`java.util.List<InternalCDORevision>` `CDOSessionProtocol.loadRevisions(java.util.Collection<CDOID> ids, int referenceChunk)`
`java.util.List<InternalCDORevision>` `CDOSessionProtocol.loadRevisionsByTime(java.util.Collection<CDOID> ids, int referenceChunk, long timeStamp)`
`void` `CDOSessionProtocol.lockObjects(CDOView view, java.util.Map<CDOID,CDOIDAndVersion> objects, long timeout, org.eclipse.net4j.util.concurrent.RWLockManager.LockType lockType)`
`void` `CDOSessionProtocol.setPassiveUpdate(java.util.Map<CDOID,CDOIDAndVersion> idAndVersions, int initialChunkSize, boolean passiveUpdateEnabled)`
`java.util.Collection<CDOTimeStampContext>` `CDOSessionProtocol.syncRevisions(java.util.Map<CDOID,CDOIDAndVersion> allRevisions, int initialChunkSize)`

Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others. All Rights Reserved.