/*
 * Copyright (c) 2011, 2012, 2014, 2015, 2019 Eike Stepper (Loehne, 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
 */

/**
 * The generated EMF API of the CDO system data types and native annotations.
 */
package org.eclipse.emf.cdo.etypes;
