public KAFDocument split(List<WF> wfs) {
List<Term> terms = this.annotationContainer.getTermsByWFs(wfs);
List<Dep> deps = this.annotationContainer.getDepsByTerms(terms);
List<Chunk> chunks = this.annotationContainer.getChunksByTerms(terms);
List<Entity> entities = this.annotationContainer.getEntitiesByTerms(terms);
List<Coref> corefs = this.annotationContainer.getCorefsByTerms(terms);
List<Timex3> timeExs = this.annotationContainer.getTimeExsByWFs(wfs);
List<Feature> properties = this.annotationContainer.getPropertiesByTerms(terms);
List<Feature> categories = this.annotationContainer.getCategoriesByTerms(terms);
List<Predicate> predicates = this.annotationContainer.getPredicatesByTerms(terms);
List<Relational> relationals = new ArrayList<Relational>();
relationals.addAll(properties);
relationals.addAll(categories);
relationals.addAll(entities);
List<Relation> relations = this.annotationContainer.getRelationsByRelationals(relationals);
KAFDocument newKaf = new KAFDocument(this.getLang(), this.getVersion());
newKaf.addLinguisticProcessors(this.getLinguisticProcessors());
this.copyAnnotationsToKAF(newKaf, wfs, terms, deps, chunks, entities, corefs, timeExs, properties, categories, new ArrayList<Opinion>(), relations, predicates);
return newKaf;
}