/**
 * Copyright (c) 2010, 2019 Mia-Software and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v2.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v20.html
 *  
 *  Contributors:
 *      Nicolas Payneau (Mia-Software) - initial API and implementation
 */
package org.eclipse.modisco.omg.smm;


/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Counting</b></em>'.
 * <!-- end-user-doc -->
 *
 *
 * @see org.eclipse.modisco.omg.smm.SmmPackage#getCounting()
 * @model
 * @generated
 */
public interface Counting extends DirectMeasure {
} // Counting
