// Path: language/src/com/infdot/analysis/language/expression/Identifier.java
// public class Identifier extends Expression {
// 	private String name;
// 
// 	public Identifier(String name) {
// 		this.name = name;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return name;
// 	}
// 
// 	@Override
// 	public void collectVariables(Set<Identifier> variables) {
// 		variables.add(this);
// 	}
// 
// 	@Override
// 	public <V> V visit(AbstractExpressionVisitor<V> visitor) {
// 		return visitor.visitIdentifier(this);
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 	
// }
// 
// Path: src/com/infdot/analysis/util/Transform.java
// public interface Transform<T1, T2> {
// 	T2 apply(T1 o);
// }


import com.infdot.analysis.language.expression.Identifier;
import com.infdot.analysis.util.Transform;
package com.infdot.analysis.examples;


/**
 * Helper class to access variable name.
 * 
 * @author Raivo Laanemets
 */
public class VariableNameTransform implements Transform<Identifier, String> {

	@Override
	public String apply(Identifier o) {
// Path: language/src/com/infdot/analysis/language/expression/Identifier.java
// public class Identifier extends Expression {
// 	private String name;
// 
// 	public Identifier(String name) {
// 		this.name = name;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return name;
// 	}
// 
// 	@Override
// 	public void collectVariables(Set<Identifier> variables) {
// 		variables.add(this);
// 	}
// 
// 	@Override
// 	public <V> V visit(AbstractExpressionVisitor<V> visitor) {
// 		return visitor.visitIdentifier(this);
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 	
// }
// 
// Path: src/com/infdot/analysis/util/Transform.java
// public interface Transform<T1, T2> {
// 	T2 apply(T1 o);
// }


// Path: src/com/infdot/analysis/examples/VariableNameTransform.java
import com.infdot.analysis.language.expression.Identifier;
import com.infdot.analysis.util.Transform;

package com.infdot.analysis.examples;


/**
 * Helper class to access variable name.
 * 
 * @author Raivo Laanemets
 */
public class VariableNameTransform implements Transform<Identifier, String> {

	@Override
	public String apply(Identifier o) {
		return o.getName();