/**
 * <copyright>
 * </copyright>
 *
 * $Id: CirculatingItem.java,v 1.1 2006/08/14 05:08:58 mtaal Exp $
 */
package extlibrary;

/**
 * <!-- begin-user-doc --> A representation of the model object '<em><b>Circulating Item</b></em>'.
 * <!-- end-user-doc -->
 * 
 * 
 * @see extlibrary.ExtlibraryPackage#getCirculatingItem()
 * @model abstract="true"
 * @generated
 */
public interface CirculatingItem extends Item, Lendable {
} // CirculatingItem