// Path: src/com/rachum/amir/util/index/IndexedElement.java
// public class IndexedElement<T> {
// 	private final T element;
// 	private final int index;
// 
// 	public IndexedElement(final T element, final int index) {
// 		this.element = element;
// 		this.index = index;
// 	}
// 
// 	/**
// 	 * @return the element
// 	 */
// 	public T getElement() {
// 		return element;
// 	}
// 
// 	/**
// 	 * @return the index
// 	 */
// 	public int getIndex() {
// 		return index;
// 	}
// 	
// }
// 
// Path: src/com/rachum/amir/util/index/Indexer.java
// public class Indexer<T> implements Iterable<IndexedElement<T>>, Iterator<IndexedElement<T>> {
// 	private int index = 0;
// 	private final Iterator<T> iterator;
// 
// 	public Indexer(final Iterable<T> wrapped) {
// 		super();
// 		this.iterator = wrapped.iterator();
// 	}
// 
// 	@Override
// 	public Iterator<IndexedElement<T>> iterator() {
// 		return this;
// 	}
// 
// 	@Override
// 	public boolean hasNext() {
// 		return iterator.hasNext();
// 	}
// 
// 	@Override
// 	public IndexedElement<T> next() {
// 		return new IndexedElement<T>(iterator.next(), index++);
// 	}
// 
// 	@Override
// 	public void remove() {
// 		//TODO: index?
// 		//TODO: throw exception?
// 		iterator.remove();
// 	}
// 
// }


import com.rachum.amir.util.index.IndexedElement;
import com.rachum.amir.util.index.Indexer;
import java.util.Arrays;
import java.util.List;
/**
 * 
 */
package com.rachum.amir.util.index.example;



/**
 * @author Rachum
 *
 */
public class Example {

	/**
	 * @param args
	 */
	public static void main(final String[] args) {
		final List<String> list = Arrays.asList("A", "B", "C", "D", "E", "F", "G");
// Path: src/com/rachum/amir/util/index/IndexedElement.java
// public class IndexedElement<T> {
// 	private final T element;
// 	private final int index;
// 
// 	public IndexedElement(final T element, final int index) {
// 		this.element = element;
// 		this.index = index;
// 	}
// 
// 	/**
// 	 * @return the element
// 	 */
// 	public T getElement() {
// 		return element;
// 	}
// 
// 	/**
// 	 * @return the index
// 	 */
// 	public int getIndex() {
// 		return index;
// 	}
// 	
// }
// 
// Path: src/com/rachum/amir/util/index/Indexer.java
// public class Indexer<T> implements Iterable<IndexedElement<T>>, Iterator<IndexedElement<T>> {
// 	private int index = 0;
// 	private final Iterator<T> iterator;
// 
// 	public Indexer(final Iterable<T> wrapped) {
// 		super();
// 		this.iterator = wrapped.iterator();
// 	}
// 
// 	@Override
// 	public Iterator<IndexedElement<T>> iterator() {
// 		return this;
// 	}
// 
// 	@Override
// 	public boolean hasNext() {
// 		return iterator.hasNext();
// 	}
// 
// 	@Override
// 	public IndexedElement<T> next() {
// 		return new IndexedElement<T>(iterator.next(), index++);
// 	}
// 
// 	@Override
// 	public void remove() {
// 		//TODO: index?
// 		//TODO: throw exception?
// 		iterator.remove();
// 	}
// 
// }


// Path: src/com/rachum/amir/util/index/example/Example.java
import com.rachum.amir.util.index.IndexedElement;
import com.rachum.amir.util.index.Indexer;
import java.util.Arrays;
import java.util.List;

/**
 * 
 */
package com.rachum.amir.util.index.example;



/**
 * @author Rachum
 *
 */
public class Example {

	/**
	 * @param args
	 */
	public static void main(final String[] args) {
		final List<String> list = Arrays.asList("A", "B", "C", "D", "E", "F", "G");
		for (final IndexedElement<String> element : new Indexer<String>(list)) {