class EnumeratedReferenceRepository extends NodeRepository<EnumeratedReferenceBlock> {
    private ArrayList<EnumeratedReferenceBlock> referencedEnumeratedReferenceBlocks = new ArrayList<>();

    public static String getType(String text) {<FILL_FUNCTION_BODY>}

    public List<EnumeratedReferenceBlock> getReferencedEnumeratedReferenceBlocks() {
        return referencedEnumeratedReferenceBlocks;
    }

    public EnumeratedReferenceRepository(DataHolder options) {
        //super(options == null ? KeepType.LAST : EnumeratedReferenceExtension.ENUMERATED_REFERENCES_KEEP.getFrom(options));
        super(EnumeratedReferenceExtension.ENUMERATED_REFERENCES_KEEP.get(options));
    }

    @NotNull
    @Override
    public DataKey<EnumeratedReferenceRepository> getDataKey() {
        return EnumeratedReferenceExtension.ENUMERATED_REFERENCES;
    }

    @NotNull
    @Override
    public DataKey<KeepType> getKeepDataKey() {
        return EnumeratedReferenceExtension.ENUMERATED_REFERENCES_KEEP;
    }

    @NotNull
    @Override
    public Set<EnumeratedReferenceBlock> getReferencedElements(Node parent) {
        HashSet<EnumeratedReferenceBlock> references = new HashSet<>();
        visitNodes(parent, value -> {
            if (value instanceof EnumeratedReferenceBase) {
                EnumeratedReferenceBlock reference = ((EnumeratedReferenceBase) value).getReferenceNode(EnumeratedReferenceRepository.this);
                if (reference != null) {
                    references.add(reference);
                }
            }
        }, EnumeratedReferenceText.class, EnumeratedReferenceLink.class);
        return references;
    }
}

        int pos = text.lastIndexOf(':');
        if (pos > 0) {
            return text.subSequence(0, pos).toString();
        } else {
            // use empty type
            return EnumeratedReferences.EMPTY_TYPE;
        }
    
<methods>public void <init>(@Nullable KeepType) ,public void clear() ,public boolean containsKey(@NotNull Object) ,public boolean containsValue(java.lang.Object) ,public @NotNull Set<Map.Entry<String,EnumeratedReferenceBlock>> entrySet() ,public boolean equals(java.lang.Object) ,public @Nullable EnumeratedReferenceBlock get(@NotNull Object) ,public abstract @NotNull DataKey<? extends NodeRepository<EnumeratedReferenceBlock>> getDataKey() ,public @Nullable EnumeratedReferenceBlock getFromRaw(@NotNull CharSequence) ,public abstract @NotNull DataKey<KeepType> getKeepDataKey() ,public abstract @NotNull Set<EnumeratedReferenceBlock> getReferencedElements(com.vladsch.flexmark.util.ast.Node) ,public @NotNull Collection<EnumeratedReferenceBlock> getValues() ,public int hashCode() ,public boolean isEmpty() ,public @NotNull Set<String> keySet() ,public @NotNull String normalizeKey(@NotNull CharSequence) ,public @Nullable EnumeratedReferenceBlock put(@NotNull String, @NotNull EnumeratedReferenceBlock) ,public void putAll(@NotNull Map<? extends String,? extends EnumeratedReferenceBlock>) ,public @Nullable EnumeratedReferenceBlock putRawKey(@NotNull CharSequence, @NotNull EnumeratedReferenceBlock) ,public @Nullable EnumeratedReferenceBlock remove(@NotNull Object) ,public int size() ,public static boolean transferReferences(@NotNull NodeRepository<T>, @NotNull NodeRepository<T>, boolean, @Nullable Map<String,String>) ,public @NotNull List<EnumeratedReferenceBlock> values() <variables>protected final non-sealed com.vladsch.flexmark.util.ast.KeepType keepType,protected final ArrayList<com.vladsch.flexmark.ext.enumerated.reference.EnumeratedReferenceBlock> nodeList,protected final Map<java.lang.String,com.vladsch.flexmark.ext.enumerated.reference.EnumeratedReferenceBlock> nodeMap