AnnotatedText implements Serializable { @SuppressWarnings("unchecked") public ListAttribute<LayoutRegion> getLayoutRegions() { return (ListAttribute<LayoutRegion>) attributes.get(AttributeKey.LAYOUT_REGION.key()); } AnnotatedText(CharSequence data,
                  Map<String, BaseAttribute> attributes,
                  Map<String, List<String>> documentMetadata,
                  /*
                   * This version is only here as a workaround for https://github.com/FasterXML/jackson-databind/issues/1118
                   * It would be better if it was only mentioned in the mixins. No data arrives here, it just
                   * allows the mixin to be matched with the existence of a version item in the json.
                   */
                  String version); CharSequence getData(); Map<String, List<String>> getDocumentMetadata(); Map<String, BaseAttribute> getAttributes(); @SuppressWarnings("unchecked") ListAttribute<Token> getTokens(); @SuppressWarnings("unchecked") ListAttribute<TranslatedTokens> getTranslatedTokens(); @SuppressWarnings("unchecked") ListAttribute<TranslatedData> getTranslatedData(); @SuppressWarnings("unchecked") ListAttribute<LanguageDetection> getLanguageDetectionRegions(); LanguageDetection getWholeTextLanguageDetection(); @SuppressWarnings("unchecked") @Deprecated ListAttribute<EntityMention> getEntityMentions(); @SuppressWarnings("unchecked") ListAttribute<Entity> getEntities(); @SuppressWarnings("unchecked") MapAttribute<LanguageCode, ListAttribute<SimilarTerm>> getSimilarTerms(); @SuppressWarnings("unchecked") ListAttribute<SimilarTerm> getSimilarTerms(LanguageCode languageCode); @SuppressWarnings("unchecked") ListAttribute<RelationshipMention> getRelationshipMentions(); @SuppressWarnings("unchecked") @Deprecated ListAttribute<ResolvedEntity> getResolvedEntities(); @SuppressWarnings("unchecked") ListAttribute<ScriptRegion> getScriptRegions(); @SuppressWarnings("unchecked") ListAttribute<Sentence> getSentences(); @SuppressWarnings("unchecked") ListAttribute<LayoutRegion> getLayoutRegions(); @SuppressWarnings("unchecked") ListAttribute<BaseNounPhrase> getBaseNounPhrases(); @SuppressWarnings("unchecked") ListAttribute<CategorizerResult> getCategorizerResults(); @SuppressWarnings("unchecked") ListAttribute<CategorizerResult> getSentimentResults(); @SuppressWarnings("unchecked") ListAttribute<Dependency> getDependencies(); @SuppressWarnings("unchecked") ListAttribute<CategorizerResult> getTopicResults(); Embeddings getEmbeddings(); @SuppressWarnings("unchecked") ListAttribute<Concept> getConcepts(); @SuppressWarnings("unchecked") ListAttribute<Keyphrase> getKeyphrases(); TransliterationResults getTransliteration(); @Override String toString();  }
@Test public void testLayoutRegions() { final String data = "This is unstructured text. bla bla bla.\nThis\tis\tfragmented\t\text.\n"; AnnotatedText.Builder builder = new AnnotatedText.Builder().data(data); ListAttribute.Builder<LayoutRegion> layoutRegionBuilder = new ListAttribute.Builder<>(LayoutRegion.class); LayoutRegion.Builder dtrBuilder = new LayoutRegion.Builder(0, 41, LayoutRegion.Layout.UNSTRUCTURED); layoutRegionBuilder.add(dtrBuilder.build()); dtrBuilder = new LayoutRegion.Builder(42, 70, LayoutRegion.Layout.STRUCTURED); layoutRegionBuilder.add(dtrBuilder.build()); builder.layoutRegions(layoutRegionBuilder.build()); AnnotatedText text = builder.build(); ListAttribute<LayoutRegion> layoutRegions = text.getLayoutRegions(); assertEquals(0, layoutRegions.get(0).getStartOffset()); assertEquals(41, layoutRegions.get(0).getEndOffset()); assertEquals(42, layoutRegions.get(1).getStartOffset()); assertEquals(70, layoutRegions.get(1).getEndOffset()); }