diff --git a/src/main/java/com/google/devsite/renderer/converters/ClasslikeDocumentableConverter.kt b/src/main/java/com/google/devsite/renderer/converters/ClasslikeDocumentableConverter.kt
index 945bf35..3cf5791 100644
--- a/src/main/java/com/google/devsite/renderer/converters/ClasslikeDocumentableConverter.kt
+++ b/src/main/java/com/google/devsite/renderer/converters/ClasslikeDocumentableConverter.kt
@@ -44,6 +44,8 @@
 import org.jetbrains.dokka.links.DRI
 import org.jetbrains.dokka.links.parent
 import org.jetbrains.dokka.model.DClasslike
+import org.jetbrains.dokka.model.DEnum
+import org.jetbrains.dokka.model.DEnumEntry
 import org.jetbrains.dokka.model.DFunction
 import org.jetbrains.dokka.model.DInterface
 import org.jetbrains.dokka.model.DProperty
@@ -65,6 +67,8 @@
         FunctionDocumentableConverter(displayLanguage, pathProvider, javadocConverter)
     private val propertyConverter =
         PropertyDocumentableConverter(displayLanguage, pathProvider, javadocConverter)
+    private val enumConverter =
+        EnumValueDocumentableConverter(displayLanguage, pathProvider, javadocConverter)
 
     /** @return the classlike component */
     suspend fun classlike(): DevsitePage = coroutineScope {
@@ -83,10 +87,15 @@
         declaredProperties = declaredProperties.sortedBy { it.name }
         inheritedFunctions = inheritedFunctions.sortedBy { it.name }
 
+        val enumValues = (classlike as? DEnum)?.entries.orEmpty().sortedBy { it.name }
+
         val declaredConstructors = (classlike as? WithConstructors)?.constructors.orEmpty()
             .sortedBy { it.parameters.size }
         val annotations = (classlike as? WithExtraProperties<*>)?.annotations().orEmpty()
 
+        val enumValuesSummary = async {
+            enumValuesToSummary(enumValuesTitle(), enumValues)
+        }
         val nestedTypesSummary = async {
             typesToSummary(docsHolder.classlikesFor(classlike))
         }
@@ -121,6 +130,8 @@
             functionsToSummary(protectedMethodsTitle(), declaredFunctions.filter(::isProtected))
         }
 
+        val enumDetails =
+            async { enumValuesToDetail(enumValues) }
         val constants =
             async { propertiesToDetail(declaredProperties.constants()) }
         val publicProperties =
@@ -143,6 +154,10 @@
 
         val allSymbols = listOf(
             nestedTypesSummary.await() to Classlike.SymbolType(nestedTypesTitle(), emptyList()),
+            enumValuesSummary.await() to Classlike.SymbolType(
+                enumValuesTitle(),
+                enumDetails.await()
+            ),
             constantsSummary.await() to Classlike.SymbolType(
                 constantsTitle(),
                 constants.await()
@@ -268,6 +283,22 @@
         }
     }
 
+    private fun enumValuesToSummary(title: String, enumVals: List<DEnumEntry>): SummaryList {
+        val modifierHints = ModifierHints(displayLanguage, isSummary = true, false)
+        val components = enumVals.map { enumConverter.summary(it, modifierHints) }
+        return DefaultSummaryList(
+            SummaryList.Params(
+                header = DefaultTableTitle(
+                    TableTitle.Params(
+                        title = title,
+                        big = true
+                    )
+                ),
+                items = components
+            )
+        )
+    }
+
     private fun propertiesToSummary(name: String, properties: List<DProperty>): SummaryList {
         val modifierHints = ModifierHints(displayLanguage, isSummary = true, isInterface())
         val components = properties.map {
@@ -294,6 +325,13 @@
         }
     }
 
+    private fun enumValuesToDetail(enumValues: List<DEnumEntry>): List<SymbolDetail> {
+        val modifierHints = ModifierHints(displayLanguage, isSummary = false, isInterface())
+        return enumValues.map {
+            enumConverter.detail(it, modifierHints)
+        }
+    }
+
     private suspend fun computeSignature(): ClassSignature {
         val modifiers = if (classlike is WithAbstraction && classlike is WithExtraProperties<*>) {
             classlike.modifiers().modifiersFor(ModifierHints(displayLanguage = displayLanguage))
@@ -488,4 +526,5 @@
     }
 
     private fun constantsTitle() = "Constants"
+    private fun enumValuesTitle() = "Enum Values"
 }
diff --git a/src/main/java/com/google/devsite/renderer/converters/EnumValueDocumentableConverter.kt b/src/main/java/com/google/devsite/renderer/converters/EnumValueDocumentableConverter.kt
new file mode 100644
index 0000000..16e7d87
--- /dev/null
+++ b/src/main/java/com/google/devsite/renderer/converters/EnumValueDocumentableConverter.kt
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.devsite.renderer.converters
+
+import com.google.devsite.components.Raw
+import com.google.devsite.components.impl.DefaultPropertySignature
+import com.google.devsite.components.impl.DefaultRaw
+import com.google.devsite.components.impl.DefaultSymbolDetail
+import com.google.devsite.components.impl.DefaultTwoPaneSummaryItem
+import com.google.devsite.components.symbols.PropertySignature
+import com.google.devsite.components.symbols.SymbolDetail
+import com.google.devsite.components.table.TwoPaneSummaryItem
+import com.google.devsite.renderer.Language
+import com.google.devsite.renderer.impl.paths.FilePathProvider
+import org.jetbrains.dokka.model.DEnumEntry
+
+/** Converts documentable DEnumEntrys into EnumValue components. */
+internal class EnumValueDocumentableConverter(
+    private val displayLanguage: Language,
+    private val pathProvider: FilePathProvider,
+    private val javadocConverter: DocTagConverter
+) {
+    private val paramConverter = ParameterDocumentableConverter(displayLanguage, pathProvider)
+
+    /** @return the enum value summary component */
+    fun summary(enumValue: DEnumEntry, modifierHints: ModifierHints): TwoPaneSummaryItem {
+        val annotations = enumValue.annotations()
+        return DefaultTwoPaneSummaryItem(
+            TwoPaneSummaryItem.Params(
+                title = DefaultRaw(Raw.Params(enumValue.name)),
+                description = javadocConverter.summaryDescription(enumValue, annotations)
+            )
+        )
+    }
+
+    /** @return the enum detail component */
+    fun detail(enumValue: DEnumEntry, hints: ModifierHints): SymbolDetail {
+        val annotations = enumValue.annotations()
+        val projection = paramConverter.componentForProjection(
+            // We need to get a projection representation of the class of the DEnumEmtry
+            // Unfortunately, this is not stored straightforwardly in Jetbrains' architecture
+            // So we know that compareTo is T.compareTo(T other), so we can get the classlike of the
+            // DEnumEntry by looking at the parameter type of its compareTo method
+            enumValue.functions.first { it.name == "compareTo" }.parameters.single().type
+        )
+        return DefaultSymbolDetail(
+            SymbolDetail.Params(
+                displayLanguage = displayLanguage,
+                name = enumValue.name,
+                anchors = enumValue.generateAnchors(),
+                annotations = annotations.annotationComponents(
+                    pathProvider,
+                    displayLanguage,
+                    false
+                ),
+                modifiers = enumValue.getExtraModifiers().modifiersFor(hints),
+                returnType = projection,
+                symbolType = SymbolDetail.SymbolType.PROPERTY,
+                signature = enumValue.signature(false),
+                metadata = javadocConverter.metadata(
+                    doc = enumValue,
+                    returnType = projection,
+                    paramNames = listOf(),
+                    annotations = annotations
+                )
+            )
+        )
+    }
+
+    internal fun DEnumEntry.signature(isSummary: Boolean): PropertySignature {
+        return DefaultPropertySignature(
+            PropertySignature.Params(
+                // TODO(b/168136770): figure out path for default anchors
+                name = pathProvider.linkForReference(dri),
+                receiver = null
+            )
+        )
+    }
+
+    /** Returns anchors for this enum value. */
+    private fun DEnumEntry.generateAnchors(): LinkedHashSet<String> {
+        return linkedSetOf(
+            name
+        )
+    }
+}
diff --git a/src/test/java/com/google/devsite/renderer/converters/ClasslikeDocumentableConverterTest.kt b/src/test/java/com/google/devsite/renderer/converters/ClasslikeDocumentableConverterTest.kt
index 80021f6..9c65ae0 100644
--- a/src/test/java/com/google/devsite/renderer/converters/ClasslikeDocumentableConverterTest.kt
+++ b/src/test/java/com/google/devsite/renderer/converters/ClasslikeDocumentableConverterTest.kt
@@ -17,6 +17,8 @@
 package com.google.devsite.renderer.converters
 
 import com.google.common.truth.Truth.assertThat
+import com.google.devsite.components.Description
+import com.google.devsite.components.Raw
 import com.google.devsite.components.pages.Classlike
 import com.google.devsite.components.pages.DevsitePage
 import com.google.devsite.components.symbols.SymbolSummary
@@ -34,6 +36,7 @@
 import com.google.devsite.testing.ConverterTestBase
 import kotlinx.coroutines.runBlocking
 import org.jetbrains.dokka.model.DModule
+import org.jetbrains.dokka.model.doc.Text
 import org.junit.Ignore
 import org.junit.Test
 import org.junit.runner.RunWith
@@ -323,8 +326,58 @@
         assertThat(classlike.data.signature.data.implements.single().data.name).isEqualTo("A")
     }
 
-    private fun DModule.page(): DevsitePage {
-        val classlike = packages.single().classlikes.single { it.name() == "Foo" }
+    @Test
+    fun `Enum class is rendered and has enum values`() {
+        val page = """
+            |/**
+            | * class level docs
+            | */
+            |enum class AnEnumType {
+            |    /**
+            |     * content being refreshed, which can be a result of
+            |     * invalidation, refresh that may contain content updates, or the initial load.
+            |     */
+            |    REFRESH,
+            |    /**
+            |     * Load at the start
+            |     */
+            |    PREPEND,
+            |    /**
+            |     * Load at the end.
+            |     */
+            |    APPEND
+            |
+            |    fun foo()
+            |}
+        """.render().page(name = "AnEnumType")
+
+        val classlike = page.content<Classlike>()
+        val signature = classlike.data.signature.data
+        val description = (classlike.data.description.first() as Description)
+        val descriptionText = description.data.root.children.first().children.first() as Text
+
+        val enumTable = classlike.data.symbolTypes.first {
+            (it.first as? SummaryList)?.title() == "Enum Values" }.first.items(3) as List
+        val enumOne = enumTable[0].data
+        val enumTwo = enumTable[1].data
+        val enumThree = enumTable[2].data
+
+        assertThat(signature.type).isEqualTo("enum")
+        assertThat(descriptionText.body).isEqualTo("class level docs")
+
+        assertThat((enumOne.title as Raw).data.text).contains("APPEND")
+        assertThat((enumOne.description as Description).data.root.toString())
+            .contains("Load at the end.")
+        assertThat((enumTwo.title as Raw).data.text).contains("PREPEND")
+        assertThat((enumTwo.description as Description).data.root.toString())
+            .contains("Load at the start")
+        assertThat((enumThree.title as Raw).data.text).contains("REFRESH")
+        assertThat((enumThree.description as Description).data.root.toString())
+            .contains("result of invalidation")
+    }
+
+    private fun DModule.page(name: String = "Foo"): DevsitePage {
+        val classlike = packages.single().classlikes.single { it.name() == name }
         val holder = runBlocking { DocumentablesHolder(this@page, this) }
         val converter = ClasslikeDocumentableConverter(language, classlike, pathProvider(), holder)
         return runBlocking { converter.classlike() }
diff --git a/testData/innerClasses/docs/reference/dokkatest/inner/OuterClass.InnerEnum.html b/testData/innerClasses/docs/reference/dokkatest/inner/OuterClass.InnerEnum.html
index 236ea06..2372db4 100644
--- a/testData/innerClasses/docs/reference/dokkatest/inner/OuterClass.InnerEnum.html
+++ b/testData/innerClasses/docs/reference/dokkatest/inner/OuterClass.InnerEnum.html
@@ -19,6 +19,35 @@
       <table class="responsive">
         <thead>
           <tr>
+            <th colspan="2"><h3>Enum Values</h3></th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr>
+            <td><code>A</code></td>
+            <td width="100%">
+              <p>I'm first.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>B</code></td>
+            <td width="100%">
+              <p>Second!</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>C</code></td>
+            <td width="100%">
+              <p>Third</p>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <thead>
+          <tr>
             <th colspan="2"><h3>Public fields</h3></th>
           </tr>
         </thead>
@@ -38,6 +67,22 @@
         </tbody>
       </table>
     </div>
+    <h2>Enum Values</h2>
+    <div>
+      <h3 class="api-name" id="A">A</h3>
+      <pre class="api-signature no-pretty-print"><a href="/reference/dokkatest/inner/OuterClass.InnerEnum.html">OuterClass.InnerEnum</a>&nbsp;<a href="/reference/dokkatest/inner/OuterClass.InnerEnum.A.html">OuterClass.InnerEnum.A</a></pre>
+      <p>I'm first.</p>
+    </div>
+    <div>
+      <h3 class="api-name" id="B">B</h3>
+      <pre class="api-signature no-pretty-print"><a href="/reference/dokkatest/inner/OuterClass.InnerEnum.html">OuterClass.InnerEnum</a>&nbsp;<a href="/reference/dokkatest/inner/OuterClass.InnerEnum.B.html">OuterClass.InnerEnum.B</a></pre>
+      <p>Second!</p>
+    </div>
+    <div>
+      <h3 class="api-name" id="C">C</h3>
+      <pre class="api-signature no-pretty-print"><a href="/reference/dokkatest/inner/OuterClass.InnerEnum.html">OuterClass.InnerEnum</a>&nbsp;<a href="/reference/dokkatest/inner/OuterClass.InnerEnum.C.html">OuterClass.InnerEnum.C</a></pre>
+      <p>Third</p>
+    </div>
     <h2>Public fields</h2>
     <div><a name="getName()"></a><a name="setName()"></a><a name="getName--"></a><a name="setName--"></a>
       <h3 class="api-name" id="name()">name</h3>
diff --git a/testData/innerClasses/docs/reference/kotlin/dokkatest/inner/OuterClass.InnerEnum.html b/testData/innerClasses/docs/reference/kotlin/dokkatest/inner/OuterClass.InnerEnum.html
index 2ba0047..9e06f24 100644
--- a/testData/innerClasses/docs/reference/kotlin/dokkatest/inner/OuterClass.InnerEnum.html
+++ b/testData/innerClasses/docs/reference/kotlin/dokkatest/inner/OuterClass.InnerEnum.html
@@ -19,6 +19,35 @@
       <table class="responsive">
         <thead>
           <tr>
+            <th colspan="2"><h3>Enum Values</h3></th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr>
+            <td><code>A</code></td>
+            <td width="100%">
+              <p>I'm first.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>B</code></td>
+            <td width="100%">
+              <p>Second!</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>C</code></td>
+            <td width="100%">
+              <p>Third</p>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <thead>
+          <tr>
             <th colspan="2"><h3>Public properties</h3></th>
           </tr>
         </thead>
@@ -38,6 +67,22 @@
         </tbody>
       </table>
     </div>
+    <h2>Enum Values</h2>
+    <div>
+      <h3 class="api-name" id="A">A</h3>
+      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/dokkatest/inner/OuterClass.InnerEnum.A.html">OuterClass.InnerEnum.A</a>:&nbsp;<a href="/reference/kotlin/dokkatest/inner/OuterClass.InnerEnum.html">OuterClass.InnerEnum</a></pre>
+      <p>I'm first.</p>
+    </div>
+    <div>
+      <h3 class="api-name" id="B">B</h3>
+      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/dokkatest/inner/OuterClass.InnerEnum.B.html">OuterClass.InnerEnum.B</a>:&nbsp;<a href="/reference/kotlin/dokkatest/inner/OuterClass.InnerEnum.html">OuterClass.InnerEnum</a></pre>
+      <p>Second!</p>
+    </div>
+    <div>
+      <h3 class="api-name" id="C">C</h3>
+      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/dokkatest/inner/OuterClass.InnerEnum.C.html">OuterClass.InnerEnum.C</a>:&nbsp;<a href="/reference/kotlin/dokkatest/inner/OuterClass.InnerEnum.html">OuterClass.InnerEnum</a></pre>
+      <p>Third</p>
+    </div>
     <h2>Public properties</h2>
     <div><a name="getName()"></a><a name="setName()"></a><a name="getName--"></a><a name="setName--"></a>
       <h3 class="api-name" id="name()">name</h3>
diff --git a/testData/paging/docs/reference/androidx/paging/LoadType.html b/testData/paging/docs/reference/androidx/paging/LoadType.html
index c83abaf..55ab278 100644
--- a/testData/paging/docs/reference/androidx/paging/LoadType.html
+++ b/testData/paging/docs/reference/androidx/paging/LoadType.html
@@ -35,6 +35,35 @@
       <table class="responsive">
         <thead>
           <tr>
+            <th colspan="2"><h3>Enum Values</h3></th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr>
+            <td><code>APPEND</code></td>
+            <td width="100%">
+              <p>Load at the end of a <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code>.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>PREPEND</code></td>
+            <td width="100%">
+              <p>Load at the start of a <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code>.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>REFRESH</code></td>
+            <td width="100%">
+              <p><code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code> content being refreshed, which can be a result of <code><a href="/reference/androidx/paging/PagingSource.html">PagingSource</a></code> invalidation, refresh that may contain content updates, or the initial load.</p>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <thead>
+          <tr>
             <th colspan="2"><h3>Public fields</h3></th>
           </tr>
         </thead>
@@ -54,6 +83,22 @@
         </tbody>
       </table>
     </div>
+    <h2>Enum Values</h2>
+    <div>
+      <h3 class="api-name" id="APPEND">APPEND</h3>
+      <pre class="api-signature no-pretty-print"><a href="/reference/androidx/paging/LoadType.html">LoadType</a>&nbsp;<a href="/reference/androidx/paging/LoadType.APPEND.html">LoadType.APPEND</a></pre>
+      <p>Load at the end of a <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code>.</p>
+    </div>
+    <div>
+      <h3 class="api-name" id="PREPEND">PREPEND</h3>
+      <pre class="api-signature no-pretty-print"><a href="/reference/androidx/paging/LoadType.html">LoadType</a>&nbsp;<a href="/reference/androidx/paging/LoadType.PREPEND.html">LoadType.PREPEND</a></pre>
+      <p>Load at the start of a <code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code>.</p>
+    </div>
+    <div>
+      <h3 class="api-name" id="REFRESH">REFRESH</h3>
+      <pre class="api-signature no-pretty-print"><a href="/reference/androidx/paging/LoadType.html">LoadType</a>&nbsp;<a href="/reference/androidx/paging/LoadType.REFRESH.html">LoadType.REFRESH</a></pre>
+      <p><code><a href="/reference/androidx/paging/PagingData.html">PagingData</a></code> content being refreshed, which can be a result of <code><a href="/reference/androidx/paging/PagingSource.html">PagingSource</a></code> invalidation, refresh that may contain content updates, or the initial load.</p>
+    </div>
     <h2>Public fields</h2>
     <div><a name="getName()"></a><a name="setName()"></a><a name="getName--"></a><a name="setName--"></a>
       <h3 class="api-name" id="name()">name</h3>
diff --git a/testData/paging/docs/reference/androidx/paging/RemoteMediator.InitializeAction.html b/testData/paging/docs/reference/androidx/paging/RemoteMediator.InitializeAction.html
index e24f51e..cf0b9e1 100644
--- a/testData/paging/docs/reference/androidx/paging/RemoteMediator.InitializeAction.html
+++ b/testData/paging/docs/reference/androidx/paging/RemoteMediator.InitializeAction.html
@@ -19,6 +19,29 @@
       <table class="responsive">
         <thead>
           <tr>
+            <th colspan="2"><h3>Enum Values</h3></th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr>
+            <td><code>LAUNCH_INITIAL_REFRESH</code></td>
+            <td width="100%">
+              <p>Immediately dispatch a <code><a href="/reference/androidx/paging/RemoteMediator.html#load(androidx.paging.LoadType,androidx.paging.PagingState)">load</a></code> asynchronously with load type <code><a href="/reference/androidx/paging/LoadType.REFRESH.html">LoadType.REFRESH</a></code>, to update paginated content when the stream is initialized.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>SKIP_INITIAL_REFRESH</code></td>
+            <td width="100%">
+              <p>Wait for a refresh request from the UI before dispatching <code><a href="/reference/androidx/paging/RemoteMediator.html#load(androidx.paging.LoadType,androidx.paging.PagingState)">load</a></code> with load type <code><a href="/reference/androidx/paging/LoadType.REFRESH.html">LoadType.REFRESH</a></code>.</p>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <thead>
+          <tr>
             <th colspan="2"><h3>Public fields</h3></th>
           </tr>
         </thead>
@@ -38,6 +61,17 @@
         </tbody>
       </table>
     </div>
+    <h2>Enum Values</h2>
+    <div>
+      <h3 class="api-name" id="LAUNCH_INITIAL_REFRESH">LAUNCH_INITIAL_REFRESH</h3>
+      <pre class="api-signature no-pretty-print"><a href="/reference/androidx/paging/RemoteMediator.InitializeAction.html">RemoteMediator.InitializeAction</a>&nbsp;<a href="/reference/androidx/paging/RemoteMediator.InitializeAction.LAUNCH_INITIAL_REFRESH.html">RemoteMediator.InitializeAction.LAUNCH_INITIAL_REFRESH</a></pre>
+      <p>Immediately dispatch a <code><a href="/reference/androidx/paging/RemoteMediator.html#load(androidx.paging.LoadType,androidx.paging.PagingState)">load</a></code> asynchronously with load type <code><a href="/reference/androidx/paging/LoadType.REFRESH.html">LoadType.REFRESH</a></code>, to update paginated content when the stream is initialized.</p>
+    </div>
+    <div>
+      <h3 class="api-name" id="SKIP_INITIAL_REFRESH">SKIP_INITIAL_REFRESH</h3>
+      <pre class="api-signature no-pretty-print"><a href="/reference/androidx/paging/RemoteMediator.InitializeAction.html">RemoteMediator.InitializeAction</a>&nbsp;<a href="/reference/androidx/paging/RemoteMediator.InitializeAction.SKIP_INITIAL_REFRESH.html">RemoteMediator.InitializeAction.SKIP_INITIAL_REFRESH</a></pre>
+      <p>Wait for a refresh request from the UI before dispatching <code><a href="/reference/androidx/paging/RemoteMediator.html#load(androidx.paging.LoadType,androidx.paging.PagingState)">load</a></code> with load type <code><a href="/reference/androidx/paging/LoadType.REFRESH.html">LoadType.REFRESH</a></code>.</p>
+    </div>
     <h2>Public fields</h2>
     <div><a name="getName()"></a><a name="setName()"></a><a name="getName--"></a><a name="setName--"></a>
       <h3 class="api-name" id="name()">name</h3>
diff --git a/testData/paging/docs/reference/kotlin/androidx/paging/LoadType.html b/testData/paging/docs/reference/kotlin/androidx/paging/LoadType.html
index 1cedafe..1942b43 100644
--- a/testData/paging/docs/reference/kotlin/androidx/paging/LoadType.html
+++ b/testData/paging/docs/reference/kotlin/androidx/paging/LoadType.html
@@ -35,6 +35,35 @@
       <table class="responsive">
         <thead>
           <tr>
+            <th colspan="2"><h3>Enum Values</h3></th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr>
+            <td><code>APPEND</code></td>
+            <td width="100%">
+              <p>Load at the end of a <code><a href="/reference/kotlin/androidx/paging/PagingData.html">PagingData</a></code>.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>PREPEND</code></td>
+            <td width="100%">
+              <p>Load at the start of a <code><a href="/reference/kotlin/androidx/paging/PagingData.html">PagingData</a></code>.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>REFRESH</code></td>
+            <td width="100%">
+              <p><code><a href="/reference/kotlin/androidx/paging/PagingData.html">PagingData</a></code> content being refreshed, which can be a result of <code><a href="/reference/kotlin/androidx/paging/PagingSource.html">PagingSource</a></code> invalidation, refresh that may contain content updates, or the initial load.</p>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <thead>
+          <tr>
             <th colspan="2"><h3>Public properties</h3></th>
           </tr>
         </thead>
@@ -54,6 +83,22 @@
         </tbody>
       </table>
     </div>
+    <h2>Enum Values</h2>
+    <div>
+      <h3 class="api-name" id="APPEND">APPEND</h3>
+      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/androidx/paging/LoadType.APPEND.html">LoadType.APPEND</a>:&nbsp;<a href="/reference/kotlin/androidx/paging/LoadType.html">LoadType</a></pre>
+      <p>Load at the end of a <code><a href="/reference/kotlin/androidx/paging/PagingData.html">PagingData</a></code>.</p>
+    </div>
+    <div>
+      <h3 class="api-name" id="PREPEND">PREPEND</h3>
+      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/androidx/paging/LoadType.PREPEND.html">LoadType.PREPEND</a>:&nbsp;<a href="/reference/kotlin/androidx/paging/LoadType.html">LoadType</a></pre>
+      <p>Load at the start of a <code><a href="/reference/kotlin/androidx/paging/PagingData.html">PagingData</a></code>.</p>
+    </div>
+    <div>
+      <h3 class="api-name" id="REFRESH">REFRESH</h3>
+      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/androidx/paging/LoadType.REFRESH.html">LoadType.REFRESH</a>:&nbsp;<a href="/reference/kotlin/androidx/paging/LoadType.html">LoadType</a></pre>
+      <p><code><a href="/reference/kotlin/androidx/paging/PagingData.html">PagingData</a></code> content being refreshed, which can be a result of <code><a href="/reference/kotlin/androidx/paging/PagingSource.html">PagingSource</a></code> invalidation, refresh that may contain content updates, or the initial load.</p>
+    </div>
     <h2>Public properties</h2>
     <div><a name="getName()"></a><a name="setName()"></a><a name="getName--"></a><a name="setName--"></a>
       <h3 class="api-name" id="name()">name</h3>
diff --git a/testData/paging/docs/reference/kotlin/androidx/paging/RemoteMediator.InitializeAction.html b/testData/paging/docs/reference/kotlin/androidx/paging/RemoteMediator.InitializeAction.html
index d51cffe..b4c6b0e 100644
--- a/testData/paging/docs/reference/kotlin/androidx/paging/RemoteMediator.InitializeAction.html
+++ b/testData/paging/docs/reference/kotlin/androidx/paging/RemoteMediator.InitializeAction.html
@@ -19,6 +19,29 @@
       <table class="responsive">
         <thead>
           <tr>
+            <th colspan="2"><h3>Enum Values</h3></th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr>
+            <td><code>LAUNCH_INITIAL_REFRESH</code></td>
+            <td width="100%">
+              <p>Immediately dispatch a <code><a href="/reference/kotlin/androidx/paging/RemoteMediator.html#load(androidx.paging.LoadType,androidx.paging.PagingState)">load</a></code> asynchronously with load type <code><a href="/reference/kotlin/androidx/paging/LoadType.REFRESH.html">LoadType.REFRESH</a></code>, to update paginated content when the stream is initialized.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>SKIP_INITIAL_REFRESH</code></td>
+            <td width="100%">
+              <p>Wait for a refresh request from the UI before dispatching <code><a href="/reference/kotlin/androidx/paging/RemoteMediator.html#load(androidx.paging.LoadType,androidx.paging.PagingState)">load</a></code> with load type <code><a href="/reference/kotlin/androidx/paging/LoadType.REFRESH.html">LoadType.REFRESH</a></code>.</p>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <thead>
+          <tr>
             <th colspan="2"><h3>Public properties</h3></th>
           </tr>
         </thead>
@@ -38,6 +61,17 @@
         </tbody>
       </table>
     </div>
+    <h2>Enum Values</h2>
+    <div>
+      <h3 class="api-name" id="LAUNCH_INITIAL_REFRESH">LAUNCH_INITIAL_REFRESH</h3>
+      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/androidx/paging/RemoteMediator.InitializeAction.LAUNCH_INITIAL_REFRESH.html">RemoteMediator.InitializeAction.LAUNCH_INITIAL_REFRESH</a>:&nbsp;<a href="/reference/kotlin/androidx/paging/RemoteMediator.InitializeAction.html">RemoteMediator.InitializeAction</a></pre>
+      <p>Immediately dispatch a <code><a href="/reference/kotlin/androidx/paging/RemoteMediator.html#load(androidx.paging.LoadType,androidx.paging.PagingState)">load</a></code> asynchronously with load type <code><a href="/reference/kotlin/androidx/paging/LoadType.REFRESH.html">LoadType.REFRESH</a></code>, to update paginated content when the stream is initialized.</p>
+    </div>
+    <div>
+      <h3 class="api-name" id="SKIP_INITIAL_REFRESH">SKIP_INITIAL_REFRESH</h3>
+      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/androidx/paging/RemoteMediator.InitializeAction.SKIP_INITIAL_REFRESH.html">RemoteMediator.InitializeAction.SKIP_INITIAL_REFRESH</a>:&nbsp;<a href="/reference/kotlin/androidx/paging/RemoteMediator.InitializeAction.html">RemoteMediator.InitializeAction</a></pre>
+      <p>Wait for a refresh request from the UI before dispatching <code><a href="/reference/kotlin/androidx/paging/RemoteMediator.html#load(androidx.paging.LoadType,androidx.paging.PagingState)">load</a></code> with load type <code><a href="/reference/kotlin/androidx/paging/LoadType.REFRESH.html">LoadType.REFRESH</a></code>.</p>
+    </div>
     <h2>Public properties</h2>
     <div><a name="getName()"></a><a name="setName()"></a><a name="getName--"></a><a name="setName--"></a>
       <h3 class="api-name" id="name()">name</h3>
diff --git a/testData/simple/docs/reference/dokkatest/simple/Three.html b/testData/simple/docs/reference/dokkatest/simple/Three.html
index 604a182..f80b5bf 100644
--- a/testData/simple/docs/reference/dokkatest/simple/Three.html
+++ b/testData/simple/docs/reference/dokkatest/simple/Three.html
@@ -18,6 +18,29 @@
       <table class="responsive">
         <thead>
           <tr>
+            <th colspan="2"><h3>Enum Values</h3></th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr>
+            <td><code>A</code></td>
+            <td width="100%"></td>
+          </tr>
+          <tr>
+            <td><code>B</code></td>
+            <td width="100%"></td>
+          </tr>
+          <tr>
+            <td><code>C</code></td>
+            <td width="100%"></td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <thead>
+          <tr>
             <th colspan="2"><h3>Public fields</h3></th>
           </tr>
         </thead>
@@ -43,6 +66,19 @@
         </tbody>
       </table>
     </div>
+    <h2>Enum Values</h2>
+    <div>
+      <h3 class="api-name" id="A">A</h3>
+      <pre class="api-signature no-pretty-print"><a href="/reference/dokkatest/simple/Three.html">Three</a>&nbsp;<a href="/reference/dokkatest/simple/Three.A.html">Three.A</a></pre>
+    </div>
+    <div>
+      <h3 class="api-name" id="B">B</h3>
+      <pre class="api-signature no-pretty-print"><a href="/reference/dokkatest/simple/Three.html">Three</a>&nbsp;<a href="/reference/dokkatest/simple/Three.B.html">Three.B</a></pre>
+    </div>
+    <div>
+      <h3 class="api-name" id="C">C</h3>
+      <pre class="api-signature no-pretty-print"><a href="/reference/dokkatest/simple/Three.html">Three</a>&nbsp;<a href="/reference/dokkatest/simple/Three.C.html">Three.C</a></pre>
+    </div>
     <h2>Public fields</h2>
     <div><a name="getLetter()"></a><a name="setLetter()"></a><a name="getLetter--"></a><a name="setLetter--"></a>
       <h3 class="api-name" id="letter()">letter</h3>
diff --git a/testData/simple/docs/reference/kotlin/dokkatest/simple/Three.html b/testData/simple/docs/reference/kotlin/dokkatest/simple/Three.html
index d28bce9..3ac50a3 100644
--- a/testData/simple/docs/reference/kotlin/dokkatest/simple/Three.html
+++ b/testData/simple/docs/reference/kotlin/dokkatest/simple/Three.html
@@ -18,6 +18,29 @@
       <table class="responsive">
         <thead>
           <tr>
+            <th colspan="2"><h3>Enum Values</h3></th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr>
+            <td><code>A</code></td>
+            <td width="100%"></td>
+          </tr>
+          <tr>
+            <td><code>B</code></td>
+            <td width="100%"></td>
+          </tr>
+          <tr>
+            <td><code>C</code></td>
+            <td width="100%"></td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <thead>
+          <tr>
             <th colspan="2"><h3>Public properties</h3></th>
           </tr>
         </thead>
@@ -43,6 +66,19 @@
         </tbody>
       </table>
     </div>
+    <h2>Enum Values</h2>
+    <div>
+      <h3 class="api-name" id="A">A</h3>
+      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/dokkatest/simple/Three.A.html">Three.A</a>:&nbsp;<a href="/reference/kotlin/dokkatest/simple/Three.html">Three</a></pre>
+    </div>
+    <div>
+      <h3 class="api-name" id="B">B</h3>
+      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/dokkatest/simple/Three.B.html">Three.B</a>:&nbsp;<a href="/reference/kotlin/dokkatest/simple/Three.html">Three</a></pre>
+    </div>
+    <div>
+      <h3 class="api-name" id="C">C</h3>
+      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/dokkatest/simple/Three.C.html">Three.C</a>:&nbsp;<a href="/reference/kotlin/dokkatest/simple/Three.html">Three</a></pre>
+    </div>
     <h2>Public properties</h2>
     <div><a name="getLetter()"></a><a name="setLetter()"></a><a name="getLetter--"></a><a name="setLetter--"></a>
       <h3 class="api-name" id="letter()">letter</h3>
