// Baseline format: 1.0
GetterSetterNames: androidx.compose.foundation.ScrollState#getCanScrollBackward():
    Getter for boolean property `canScrollBackward` is named `getCanScrollBackward` but should match the property name. Use `@get:JvmName` to rename.
GetterSetterNames: androidx.compose.foundation.ScrollState#getCanScrollForward():
    Getter for boolean property `canScrollForward` is named `getCanScrollForward` but should match the property name. Use `@get:JvmName` to rename.
GetterSetterNames: androidx.compose.foundation.gestures.ScrollableState#getCanScrollBackward():
    Getter for boolean property `canScrollBackward` is named `getCanScrollBackward` but should match the property name. Use `@get:JvmName` to rename.
GetterSetterNames: androidx.compose.foundation.gestures.ScrollableState#getCanScrollForward():
    Getter for boolean property `canScrollForward` is named `getCanScrollForward` but should match the property name. Use `@get:JvmName` to rename.
GetterSetterNames: androidx.compose.foundation.lazy.LazyListLayoutInfo#reverseLayout:
    Invalid name for boolean property `reverseLayout`. Should start with one of `has`, `can`, `should`, `is`.
GetterSetterNames: androidx.compose.foundation.lazy.LazyListState#getCanScrollBackward():
    Getter for boolean property `canScrollBackward` is named `getCanScrollBackward` but should match the property name. Use `@get:JvmName` to rename.
GetterSetterNames: androidx.compose.foundation.lazy.LazyListState#getCanScrollForward():
    Getter for boolean property `canScrollForward` is named `getCanScrollForward` but should match the property name. Use `@get:JvmName` to rename.
GetterSetterNames: androidx.compose.foundation.lazy.grid.LazyGridLayoutInfo#reverseLayout:
    Invalid name for boolean property `reverseLayout`. Should start with one of `has`, `can`, `should`, `is`.
GetterSetterNames: androidx.compose.foundation.lazy.grid.LazyGridState#getCanScrollBackward():
    Getter for boolean property `canScrollBackward` is named `getCanScrollBackward` but should match the property name. Use `@get:JvmName` to rename.
GetterSetterNames: androidx.compose.foundation.lazy.grid.LazyGridState#getCanScrollForward():
    Getter for boolean property `canScrollForward` is named `getCanScrollForward` but should match the property name. Use `@get:JvmName` to rename.
GetterSetterNames: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridState#getCanScrollBackward():
    Getter for boolean property `canScrollBackward` is named `getCanScrollBackward` but should match the property name. Use `@get:JvmName` to rename.
GetterSetterNames: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridState#getCanScrollForward():
    Getter for boolean property `canScrollForward` is named `getCanScrollForward` but should match the property name. Use `@get:JvmName` to rename.
GetterSetterNames: androidx.compose.foundation.pager.PagerState#getCanScrollBackward():
    Getter for boolean property `canScrollBackward` is named `getCanScrollBackward` but should match the property name. Use `@get:JvmName` to rename.
GetterSetterNames: androidx.compose.foundation.pager.PagerState#getCanScrollForward():
    Getter for boolean property `canScrollForward` is named `getCanScrollForward` but should match the property name. Use `@get:JvmName` to rename.
GetterSetterNames: androidx.compose.foundation.text.KeyboardOptions#autoCorrect:
    Invalid name for boolean property `autoCorrect`. Should start with one of `has`, `can`, `should`, `is`.
