// Path: src/main/java/au/edu/jcu/v4l4j/exceptions/StateException.java
// public class StateException extends RuntimeException {
// 
// 	private static final long serialVersionUID = 1351714754008657462L;
// 
// 	public StateException(String message) {
// 		super(message);
// 	}
// 
// 	public StateException(String message, Throwable throwable) {
// 		super(message, throwable);
// 	}
// 
// 	public StateException(Throwable throwable) {
// 		super(throwable);
// 	}
// }


import au.edu.jcu.v4l4j.exceptions.StateException;
	 * @return the index of this tuner
	 * @throws StateException if the associated frame grabber has been released
	 * and this tuner must not be used anymore.
	 */
	public synchronized int getIndex(){
		checkRelease();
		return index;
	}
	
	/**
	 * This method returns the {@link TunerInfo} object associated with this 
	 * tuner.
	 * @return the {@link TunerInfo} object associated with this tuner.
	 * @throws StateException if the associated frame grabber has been released
	 * and this tuner must not be used anymore.
	 */
	public synchronized TunerInfo getInfo(){
		checkRelease();
		return info;
	}
	
	/**
	 * This method releases this tuner.
	 */
	synchronized void release(){
		released = true;
	}
	
	private void checkRelease(){
		if(released)
// Path: src/main/java/au/edu/jcu/v4l4j/exceptions/StateException.java
// public class StateException extends RuntimeException {
// 
// 	private static final long serialVersionUID = 1351714754008657462L;
// 
// 	public StateException(String message) {
// 		super(message);
// 	}
// 
// 	public StateException(String message, Throwable throwable) {
// 		super(message, throwable);
// 	}
// 
// 	public StateException(Throwable throwable) {
// 		super(throwable);
// 	}
// }


// Path: src/main/java/au/edu/jcu/v4l4j/Tuner.java
import au.edu.jcu.v4l4j.exceptions.StateException;

	 * @return the index of this tuner
	 * @throws StateException if the associated frame grabber has been released
	 * and this tuner must not be used anymore.
	 */
	public synchronized int getIndex(){
		checkRelease();
		return index;
	}
	
	/**
	 * This method returns the {@link TunerInfo} object associated with this 
	 * tuner.
	 * @return the {@link TunerInfo} object associated with this tuner.
	 * @throws StateException if the associated frame grabber has been released
	 * and this tuner must not be used anymore.
	 */
	public synchronized TunerInfo getInfo(){
		checkRelease();
		return info;
	}
	
	/**
	 * This method releases this tuner.
	 */
	synchronized void release(){
		released = true;
	}
	
	private void checkRelease(){
		if(released)
			throw new StateException("The frame grabber associated with this " +