/**
 * <copyright>
 * </copyright>
 *
 * $Id: ToolMentor.java,v 1.1 2008/01/15 08:52:07 jtham Exp $
 */
package org.eclipse.epf.xml.uma;


/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Tool Mentor</b></em>'.
 * <!-- end-user-doc -->
 *
 * <!-- begin-model-doc -->
 * A  specific type of guidance that shows how to use a specific tool to accomplish some piece of work a Work Product either in the context of or independent from a Task or Activity.
 * <!-- end-model-doc -->
 *
 *
 * @see org.eclipse.epf.xml.uma.UmaPackage#getToolMentor()
 * @model extendedMetaData="name='ToolMentor' kind='elementOnly'"
 * @generated
 */
public interface ToolMentor extends Guidance {
} // ToolMentor