/*
 * Copyright (c) 2011, 2012 Eike Stepper (Berlin, Germany) and others. All rights reserved. This program and the
 * accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this
 * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html Contributors: Eike Stepper - initial API
 * and implementation
 */

/**
 * Common concepts for dealing with branches.
 *
 * @apiviz.exclude .*\.IContainer
 * @apiviz.exclude .*\.INotifier
 * @apiviz.exclude .*Event
 */
package org.eclipse.emf.cdo.common.branch;
