// ExecutableManager.java
package org.eclipse.stem.jobs.execution;

/*******************************************************************************
 * Copyright (c) 2008 IBM Corporation 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:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/

/**
 * This class is extended by classes the manage the life-cycle of
 * {@link IExecutable}s.
 */
public abstract class ExecutableManager {
	// Nothing
} // ExecutableManager
