// Path: src/main/java/ixa/kaflib/KAFDocument.java
//    public enum AnnotationType {
// WF,
// TERM,
// MW,
// COMPONENT,
// SENTIMENT,
// ENTITY,
// CHUNK,
// DEP,
// TREE,
// NON_TERMINAL,
// TERMINAL,
// EDGE,
// COREF,
// OPINION, 		/* DOC_LVL */
// OPINION_HOLDER,
// OPINION_TARGET,
// OPINION_EXPRESSION,
// CLINK,
// TLINK,
// PREDICATE_ANCHOR,
// PREDICATE,
// ROLE,
// TIMEX3,
// FACTUALITY,
// FACTVALUE,
// MARK,
// PROPERTY,
// CATEGORY,
// LINKED_ENTITY,
// RELATION,
// TOPIC,
// STATEMENT,
// STATEMENT_TARGET,
// STATEMENT_SOURCE,
// STATEMENT_CUE,
//    }
// 
// Path: src/main/java/ixa/kaflib/KAFDocument.java
//    static class Utils {
// static boolean areEquals(Object a, Object b) {
//     return (a == null) ? (b == null) : a.equals(b);
// }
//    }


import ixa.kaflib.KAFDocument.AnnotationType;
import ixa.kaflib.KAFDocument.Utils;
import java.util.HashMap;
import java.util.Map;
import java.util.ArrayList;
import java.util.List;
package ixa.kaflib;




public class Factuality extends IdentifiableAnnotation implements SentenceLevelAnnotation {
    
    private Span<Term> span;
    private List<FactVal> factVals;
    
    Factuality(String id, Span<Term> span) {
	super(id);
	this.span = span;
	this.factVals = new ArrayList<FactVal>();
    }
    
    public String getId() {
	return this.id;
    }
    
    public Span<Term> getSpan() {
	return this.span;
    }
    
    public List<FactVal> getFactVals() {
	return this.factVals;
    }
    
    public void addFactVal(FactVal factVal) {
	this.factVals.add(factVal);
    }
    
    @Override
    public Integer getPara() {
	return this.span.getFirstTarget().getPara();
    }
    
    @Override
    public Integer getSent() {
	return this.span.getFirstTarget().getSent();
    }
    
    @Override
// Path: src/main/java/ixa/kaflib/KAFDocument.java
//    public enum AnnotationType {
// WF,
// TERM,
// MW,
// COMPONENT,
// SENTIMENT,
// ENTITY,
// CHUNK,
// DEP,
// TREE,
// NON_TERMINAL,
// TERMINAL,
// EDGE,
// COREF,
// OPINION, 		/* DOC_LVL */
// OPINION_HOLDER,
// OPINION_TARGET,
// OPINION_EXPRESSION,
// CLINK,
// TLINK,
// PREDICATE_ANCHOR,
// PREDICATE,
// ROLE,
// TIMEX3,
// FACTUALITY,
// FACTVALUE,
// MARK,
// PROPERTY,
// CATEGORY,
// LINKED_ENTITY,
// RELATION,
// TOPIC,
// STATEMENT,
// STATEMENT_TARGET,
// STATEMENT_SOURCE,
// STATEMENT_CUE,
//    }
// 
// Path: src/main/java/ixa/kaflib/KAFDocument.java
//    static class Utils {
// static boolean areEquals(Object a, Object b) {
//     return (a == null) ? (b == null) : a.equals(b);
// }
//    }


// Path: src/main/java/ixa/kaflib/Factuality.java
import ixa.kaflib.KAFDocument.AnnotationType;
import ixa.kaflib.KAFDocument.Utils;
import java.util.HashMap;
import java.util.Map;
import java.util.ArrayList;
import java.util.List;

package ixa.kaflib;




public class Factuality extends IdentifiableAnnotation implements SentenceLevelAnnotation {
    
    private Span<Term> span;
    private List<FactVal> factVals;
    
    Factuality(String id, Span<Term> span) {
	super(id);
	this.span = span;
	this.factVals = new ArrayList<FactVal>();
    }
    
    public String getId() {
	return this.id;
    }
    
    public Span<Term> getSpan() {
	return this.span;
    }
    
    public List<FactVal> getFactVals() {
	return this.factVals;
    }
    
    public void addFactVal(FactVal factVal) {
	this.factVals.add(factVal);
    }
    
    @Override
    public Integer getPara() {
	return this.span.getFirstTarget().getPara();
    }
    
    @Override
    public Integer getSent() {
	return this.span.getFirstTarget().getSent();
    }
    
    @Override
    Map<AnnotationType, List<Annotation>> getReferencedAnnotations() {