// Path: src/main/java/com/asher_stern/crf/utilities/MiscellaneousUtilities.java
// public static <T> boolean equalObjects(T t1, T t2)
// {
// 	if (t1==t2) return true;
// 	if ( (t1==null) || (t2==null) ) return false;
// 	return t1.equals(t2);
// }
// 
// Path: src/main/java/com/asher_stern/crf/crf/CrfFeature.java
// public abstract class CrfFeature<K,G> implements Serializable // K = token, G = tag
// {
// 	private static final long serialVersionUID = 5422105702440104947L;
// 	
// 	public abstract double value(K[] sequence, int indexInSequence, G currentTag, G previousTag);
// 	
// 	public abstract boolean equals(Object obj);
// 	public abstract int hashCode();
// }


import static com.asher_stern.crf.utilities.MiscellaneousUtilities.equalObjects;
import com.asher_stern.crf.crf.CrfFeature;
package com.asher_stern.crf.postagging.postaggers.crf.features;



/**
 * A feature that models the transition from one tag to another (possibly the same) tag.
 * 
 * @author Asher Stern
 * Date: Nov 10, 2014
 *
 */
public class TagTransitionFeature extends CrfFeature<String, String>
{
	private static final long serialVersionUID = -61200838311988363L;
	
// Path: src/main/java/com/asher_stern/crf/utilities/MiscellaneousUtilities.java
// public static <T> boolean equalObjects(T t1, T t2)
// {
// 	if (t1==t2) return true;
// 	if ( (t1==null) || (t2==null) ) return false;
// 	return t1.equals(t2);
// }
// 
// Path: src/main/java/com/asher_stern/crf/crf/CrfFeature.java
// public abstract class CrfFeature<K,G> implements Serializable // K = token, G = tag
// {
// 	private static final long serialVersionUID = 5422105702440104947L;
// 	
// 	public abstract double value(K[] sequence, int indexInSequence, G currentTag, G previousTag);
// 	
// 	public abstract boolean equals(Object obj);
// 	public abstract int hashCode();
// }


// Path: src/main/java/com/asher_stern/crf/postagging/postaggers/crf/features/TagTransitionFeature.java
import static com.asher_stern.crf.utilities.MiscellaneousUtilities.equalObjects;
import com.asher_stern.crf.crf.CrfFeature;

package com.asher_stern.crf.postagging.postaggers.crf.features;



/**
 * A feature that models the transition from one tag to another (possibly the same) tag.
 * 
 * @author Asher Stern
 * Date: Nov 10, 2014
 *
 */
public class TagTransitionFeature extends CrfFeature<String, String>
{
	private static final long serialVersionUID = -61200838311988363L;
	
	public TagTransitionFeature(String forPreviousTag, String forCurrentTag)