// Path: src/test/java/codemining/java/codeutils/JavaAstExtractorTest.java
// public class JavaAstExtractorTest {
// 
// 	String classContent;
// 	String methodContent;
// 
// 	@Before
// 	public void setUp() throws IOException {
// 		classContent = FileUtils.readFileToString(new File(
// 				JavaAstExtractorTest.class.getClassLoader()
// 						.getResource("SampleClass.txt").getFile()));
// 
// 		methodContent = FileUtils.readFileToString(new File(
// 				JavaAstExtractorTest.class.getClassLoader()
// 						.getResource("SampleMethod.txt").getFile()));
// 	}
// 
// 	/**
// 	 * Test method for
// 	 * {@link codemining.java.codeutils.JavaASTExtractor#getBestEffortAst(java.lang.String)}
// 	 * .
// 	 * 
// 	 * @throws IOException
// 	 */
// 	@Test
// 	public void testGetASTString() {
// 		final JavaASTExtractor ex = new JavaASTExtractor(false);
// 		assertTrue(classContent.length() > 0);
// 		final ASTNode classCU = ex.getASTNode(classContent,
// 				ParseType.COMPILATION_UNIT);
// 		assertTrue(snippetMatchesAstTokens(classContent, classCU));
// 
// 		assertTrue(methodContent.length() > 0);
// 		final ASTNode methodCU = ex.getASTNode(methodContent,
// 				ParseType.METHOD);
// 		assertTrue(snippetMatchesAstTokens(methodContent, methodCU));
// 	}
// 
// 	private boolean snippetMatchesAstTokens(final String snippetCode,
// 			final ASTNode node) {
// 		final JavaTokenizer tokenizer = new JavaTokenizer();
// 		final List<String> snippetTokens = tokenizer
// 				.tokenListFromCode(snippetCode.toCharArray());
// 		final List<String> astTokens = tokenizer.tokenListFromCode(node
// 				.toString().toCharArray());
// 		return astTokens.equals(snippetTokens);
// 	}
// }
// 
// Path: src/main/java/codemining/languagetools/bindings/TokenNameBinding.java
// public class TokenNameBinding implements Serializable {
// 	private static final long serialVersionUID = 2020613810485746430L;
// 
// 	/**
// 	 * The tokens of source code.
// 	 */
// 	public final List<String> sourceCodeTokens;
// 
// 	/**
// 	 * The positions in sourceCodeTokens that contain the given name.
// 	 */
// 	public final Set<Integer> nameIndexes;
// 
// 	/**
// 	 * Features of the binding
// 	 */
// 	public final Set<String> features;
// 
// 	public TokenNameBinding(final Set<Integer> nameIndexes,
// 			final List<String> sourceCodeTokens, final Set<String> features) {
// 		checkArgument(nameIndexes.size() > 0);
// 		checkArgument(sourceCodeTokens.size() > 0);
// 		this.nameIndexes = Collections.unmodifiableSet(nameIndexes);
// 		this.sourceCodeTokens = Collections.unmodifiableList(sourceCodeTokens);
// 		this.features = features;
// 	}
// 
// 	@Override
// 	public boolean equals(final Object obj) {
// 		if (this == obj) {
// 			return true;
// 		}
// 		if (obj == null) {
// 			return false;
// 		}
// 		if (getClass() != obj.getClass()) {
// 			return false;
// 		}
// 		final TokenNameBinding other = (TokenNameBinding) obj;
// 		return Objects.equal(nameIndexes, other.nameIndexes)
// 				&& Objects.equal(features, other.features)
// 				&& Objects.equal(sourceCodeTokens, other.sourceCodeTokens);
// 	}
// 
// 	public String getName() {
// 		return sourceCodeTokens.get(nameIndexes.iterator().next());
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return Objects.hashCode(sourceCodeTokens, nameIndexes, features);
// 	}
// 
// 	/**
// 	 * Rename this name to the given binding. The source code tokens included in
// 	 * this struct, now represent the new structure.
// 	 *
// 	 * @param name
// 	 * @return
// 	 */
// 	public TokenNameBinding renameTo(final String name) {
// 		final List<String> renamedCode = Lists.newArrayList(sourceCodeTokens);
// 		for (final int position : nameIndexes) {
// 			renamedCode.set(position, name);
// 		}
// 		return new TokenNameBinding(nameIndexes, renamedCode, features);
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return getName() + nameIndexes + " " + features;
// 	}
// }


import static org.junit.Assert.assertEquals;
import java.io.File;
import java.io.IOException;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import codemining.java.codeutils.JavaAstExtractorTest;
import codemining.languagetools.bindings.TokenNameBinding;
package codemining.java.codeutils.binding;





public class JavaExactVariableBindingsExtractorTest {

	File classContent;

	File classContent2;

	@Before
	public void setUp() throws IOException {
// Path: src/test/java/codemining/java/codeutils/JavaAstExtractorTest.java
// public class JavaAstExtractorTest {
// 
// 	String classContent;
// 	String methodContent;
// 
// 	@Before
// 	public void setUp() throws IOException {
// 		classContent = FileUtils.readFileToString(new File(
// 				JavaAstExtractorTest.class.getClassLoader()
// 						.getResource("SampleClass.txt").getFile()));
// 
// 		methodContent = FileUtils.readFileToString(new File(
// 				JavaAstExtractorTest.class.getClassLoader()
// 						.getResource("SampleMethod.txt").getFile()));
// 	}
// 
// 	/**
// 	 * Test method for
// 	 * {@link codemining.java.codeutils.JavaASTExtractor#getBestEffortAst(java.lang.String)}
// 	 * .
// 	 * 
// 	 * @throws IOException
// 	 */
// 	@Test
// 	public void testGetASTString() {
// 		final JavaASTExtractor ex = new JavaASTExtractor(false);
// 		assertTrue(classContent.length() > 0);
// 		final ASTNode classCU = ex.getASTNode(classContent,
// 				ParseType.COMPILATION_UNIT);
// 		assertTrue(snippetMatchesAstTokens(classContent, classCU));
// 
// 		assertTrue(methodContent.length() > 0);
// 		final ASTNode methodCU = ex.getASTNode(methodContent,
// 				ParseType.METHOD);
// 		assertTrue(snippetMatchesAstTokens(methodContent, methodCU));
// 	}
// 
// 	private boolean snippetMatchesAstTokens(final String snippetCode,
// 			final ASTNode node) {
// 		final JavaTokenizer tokenizer = new JavaTokenizer();
// 		final List<String> snippetTokens = tokenizer
// 				.tokenListFromCode(snippetCode.toCharArray());
// 		final List<String> astTokens = tokenizer.tokenListFromCode(node
// 				.toString().toCharArray());
// 		return astTokens.equals(snippetTokens);
// 	}
// }
// 
// Path: src/main/java/codemining/languagetools/bindings/TokenNameBinding.java
// public class TokenNameBinding implements Serializable {
// 	private static final long serialVersionUID = 2020613810485746430L;
// 
// 	/**
// 	 * The tokens of source code.
// 	 */
// 	public final List<String> sourceCodeTokens;
// 
// 	/**
// 	 * The positions in sourceCodeTokens that contain the given name.
// 	 */
// 	public final Set<Integer> nameIndexes;
// 
// 	/**
// 	 * Features of the binding
// 	 */
// 	public final Set<String> features;
// 
// 	public TokenNameBinding(final Set<Integer> nameIndexes,
// 			final List<String> sourceCodeTokens, final Set<String> features) {
// 		checkArgument(nameIndexes.size() > 0);
// 		checkArgument(sourceCodeTokens.size() > 0);
// 		this.nameIndexes = Collections.unmodifiableSet(nameIndexes);
// 		this.sourceCodeTokens = Collections.unmodifiableList(sourceCodeTokens);
// 		this.features = features;
// 	}
// 
// 	@Override
// 	public boolean equals(final Object obj) {
// 		if (this == obj) {
// 			return true;
// 		}
// 		if (obj == null) {
// 			return false;
// 		}
// 		if (getClass() != obj.getClass()) {
// 			return false;
// 		}
// 		final TokenNameBinding other = (TokenNameBinding) obj;
// 		return Objects.equal(nameIndexes, other.nameIndexes)
// 				&& Objects.equal(features, other.features)
// 				&& Objects.equal(sourceCodeTokens, other.sourceCodeTokens);
// 	}
// 
// 	public String getName() {
// 		return sourceCodeTokens.get(nameIndexes.iterator().next());
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return Objects.hashCode(sourceCodeTokens, nameIndexes, features);
// 	}
// 
// 	/**
// 	 * Rename this name to the given binding. The source code tokens included in
// 	 * this struct, now represent the new structure.
// 	 *
// 	 * @param name
// 	 * @return
// 	 */
// 	public TokenNameBinding renameTo(final String name) {
// 		final List<String> renamedCode = Lists.newArrayList(sourceCodeTokens);
// 		for (final int position : nameIndexes) {
// 			renamedCode.set(position, name);
// 		}
// 		return new TokenNameBinding(nameIndexes, renamedCode, features);
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return getName() + nameIndexes + " " + features;
// 	}
// }


// Path: src/test/java/codemining/java/codeutils/binding/JavaExactVariableBindingsExtractorTest.java
import static org.junit.Assert.assertEquals;
import java.io.File;
import java.io.IOException;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import codemining.java.codeutils.JavaAstExtractorTest;
import codemining.languagetools.bindings.TokenNameBinding;

package codemining.java.codeutils.binding;





public class JavaExactVariableBindingsExtractorTest {

	File classContent;

	File classContent2;

	@Before
	public void setUp() throws IOException {
		classContent = new File(JavaAstExtractorTest.class.getClassLoader()