Check in .idea files and reformat Lottie Java code (#1764)

The Java code style was never checked into the repo which has led to some inconsistent formatting. It is now checked in and I ran the formatter on the core lottie module.
diff --git a/.gitignore b/.gitignore
index 532a028..8b570cf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,33 @@
 *.iml
 .gradle
 /local.properties
-/.idea/*
-!.idea/codeStyleSettings.xml
+
+
+# From https://github.com/github/gitignore/blob/master/Global/JetBrains.gitignore
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# Generated files
+.idea/**/contentModel.xml
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+
 .DS_Store
 /build
 /captures
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000..54e0a97
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,222 @@
+<component name="ProjectCodeStyleConfiguration">
+  <code_scheme name="Project" version="173">
+    <option name="WRAP_WHEN_TYPING_REACHES_RIGHT_MARGIN" value="true" />
+    <JavaCodeStyleSettings>
+      <option name="DO_NOT_WRAP_AFTER_SINGLE_ANNOTATION" value="true" />
+      <option name="ANNOTATION_PARAMETER_WRAP" value="1" />
+    </JavaCodeStyleSettings>
+    <JetCodeStyleSettings>
+      <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
+    </JetCodeStyleSettings>
+    <XML>
+      <option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
+    </XML>
+    <codeStyleSettings language="Groovy">
+      <indentOptions>
+        <option name="INDENT_SIZE" value="2" />
+        <option name="CONTINUATION_INDENT_SIZE" value="4" />
+        <option name="TAB_SIZE" value="2" />
+      </indentOptions>
+    </codeStyleSettings>
+    <codeStyleSettings language="JAVA">
+      <option name="RIGHT_MARGIN" value="150" />
+      <option name="LINE_COMMENT_AT_FIRST_COLUMN" value="false" />
+      <option name="LINE_COMMENT_ADD_SPACE" value="true" />
+      <option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
+      <option name="CALL_PARAMETERS_WRAP" value="1" />
+      <option name="METHOD_PARAMETERS_WRAP" value="1" />
+      <option name="RESOURCE_LIST_WRAP" value="1" />
+      <option name="EXTENDS_LIST_WRAP" value="1" />
+      <option name="THROWS_LIST_WRAP" value="1" />
+      <option name="EXTENDS_KEYWORD_WRAP" value="1" />
+      <option name="THROWS_KEYWORD_WRAP" value="1" />
+      <option name="METHOD_CALL_CHAIN_WRAP" value="1" />
+      <option name="BINARY_OPERATION_WRAP" value="1" />
+      <option name="TERNARY_OPERATION_WRAP" value="1" />
+      <option name="FOR_STATEMENT_WRAP" value="1" />
+      <option name="ARRAY_INITIALIZER_WRAP" value="1" />
+      <option name="ASSIGNMENT_WRAP" value="1" />
+      <option name="ASSERT_STATEMENT_WRAP" value="1" />
+      <option name="IF_BRACE_FORCE" value="3" />
+      <option name="DOWHILE_BRACE_FORCE" value="3" />
+      <option name="WHILE_BRACE_FORCE" value="3" />
+      <option name="FOR_BRACE_FORCE" value="3" />
+      <option name="WRAP_LONG_LINES" value="true" />
+      <option name="METHOD_ANNOTATION_WRAP" value="1" />
+      <option name="CLASS_ANNOTATION_WRAP" value="1" />
+      <option name="FIELD_ANNOTATION_WRAP" value="1" />
+      <option name="PARAMETER_ANNOTATION_WRAP" value="1" />
+      <option name="VARIABLE_ANNOTATION_WRAP" value="1" />
+      <option name="ENUM_CONSTANTS_WRAP" value="1" />
+      <option name="WRAP_ON_TYPING" value="0" />
+      <option name="SOFT_MARGINS" value="150" />
+      <indentOptions>
+        <option name="INDENT_SIZE" value="2" />
+        <option name="CONTINUATION_INDENT_SIZE" value="4" />
+        <option name="TAB_SIZE" value="2" />
+      </indentOptions>
+    </codeStyleSettings>
+    <codeStyleSettings language="XML">
+      <option name="FORCE_REARRANGE_MODE" value="1" />
+      <indentOptions>
+        <option name="CONTINUATION_INDENT_SIZE" value="4" />
+      </indentOptions>
+      <arrangement>
+        <rules>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>xmlns:android</NAME>
+                  <XML_NAMESPACE>^$</XML_NAMESPACE>
+                </AND>
+              </match>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>xmlns:.*</NAME>
+                  <XML_NAMESPACE>^$</XML_NAMESPACE>
+                </AND>
+              </match>
+              <order>BY_NAME</order>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>.*:id</NAME>
+                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+                </AND>
+              </match>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>.*:name</NAME>
+                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+                </AND>
+              </match>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>name</NAME>
+                  <XML_NAMESPACE>^$</XML_NAMESPACE>
+                </AND>
+              </match>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>style</NAME>
+                  <XML_NAMESPACE>^$</XML_NAMESPACE>
+                </AND>
+              </match>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>.*</NAME>
+                  <XML_NAMESPACE>^$</XML_NAMESPACE>
+                </AND>
+              </match>
+              <order>BY_NAME</order>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>.*:layout_width</NAME>
+                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+                </AND>
+              </match>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>.*:layout_height</NAME>
+                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+                </AND>
+              </match>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>.*:layout_.*</NAME>
+                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+                </AND>
+              </match>
+              <order>BY_NAME</order>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>.*:width</NAME>
+                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+                </AND>
+              </match>
+              <order>BY_NAME</order>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>.*:height</NAME>
+                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+                </AND>
+              </match>
+              <order>BY_NAME</order>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>.*</NAME>
+                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+                </AND>
+              </match>
+              <order>BY_NAME</order>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>.*</NAME>
+                  <XML_NAMESPACE>.*</XML_NAMESPACE>
+                </AND>
+              </match>
+              <order>BY_NAME</order>
+            </rule>
+          </section>
+        </rules>
+      </arrangement>
+    </codeStyleSettings>
+    <codeStyleSettings language="kotlin">
+      <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
+      <option name="RIGHT_MARGIN" value="150" />
+      <option name="WRAP_ON_TYPING" value="0" />
+    </codeStyleSettings>
+  </code_scheme>
+</component>
\ No newline at end of file
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..79ee123
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+<component name="ProjectCodeStyleConfiguration">
+  <state>
+    <option name="USE_PER_PROJECT_SETTINGS" value="true" />
+  </state>
+</component>
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..fb7f4a8
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <bytecodeTargetLevel target="11" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..2842237
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,20 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0">
+    <option name="myName" value="Project Default" />
+    <inspection_tool class="PreviewAnnotationInFunctionWithParameters" enabled="true" level="ERROR" enabled_by_default="true">
+      <option name="previewFile" value="true" />
+    </inspection_tool>
+    <inspection_tool class="PreviewDimensionRespectsLimit" enabled="true" level="WARNING" enabled_by_default="true">
+      <option name="previewFile" value="true" />
+    </inspection_tool>
+    <inspection_tool class="PreviewMultipleParameterProviders" enabled="true" level="ERROR" enabled_by_default="true">
+      <option name="previewFile" value="true" />
+    </inspection_tool>
+    <inspection_tool class="PreviewMustBeTopLevelFunction" enabled="true" level="ERROR" enabled_by_default="true">
+      <option name="previewFile" value="true" />
+    </inspection_tool>
+    <inspection_tool class="PreviewNeedsComposableAnnotation" enabled="true" level="ERROR" enabled_by_default="true">
+      <option name="previewFile" value="true" />
+    </inspection_tool>
+  </profile>
+</component>
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..88c9534
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="jboss.community" />
+      <option name="name" value="JBoss Community repository" />
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="maven2" />
+      <option name="name" value="maven2" />
+      <option name="url" value="https://oss.sonatype.org/content/repositories/snapshots/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="BintrayJCenter" />
+      <option name="name" value="BintrayJCenter" />
+      <option name="url" value="https://jcenter.bintray.com/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="maven" />
+      <option name="name" value="maven" />
+      <option name="url" value="https://jitpack.io" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="Google" />
+      <option name="name" value="Google" />
+      <option name="url" value="https://dl.google.com/dl/android/maven2/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="MavenLocal" />
+      <option name="name" value="MavenLocal" />
+      <option name="url" value="file:$USER_HOME$/.m2/repository/" />
+    </remote-repository>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..c3085c1
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="DesignSurface">
+    <option name="filePathToZoomLevelMap">
+      <map>
+        <entry key="../../../../layout/compose-model-1613196112801.xml" value="0.14145424153781863" />
+        <entry key="../../../../layout/compose-model-1613197127862.xml" value="0.28673986486486486" />
+        <entry key="../../../../layout/compose-model-1613197303263.xml" value="0.4083333333333333" />
+        <entry key="../../../../layout/compose-model-1613197542067.xml" value="0.5" />
+        <entry key="../../../../layout/compose-model-1613197542208.xml" value="0.26319875776397517" />
+        <entry key="../../../../layout/compose-model-1613198754891.xml" value="0.5" />
+        <entry key="../../../../layout/compose-model-1613198790860.xml" value="0.40555555555555556" />
+        <entry key="../../../../layout/compose-model-1613198805284.xml" value="1.0" />
+        <entry key="../../../../layout/compose-model-1613198823160.xml" value="1.0" />
+        <entry key="../../../../layout/compose-model-1613198837600.xml" value="1.0" />
+        <entry key="../../../../layout/compose-model-1613199814743.xml" value="0.2628105590062112" />
+        <entry key="../../../../layout/compose-model-1613199814746.xml" value="0.286923402454507" />
+        <entry key="../../../../layout/compose-model-1613199852232.xml" value="0.2731668009669621" />
+        <entry key="../../../../layout/compose-model-1613253064691.xml" value="0.28649789029535866" />
+        <entry key="../../../../layout/compose-model-1613253441246.xml" value="0.2627906976744186" />
+        <entry key="../../../../layout/compose-model-1613930306935.xml" value="0.1419314381270903" />
+        <entry key="../../../../layout/compose-model-1613930334996.xml" value="0.28673986486486486" />
+        <entry key="../../../../layout/compose-model-1614142527518.xml" value="0.17145270270270271" />
+        <entry key="../../../../layout/compose-model-1614541106045.xml" value="0.44141252006420545" />
+        <entry key="../../../../layout/compose-model-1615661120940.xml" value="0.675" />
+        <entry key="../../../../layout/compose-model-1615661124216.xml" value="0.28631756756756754" />
+        <entry key="../../../../layout/compose-model-1615661338631.xml" value="1.0" />
+        <entry key="../../../../layout/compose-model-1615661344364.xml" value="0.28607594936708863" />
+      </map>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK" />
+</project>
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..2590511
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/lottie-android.iml" filepath="$PROJECT_DIR$/.idea/lottie-android.iml" />
+      <module fileurl="file://$PROJECT_DIR$/.idea/modules/issue-repro/lottie-android.issue-repro.iml" filepath="$PROJECT_DIR$/.idea/modules/issue-repro/lottie-android.issue-repro.iml" />
+      <module fileurl="file://$PROJECT_DIR$/.idea/modules/lottie/lottie-android.lottie.iml" filepath="$PROJECT_DIR$/.idea/modules/lottie/lottie-android.lottie.iml" />
+      <module fileurl="file://$PROJECT_DIR$/.idea/modules/lottie-compose/lottie-android.lottie-compose.iml" filepath="$PROJECT_DIR$/.idea/modules/lottie-compose/lottie-android.lottie-compose.iml" />
+      <module fileurl="file://$PROJECT_DIR$/.idea/modules/sample/lottie-android.sample.iml" filepath="$PROJECT_DIR$/.idea/modules/sample/lottie-android.sample.iml" />
+      <module fileurl="file://$PROJECT_DIR$/.idea/modules/sample-compose/lottie-android.sample-compose.iml" filepath="$PROJECT_DIR$/.idea/modules/sample-compose/lottie-android.sample-compose.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/ImageAssetDelegate.java b/lottie/src/main/java/com/airbnb/lottie/ImageAssetDelegate.java
index 2335ae2..659a014 100644
--- a/lottie/src/main/java/com/airbnb/lottie/ImageAssetDelegate.java
+++ b/lottie/src/main/java/com/airbnb/lottie/ImageAssetDelegate.java
@@ -1,6 +1,7 @@
 package com.airbnb.lottie;
 
 import android.graphics.Bitmap;
+
 import androidx.annotation.Nullable;
 
 /**
diff --git a/lottie/src/main/java/com/airbnb/lottie/L.java b/lottie/src/main/java/com/airbnb/lottie/L.java
index e0365e6..7dbc35c 100644
--- a/lottie/src/main/java/com/airbnb/lottie/L.java
+++ b/lottie/src/main/java/com/airbnb/lottie/L.java
@@ -2,18 +2,18 @@
 
 import android.content.Context;
 
-import com.airbnb.lottie.network.LottieNetworkCacheProvider;
+import androidx.annotation.NonNull;
+import androidx.annotation.RestrictTo;
+import androidx.core.os.TraceCompat;
+
 import com.airbnb.lottie.network.DefaultLottieNetworkFetcher;
+import com.airbnb.lottie.network.LottieNetworkCacheProvider;
 import com.airbnb.lottie.network.LottieNetworkFetcher;
 import com.airbnb.lottie.network.NetworkCache;
 import com.airbnb.lottie.network.NetworkFetcher;
 
 import java.io.File;
 
-import androidx.annotation.NonNull;
-import androidx.annotation.RestrictTo;
-import androidx.core.os.TraceCompat;
-
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 public class L {
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java b/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java
index eef6012..a34478f 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java
@@ -1,5 +1,7 @@
 package com.airbnb.lottie;
 
+import static com.airbnb.lottie.RenderMode.HARDWARE;
+
 import android.animation.Animator;
 import android.animation.ValueAnimator;
 import android.content.Context;
@@ -43,8 +45,6 @@
 import java.util.Set;
 import java.util.concurrent.Callable;
 
-import static com.airbnb.lottie.RenderMode.HARDWARE;
-
 /**
  * This view will load, deserialize, and display an After Effects animation exported with
  * bodymovin (https://github.com/bodymovin/bodymovin).
@@ -52,12 +52,12 @@
  * You may set the animation in one of two ways:
  * 1) Attrs: {@link R.styleable#LottieAnimationView_lottie_fileName}
  * 2) Programmatically:
- *      {@link #setAnimation(String)}
- *      {@link #setAnimation(int)}
- *      {@link #setAnimation(InputStream, String)}
- *      {@link #setAnimationFromJson(String, String)}
- *      {@link #setAnimationFromUrl(String)}
- *      {@link #setComposition(LottieComposition)}
+ * {@link #setAnimation(String)}
+ * {@link #setAnimation(int)}
+ * {@link #setAnimation(InputStream, String)}
+ * {@link #setAnimationFromJson(String, String)}
+ * {@link #setAnimationFromUrl(String)}
+ * {@link #setComposition(LottieComposition)}
  * <p>
  * You can set a default cache strategy with {@link R.attr#lottie_cacheComposition}.
  * <p>
@@ -127,7 +127,9 @@
   private int buildDrawingCacheDepth = 0;
 
   @Nullable private LottieTask<LottieComposition> compositionTask;
-  /** Can be null because it is created async */
+  /**
+   * Can be null because it is created async
+   */
   @Nullable private LottieComposition composition;
 
   public LottieAnimationView(Context context) {
@@ -362,7 +364,7 @@
 
   /**
    * Allows ignoring system animations settings, therefore allowing animations to run even if they are disabled.
-   *
+   * <p>
    * Defaults to false.
    *
    * @param ignore if true animations will run even when they are disabled in the system settings.
@@ -373,7 +375,7 @@
 
   /**
    * Enable this to get merge path support for devices running KitKat (19) and above.
-   *
+   * <p>
    * Merge paths currently don't work if the the operand shape is entirely contained within the
    * first shape. If you need to cut out one shape from another shape, use an even-odd fill type
    * instead of using merge paths.
@@ -392,9 +394,9 @@
   /**
    * If set to true, all future compositions that are set will be cached so that they don't need to be parsed
    * next time they are loaded. This won't apply to compositions that have already been loaded.
-   *
+   * <p>
    * Defaults to true.
-   *
+   * <p>
    * {@link R.attr#lottie_cacheComposition}
    */
   public void setCacheComposition(boolean cacheComposition) {
@@ -404,7 +406,7 @@
   /**
    * Enable this to debug slow animations by outlining masks and mattes. The performance overhead of the masks and mattes will
    * be proportional to the surface area of all of the masks/mattes combined.
-   *
+   * <p>
    * DO NOT leave this enabled in production.
    */
   public void setOutlineMasksAndMattes(boolean outline) {
@@ -485,13 +487,14 @@
   }
 
   /**
-   * Load a lottie animation from a url. The url can be a json file or a zip file. Use a zip file if you have images. Simply zip them together and lottie
+   * Load a lottie animation from a url. The url can be a json file or a zip file. Use a zip file if you have images. Simply zip them together and
+   * lottie
    * will unzip and link the images automatically.
-   *
+   * <p>
    * Under the hood, Lottie uses Java HttpURLConnection because it doesn't require any transitive networking dependencies. It will download the file
    * to the application cache under a temporary name. If the file successfully parses to a composition, it will rename the temporary file to one that
    * can be accessed immediately for subsequent requests. If the file does not parse to a composition, the temporary file will be deleted.
-   *
+   * <p>
    * You can replace the default network stack or cache handling with a global {@link LottieConfig}
    *
    * @see LottieConfig.Builder
@@ -504,13 +507,14 @@
   }
 
   /**
-   * Load a lottie animation from a url. The url can be a json file or a zip file. Use a zip file if you have images. Simply zip them together and lottie
+   * Load a lottie animation from a url. The url can be a json file or a zip file. Use a zip file if you have images. Simply zip them together and
+   * lottie
    * will unzip and link the images automatically.
-   *
+   * <p>
    * Under the hood, Lottie uses Java HttpURLConnection because it doesn't require any transitive networking dependencies. It will download the file
    * to the application cache under a temporary name. If the file successfully parses to a composition, it will rename the temporary file to one that
    * can be accessed immediately for subsequent requests. If the file does not parse to a composition, the temporary file will be deleted.
-   *
+   * <p>
    * You can replace the default network stack or cache handling with a global {@link LottieConfig}
    *
    * @see LottieConfig.Builder
@@ -524,15 +528,15 @@
   /**
    * Set a default failure listener that will be called if any of the setAnimation APIs fail for any reason.
    * This can be used to replace the default behavior.
-   *
+   * <p>
    * The default behavior will log any network errors and rethrow all other exceptions.
-   *
+   * <p>
    * If you are loading an animation from the network, errors may occur if your user has no internet.
    * You can use this listener to retry the download or you can have it default to an error drawable
    * with {@link #setFallbackResource(int)}.
-   *
+   * <p>
    * Unless you are using {@link #setAnimationFromUrl(String)}, errors are unexpected.
-   *
+   * <p>
    * Set the listener to null to revert to the default behavior.
    */
   public void setFailureListener(@Nullable LottieListener<Throwable> failureListener) {
@@ -543,7 +547,7 @@
    * Set a drawable that will be rendered if the LottieComposition fails to load for any reason.
    * Unless you are using {@link #setAnimationFromUrl(String)}, this is an unexpected error and
    * you should handle it with {@link #setFailureListener(LottieListener)}.
-   *
+   * <p>
    * If this is a network animation, you may use this to show an error to the user or
    * you can use a failure listener to retry the download.
    */
@@ -555,8 +559,8 @@
     clearComposition();
     cancelLoaderTask();
     this.compositionTask = compositionTask
-            .addListener(loadedListener)
-            .addFailureListener(wrappedFailureListener);
+        .addListener(loadedListener)
+        .addFailureListener(wrappedFailureListener);
   }
 
   private void cancelLoaderTask() {
@@ -599,7 +603,7 @@
     requestLayout();
 
     for (LottieOnCompositionLoadedListener lottieOnCompositionLoadedListener : lottieOnCompositionLoadedListeners) {
-        lottieOnCompositionLoadedListener.onCompositionLoaded(composition);
+      lottieOnCompositionLoadedListener.onCompositionLoaded(composition);
     }
 
   }
@@ -674,7 +678,7 @@
 
   /**
    * Sets the maximum frame that the animation will end at when playing or looping.
-   *
+   * <p>
    * The value will be clamped to the composition bounds. For example, setting Integer.MAX_VALUE would result in the same
    * thing as composition.endFrame.
    */
@@ -698,6 +702,7 @@
 
   /**
    * Sets the minimum frame to the start time of the specified marker.
+   *
    * @throws IllegalArgumentException if the marker is not found.
    */
   public void setMinFrame(String markerName) {
@@ -706,6 +711,7 @@
 
   /**
    * Sets the maximum frame to the start time + duration of the specified marker.
+   *
    * @throws IllegalArgumentException if the marker is not found.
    */
   public void setMaxFrame(String markerName) {
@@ -715,6 +721,7 @@
   /**
    * Sets the minimum and maximum frame to the start time and start time + duration
    * of the specified marker.
+   *
    * @throws IllegalArgumentException if the marker is not found.
    */
   public void setMinAndMaxFrame(String markerName) {
@@ -753,6 +760,7 @@
 
   /**
    * Reverses the current animation speed. This does NOT play the animation.
+   *
    * @see #setSpeed(float)
    * @see #playAnimation()
    * @see #resumeAnimation()
@@ -868,10 +876,10 @@
    * If you use image assets, you must explicitly specify the folder in assets/ in which they are
    * located because bodymovin uses the name filenames across all compositions (img_#).
    * Do NOT rename the images themselves.
-   *
+   * <p>
    * If your images are located in src/main/assets/airbnb_loader/ then call
    * `setImageAssetsFolder("airbnb_loader/");`.
-   *
+   * <p>
    * Be wary if you are using many images, however. Lottie is designed to work with vector shapes
    * from After Effects. If your images look like they could be represented with vector shapes,
    * see if it is possible to convert them to shape layers and re-export your animation. Check
@@ -902,7 +910,7 @@
    * Use this if you can't bundle images with your app. This may be useful if you download the
    * animations from the network or have the images saved to an SD Card. In that case, Lottie
    * will defer the loading of the bitmap to this delegate.
-   *
+   * <p>
    * Be wary if you are using many images, however. Lottie is designed to work with vector shapes
    * from After Effects. If your images look like they could be represented with vector shapes,
    * see if it is possible to convert them to shape layers and re-export your animation. Check
@@ -930,7 +938,7 @@
   /**
    * Takes a {@link KeyPath}, potentially with wildcards or globstars and resolve it to a list of
    * zero or more actual {@link KeyPath Keypaths} that exist in the current animation.
-   *
+   * <p>
    * If you want to set value callbacks for any of these values, it is recommended to use the
    * returned {@link KeyPath} objects because they will be internally resolved to their content
    * and won't trigger a tree walk of the animation contents when applied.
@@ -942,7 +950,7 @@
   /**
    * Add a property callback for the specified {@link KeyPath}. This {@link KeyPath} can resolve
    * to multiple contents. In that case, the callback's value will apply to all of them.
-   *
+   * <p>
    * Internally, this will check if the {@link KeyPath} has already been resolved with
    * {@link #resolveKeyPath(KeyPath)} and will resolve it if it hasn't.
    */
@@ -967,12 +975,12 @@
   /**
    * Set the scale on the current composition. The only cost of this function is re-rendering the
    * current frame so you may call it frequent to scale something up or down.
-   *
+   * <p>
    * The smaller the animation is, the better the performance will be. You may find that scaling an
    * animation down then rendering it in a larger ImageView and letting ImageView scale it back up
    * with a scaleType such as centerInside will yield better performance with little perceivable
    * quality loss.
-   *
+   * <p>
    * You can also use a fixed view width/height in conjunction with the normal ImageView
    * scaleTypes centerCrop and centerInside.
    */
@@ -1052,10 +1060,10 @@
    * If you are experiencing a device specific crash that happens during drawing, you can set this to true
    * for those devices. If set to true, draw will be wrapped with a try/catch which will cause Lottie to
    * render an empty frame rather than crash your app.
-   *
+   * <p>
    * Ideally, you will never need this and the vast majority of apps and animations won't. However, you may use
    * this for very specific cases if absolutely necessary.
-   *
+   * <p>
    * There is no XML attr for this because it should be set programmatically and only for specific devices that
    * are known to be problematic.
    */
@@ -1088,10 +1096,10 @@
    * Lottie defaults to Automatic which will use hardware acceleration unless:
    * 1) There are dash paths and the device is pre-Pie.
    * 2) There are more than 4 masks and mattes and the device is pre-Pie.
-   *    Hardware acceleration is generally faster for those devices unless
-   *    there are many large mattes and masks in which case there is a ton
-   *    of GPU uploadTexture thrashing which makes it much slower.
-   *
+   * Hardware acceleration is generally faster for those devices unless
+   * there are many large mattes and masks in which case there is a ton
+   * of GPU uploadTexture thrashing which makes it much slower.
+   * <p>
    * In most cases, hardware rendering will be faster, even if you have mattes and masks.
    * However, if you have multiple mattes and masks (especially large ones) then you
    * should test both render modes. You should also test on pre-Pie and Pie+ devices
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieComposition.java b/lottie/src/main/java/com/airbnb/lottie/LottieComposition.java
index a613902..6dfd5fa 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieComposition.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieComposition.java
@@ -3,6 +3,7 @@
 import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.Rect;
+
 import androidx.annotation.Nullable;
 import androidx.annotation.RawRes;
 import androidx.annotation.RestrictTo;
@@ -29,9 +30,9 @@
 /**
  * After Effects/Bodymovin composition model. This is the serialized model from which the
  * animation will be created.
- *
+ * <p>
  * To create one, use {@link LottieCompositionFactory}.
- *
+ * <p>
  * It can be used with a {@link com.airbnb.lottie.LottieAnimationView} or
  * {@link com.airbnb.lottie.LottieDrawable}.
  */
@@ -41,7 +42,9 @@
   private final HashSet<String> warnings = new HashSet<>();
   private Map<String, List<Layer>> precomps;
   private Map<String, LottieImageAsset> images;
-  /** Map of font names to fonts */
+  /**
+   * Map of font names to fonts
+   */
   private Map<String, Font> fonts;
   private List<Marker> markers;
   private SparseArrayCompat<FontCharacter> characters;
@@ -234,10 +237,10 @@
      */
     @SuppressWarnings("deprecation")
     @Deprecated
-     public static Cancellable fromRawFile(Context context, @RawRes int resId, OnCompositionLoadedListener l) {
-       ListenerAdapter listener = new ListenerAdapter(l);
-       LottieCompositionFactory.fromRawRes(context, resId).addListener(listener);
-       return listener;
+    public static Cancellable fromRawFile(Context context, @RawRes int resId, OnCompositionLoadedListener l) {
+      ListenerAdapter listener = new ListenerAdapter(l);
+      LottieCompositionFactory.fromRawRes(context, resId).addListener(listener);
+      return listener;
     }
 
     /**
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieCompositionFactory.java b/lottie/src/main/java/com/airbnb/lottie/LottieCompositionFactory.java
index b263543..c2ee26f 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieCompositionFactory.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieCompositionFactory.java
@@ -1,11 +1,19 @@
 package com.airbnb.lottie;
 
+import static com.airbnb.lottie.utils.Utils.closeQuietly;
+import static okio.Okio.buffer;
+import static okio.Okio.source;
+
 import android.content.Context;
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 
+import androidx.annotation.Nullable;
+import androidx.annotation.RawRes;
+import androidx.annotation.WorkerThread;
+
 import com.airbnb.lottie.model.LottieCompositionCache;
 import com.airbnb.lottie.parser.LottieCompositionMoshiParser;
 import com.airbnb.lottie.parser.moshi.JsonReader;
@@ -24,16 +32,9 @@
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
 
-import androidx.annotation.Nullable;
-import androidx.annotation.RawRes;
-import androidx.annotation.WorkerThread;
 import okio.BufferedSource;
 import okio.Okio;
 
-import static com.airbnb.lottie.utils.Utils.closeQuietly;
-import static okio.Okio.buffer;
-import static okio.Okio.source;
-
 /**
  * Helpers to create or cache a LottieComposition.
  * <p>
@@ -54,7 +55,7 @@
    * reference magic bytes for zip compressed files.
    * useful to determine if an InputStream is a zip file or not
    */
-  private static final byte[] MAGIC = new byte[] { 0x50, 0x4b, 0x03, 0x04 };
+  private static final byte[] MAGIC = new byte[]{0x50, 0x4b, 0x03, 0x04};
 
 
   private LottieCompositionFactory() {
@@ -486,9 +487,10 @@
 
     try {
       BufferedSource peek = inputSource.peek();
-      for (byte b: MAGIC) {
-        if(peek.readByte() != b)
+      for (byte b : MAGIC) {
+        if (peek.readByte() != b) {
           return false;
+        }
       }
       peek.close();
       return true;
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieConfig.java b/lottie/src/main/java/com/airbnb/lottie/LottieConfig.java
index e82e868..6a6fa8d 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieConfig.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieConfig.java
@@ -1,16 +1,16 @@
 package com.airbnb.lottie;
 
-import com.airbnb.lottie.network.LottieNetworkFetcher;
-import com.airbnb.lottie.network.LottieNetworkCacheProvider;
-
-import java.io.File;
-
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
+import com.airbnb.lottie.network.LottieNetworkCacheProvider;
+import com.airbnb.lottie.network.LottieNetworkFetcher;
+
+import java.io.File;
+
 /**
  * Class for custom library configuration.
- *
+ * <p>
  * This should be constructed with {@link LottieConfig.Builder}
  */
 public class LottieConfig {
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java b/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java
index ce5cd47..8bfecd9 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java
@@ -16,6 +16,14 @@
 import android.view.View;
 import android.widget.ImageView;
 
+import androidx.annotation.FloatRange;
+import androidx.annotation.IntDef;
+import androidx.annotation.IntRange;
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+
 import com.airbnb.lottie.manager.FontAssetManager;
 import com.airbnb.lottie.manager.ImageAssetManager;
 import com.airbnb.lottie.model.KeyPath;
@@ -36,14 +44,6 @@
 import java.util.Iterator;
 import java.util.List;
 
-import androidx.annotation.FloatRange;
-import androidx.annotation.IntDef;
-import androidx.annotation.IntRange;
-import androidx.annotation.MainThread;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
-
 /**
  * This can be used to show an lottie animation in any place that would normally take a drawable.
  *
@@ -67,7 +67,7 @@
   private boolean safeMode = false;
 
   private final ArrayList<LazyCompositionTask> lazyCompositionTasks = new ArrayList<>();
-  private final ValueAnimator.AnimatorUpdateListener  progressUpdateListener = new ValueAnimator.AnimatorUpdateListener() {
+  private final ValueAnimator.AnimatorUpdateListener progressUpdateListener = new ValueAnimator.AnimatorUpdateListener() {
     @Override
     public void onAnimationUpdate(ValueAnimator animation) {
       if (compositionLayer != null) {
@@ -250,7 +250,7 @@
   /**
    * Enable this to debug slow animations by outlining masks and mattes. The performance overhead of the masks and mattes will
    * be proportional to the surface area of all of the masks/mattes combined.
-   *
+   * <p>
    * DO NOT leave this enabled in production.
    */
   public void setOutlineMasksAndMattes(boolean outline) {
@@ -330,7 +330,7 @@
    * If you are experiencing a device specific crash that happens during drawing, you can set this to true
    * for those devices. If set to true, draw will be wrapped with a try/catch which will cause Lottie to
    * render an empty frame rather than crash your app.
-   *
+   * <p>
    * Ideally, you will never need this and the vast majority of apps and animations won't. However, you may use
    * this for very specific cases if absolutely necessary.
    */
@@ -530,7 +530,7 @@
 
   /**
    * Sets the maximum frame that the animation will end at when playing or looping.
-   *
+   * <p>
    * The value will be clamped to the composition bounds. For example, setting Integer.MAX_VALUE would result in the same
    * thing as composition.endFrame.
    */
@@ -572,6 +572,7 @@
 
   /**
    * Sets the minimum frame to the start time of the specified marker.
+   *
    * @throws IllegalArgumentException if the marker is not found.
    */
   public void setMinFrame(final String markerName) {
@@ -593,6 +594,7 @@
 
   /**
    * Sets the maximum frame to the start time + duration of the specified marker.
+   *
    * @throws IllegalArgumentException if the marker is not found.
    */
   public void setMaxFrame(final String markerName) {
@@ -615,6 +617,7 @@
   /**
    * Sets the minimum and maximum frame to the start time and start time + duration
    * of the specified marker.
+   *
    * @throws IllegalArgumentException if the marker is not found.
    */
   public void setMinAndMaxFrame(final String markerName) {
@@ -758,10 +761,14 @@
   }
 
   @RequiresApi(api = Build.VERSION_CODES.KITKAT)
-  public void addAnimatorPauseListener(Animator.AnimatorPauseListener listener) { animator.addPauseListener(listener); }
+  public void addAnimatorPauseListener(Animator.AnimatorPauseListener listener) {
+    animator.addPauseListener(listener);
+  }
 
   @RequiresApi(api = Build.VERSION_CODES.KITKAT)
-  public void removeAnimatorPauseListener(Animator.AnimatorPauseListener listener) { animator.removePauseListener(listener); }
+  public void removeAnimatorPauseListener(Animator.AnimatorPauseListener listener) {
+    animator.removePauseListener(listener);
+  }
 
   /**
    * Sets the progress to the specified frame.
@@ -882,7 +889,7 @@
 
   /**
    * Allows ignoring system animations settings, therefore allowing animations to run even if they are disabled.
-   *
+   * <p>
    * Defaults to false.
    *
    * @param ignore if true animations will run even when they are disabled in the system settings.
@@ -1050,7 +1057,7 @@
    * drawable.addValueCallback(yourKeyPath, LottieProperty.COLOR) { yourColor }
    */
   public <T> void addValueCallback(KeyPath keyPath, T property,
-                                   final SimpleLottieValueCallback<T> callback) {
+      final SimpleLottieValueCallback<T> callback) {
     addValueCallback(keyPath, property, new LottieValueCallback<T>() {
       @Override
       public T getValue(LottieFrameInfo<T> frameInfo) {
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieImageAsset.java b/lottie/src/main/java/com/airbnb/lottie/LottieImageAsset.java
index dc0961c..faa7e9e 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieImageAsset.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieImageAsset.java
@@ -1,6 +1,7 @@
 package com.airbnb.lottie;
 
 import android.graphics.Bitmap;
+
 import androidx.annotation.Nullable;
 import androidx.annotation.RestrictTo;
 
@@ -13,7 +14,9 @@
   private final String id;
   private final String fileName;
   private final String dirName;
-  /** Pre-set a bitmap for this asset */
+  /**
+   * Pre-set a bitmap for this asset
+   */
   @Nullable private Bitmap bitmap;
 
   @RestrictTo(RestrictTo.Scope.LIBRARY)
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieProperty.java b/lottie/src/main/java/com/airbnb/lottie/LottieProperty.java
index 2982d65..98dea45 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieProperty.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieProperty.java
@@ -3,114 +3,162 @@
 import android.graphics.ColorFilter;
 import android.graphics.PointF;
 
-import com.airbnb.lottie.value.ScaleXY;
 import com.airbnb.lottie.value.LottieValueCallback;
+import com.airbnb.lottie.value.ScaleXY;
 
 /**
  * Property values are the same type as the generic type of their corresponding
  * {@link LottieValueCallback}. With this, we can use generics to maintain type safety
  * of the callbacks.
- *
+ * <p>
  * Supported properties:
  * Transform:
- *    {@link #TRANSFORM_ANCHOR_POINT}
- *    {@link #TRANSFORM_POSITION}
- *    {@link #TRANSFORM_OPACITY}
- *    {@link #TRANSFORM_SCALE}
- *    {@link #TRANSFORM_ROTATION}
- *    {@link #TRANSFORM_SKEW}
- *    {@link #TRANSFORM_SKEW_ANGLE}
- *
+ * {@link #TRANSFORM_ANCHOR_POINT}
+ * {@link #TRANSFORM_POSITION}
+ * {@link #TRANSFORM_OPACITY}
+ * {@link #TRANSFORM_SCALE}
+ * {@link #TRANSFORM_ROTATION}
+ * {@link #TRANSFORM_SKEW}
+ * {@link #TRANSFORM_SKEW_ANGLE}
+ * <p>
  * Fill:
- *    {@link #COLOR} (non-gradient)
- *    {@link #OPACITY}
- *    {@link #COLOR_FILTER}
- *
+ * {@link #COLOR} (non-gradient)
+ * {@link #OPACITY}
+ * {@link #COLOR_FILTER}
+ * <p>
  * Stroke:
- *    {@link #COLOR} (non-gradient)
- *    {@link #STROKE_WIDTH}
- *    {@link #OPACITY}
- *    {@link #COLOR_FILTER}
- *
+ * {@link #COLOR} (non-gradient)
+ * {@link #STROKE_WIDTH}
+ * {@link #OPACITY}
+ * {@link #COLOR_FILTER}
+ * <p>
  * Ellipse:
- *    {@link #POSITION}
- *    {@link #ELLIPSE_SIZE}
- *
+ * {@link #POSITION}
+ * {@link #ELLIPSE_SIZE}
+ * <p>
  * Polystar:
- *    {@link #POLYSTAR_POINTS}
- *    {@link #POLYSTAR_ROTATION}
- *    {@link #POSITION}
- *    {@link #POLYSTAR_INNER_RADIUS} (star)
- *    {@link #POLYSTAR_OUTER_RADIUS}
- *    {@link #POLYSTAR_INNER_ROUNDEDNESS} (star)
- *    {@link #POLYSTAR_OUTER_ROUNDEDNESS}
- *
+ * {@link #POLYSTAR_POINTS}
+ * {@link #POLYSTAR_ROTATION}
+ * {@link #POSITION}
+ * {@link #POLYSTAR_INNER_RADIUS} (star)
+ * {@link #POLYSTAR_OUTER_RADIUS}
+ * {@link #POLYSTAR_INNER_ROUNDEDNESS} (star)
+ * {@link #POLYSTAR_OUTER_ROUNDEDNESS}
+ * <p>
  * Repeater:
- *    All transform properties
- *    {@link #REPEATER_COPIES}
- *    {@link #REPEATER_OFFSET}
- *    {@link #TRANSFORM_ROTATION}
- *    {@link #TRANSFORM_START_OPACITY}
- *    {@link #TRANSFORM_END_OPACITY}
- *
+ * All transform properties
+ * {@link #REPEATER_COPIES}
+ * {@link #REPEATER_OFFSET}
+ * {@link #TRANSFORM_ROTATION}
+ * {@link #TRANSFORM_START_OPACITY}
+ * {@link #TRANSFORM_END_OPACITY}
+ * <p>
  * Layers:
- *    All transform properties
- *    {@link #TIME_REMAP} (composition layers only)
+ * All transform properties
+ * {@link #TIME_REMAP} (composition layers only)
  */
 public interface LottieProperty {
-  /** ColorInt **/
+  /**
+   * ColorInt
+   **/
   Integer COLOR = 1;
   Integer STROKE_COLOR = 2;
-  /** Opacity value are 0-100 to match after effects **/
+  /**
+   * Opacity value are 0-100 to match after effects
+   **/
   Integer TRANSFORM_OPACITY = 3;
-  /** [0,100] */
+  /**
+   * [0,100]
+   */
   Integer OPACITY = 4;
-  /** In Px */
+  /**
+   * In Px
+   */
   PointF TRANSFORM_ANCHOR_POINT = new PointF();
-  /** In Px */
+  /**
+   * In Px
+   */
   PointF TRANSFORM_POSITION = new PointF();
-  /** When split dimensions is enabled. In Px */
+  /**
+   * When split dimensions is enabled. In Px
+   */
   Float TRANSFORM_POSITION_X = 15f;
-  /** When split dimensions is enabled. In Px */
+  /**
+   * When split dimensions is enabled. In Px
+   */
   Float TRANSFORM_POSITION_Y = 16f;
-  /** In Px */
+  /**
+   * In Px
+   */
   PointF ELLIPSE_SIZE = new PointF();
-  /** In Px */
+  /**
+   * In Px
+   */
   PointF RECTANGLE_SIZE = new PointF();
-  /** In degrees */
+  /**
+   * In degrees
+   */
   Float CORNER_RADIUS = 0f;
-  /** In Px */
+  /**
+   * In Px
+   */
   PointF POSITION = new PointF();
   ScaleXY TRANSFORM_SCALE = new ScaleXY();
-  /** In degrees */
+  /**
+   * In degrees
+   */
   Float TRANSFORM_ROTATION = 1f;
-  /** 0-85 */
+  /**
+   * 0-85
+   */
   Float TRANSFORM_SKEW = 0f;
-  /** In degrees */
+  /**
+   * In degrees
+   */
   Float TRANSFORM_SKEW_ANGLE = 0f;
-  /** In Px */
+  /**
+   * In Px
+   */
   Float STROKE_WIDTH = 2f;
   Float TEXT_TRACKING = 3f;
   Float REPEATER_COPIES = 4f;
   Float REPEATER_OFFSET = 5f;
   Float POLYSTAR_POINTS = 6f;
-  /** In degrees */
+  /**
+   * In degrees
+   */
   Float POLYSTAR_ROTATION = 7f;
-  /** In Px */
+  /**
+   * In Px
+   */
   Float POLYSTAR_INNER_RADIUS = 8f;
-  /** In Px */
+  /**
+   * In Px
+   */
   Float POLYSTAR_OUTER_RADIUS = 9f;
-  /** [0,100] */
+  /**
+   * [0,100]
+   */
   Float POLYSTAR_INNER_ROUNDEDNESS = 10f;
-  /** [0,100] */
+  /**
+   * [0,100]
+   */
   Float POLYSTAR_OUTER_ROUNDEDNESS = 11f;
-  /** [0,100] */
+  /**
+   * [0,100]
+   */
   Float TRANSFORM_START_OPACITY = 12f;
-  /** [0,100] */
+  /**
+   * [0,100]
+   */
   Float TRANSFORM_END_OPACITY = 12.1f;
-  /** The time value in seconds */
+  /**
+   * The time value in seconds
+   */
   Float TIME_REMAP = 13f;
-  /** In Dp */
+  /**
+   * In Dp
+   */
   Float TEXT_SIZE = 14f;
 
   ColorFilter COLOR_FILTER = new ColorFilter();
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieResult.java b/lottie/src/main/java/com/airbnb/lottie/LottieResult.java
index 5ebefe7..b0f2f5c 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieResult.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieResult.java
@@ -6,7 +6,7 @@
 
 /**
  * Contains class to hold the resulting value of an async task or an exception if it failed.
- *
+ * <p>
  * Either value or exception will be non-null.
  */
 public final class LottieResult<V> {
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieTask.java b/lottie/src/main/java/com/airbnb/lottie/LottieTask.java
index c922228..2b9e914 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieTask.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieTask.java
@@ -2,6 +2,7 @@
 
 import android.os.Handler;
 import android.os.Looper;
+
 import androidx.annotation.Nullable;
 import androidx.annotation.RestrictTo;
 
@@ -21,7 +22,7 @@
  * Helper to run asynchronous tasks with a result.
  * Results can be obtained with {@link #addListener(LottieListener)}.
  * Failures can be obtained with {@link #addFailureListener(LottieListener)}.
- *
+ * <p>
  * A task will produce a single result or a single failure.
  */
 public class LottieTask<T> {
@@ -29,7 +30,7 @@
   /**
    * Set this to change the executor that LottieTasks are run on. This will be the executor that composition parsing and url
    * fetching happens on.
-   *
+   * <p>
    * You may change this to run deserialization synchronously for testing.
    */
   @SuppressWarnings("WeakerAccess")
@@ -50,8 +51,7 @@
   /**
    * runNow is only used for testing.
    */
-  @RestrictTo(RestrictTo.Scope.LIBRARY)
-  LottieTask(Callable<LottieResult<T>> runnable, boolean runNow) {
+  @RestrictTo(RestrictTo.Scope.LIBRARY) LottieTask(Callable<LottieResult<T>> runnable, boolean runNow) {
     if (runNow) {
       try {
         setResult(runnable.call());
@@ -73,6 +73,7 @@
 
   /**
    * Add a task listener. If the task has completed, the listener will be called synchronously.
+   *
    * @return the task for call chaining.
    */
   public synchronized LottieTask<T> addListener(LottieListener<T> listener) {
@@ -87,6 +88,7 @@
   /**
    * Remove a given task listener. The task will continue to execute so you can re-add
    * a listener if neccesary.
+   *
    * @return the task for call chaining.
    */
   public synchronized LottieTask<T> removeListener(LottieListener<T> listener) {
@@ -97,6 +99,7 @@
   /**
    * Add a task failure listener. This will only be called in the even that an exception
    * occurs. If an exception has already occurred, the listener will be called immediately.
+   *
    * @return the task for call chaining.
    */
   public synchronized LottieTask<T> addFailureListener(LottieListener<Throwable> listener) {
@@ -111,6 +114,7 @@
   /**
    * Remove a given task failure listener. The task will continue to execute so you can re-add
    * a listener if neccesary.
+   *
    * @return the task for call chaining.
    */
   public synchronized LottieTask<T> removeFailureListener(LottieListener<Throwable> listener) {
diff --git a/lottie/src/main/java/com/airbnb/lottie/PerformanceTracker.java b/lottie/src/main/java/com/airbnb/lottie/PerformanceTracker.java
index d16c671..0f3f4a8 100644
--- a/lottie/src/main/java/com/airbnb/lottie/PerformanceTracker.java
+++ b/lottie/src/main/java/com/airbnb/lottie/PerformanceTracker.java
@@ -1,8 +1,9 @@
 package com.airbnb.lottie;
 
+import android.util.Log;
+
 import androidx.collection.ArraySet;
 import androidx.core.util.Pair;
-import android.util.Log;
 
 import com.airbnb.lottie.utils.MeanCalculator;
 
@@ -25,17 +26,17 @@
   private final Map<String, MeanCalculator> layerRenderTimes = new HashMap<>();
   private final Comparator<Pair<String, Float>> floatComparator =
       new Comparator<Pair<String, Float>>() {
-    @Override public int compare(Pair<String, Float> o1, Pair<String, Float> o2) {
-      float r1 = o1.second;
-      float r2 = o2.second;
-      if (r2 > r1) {
-        return 1;
-      } else if (r1 > r2) {
-        return -1;
-      }
-      return 0;
-    }
-  };
+        @Override public int compare(Pair<String, Float> o1, Pair<String, Float> o2) {
+          float r1 = o1.second;
+          float r2 = o2.second;
+          if (r2 > r1) {
+            return 1;
+          } else if (r1 > r2) {
+            return -1;
+          }
+          return 0;
+        }
+      };
 
   void setEnabled(boolean enabled) {
     this.enabled = enabled;
diff --git a/lottie/src/main/java/com/airbnb/lottie/RenderMode.java b/lottie/src/main/java/com/airbnb/lottie/RenderMode.java
index b19c0eb..8003ce9 100644
--- a/lottie/src/main/java/com/airbnb/lottie/RenderMode.java
+++ b/lottie/src/main/java/com/airbnb/lottie/RenderMode.java
@@ -7,7 +7,7 @@
  * @see LottieAnimationView#setRenderMode(RenderMode) for more information.
  */
 public enum RenderMode {
-    AUTOMATIC,
-    HARDWARE,
-    SOFTWARE
+  AUTOMATIC,
+  HARDWARE,
+  SOFTWARE
 }
diff --git a/lottie/src/main/java/com/airbnb/lottie/SimpleColorFilter.java b/lottie/src/main/java/com/airbnb/lottie/SimpleColorFilter.java
index c6a21ef..bce3a19 100644
--- a/lottie/src/main/java/com/airbnb/lottie/SimpleColorFilter.java
+++ b/lottie/src/main/java/com/airbnb/lottie/SimpleColorFilter.java
@@ -2,6 +2,7 @@
 
 import android.graphics.PorterDuff;
 import android.graphics.PorterDuffColorFilter;
+
 import androidx.annotation.ColorInt;
 
 /**
diff --git a/lottie/src/main/java/com/airbnb/lottie/TextDelegate.java b/lottie/src/main/java/com/airbnb/lottie/TextDelegate.java
index 1682f97..f352c0a 100644
--- a/lottie/src/main/java/com/airbnb/lottie/TextDelegate.java
+++ b/lottie/src/main/java/com/airbnb/lottie/TextDelegate.java
@@ -9,7 +9,7 @@
 /**
  * Extend this class to replace animation text with custom text. This can be useful to handle
  * translations.
- *
+ * <p>
  * The only method you should have to override is {@link #getText(String)}.
  */
 public class TextDelegate {
@@ -22,8 +22,7 @@
   /**
    * This normally needs to be able to invalidate the view/drawable but not for the test.
    */
-  @VisibleForTesting
-  TextDelegate() {
+  @VisibleForTesting TextDelegate() {
     animationView = null;
     drawable = null;
   }
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/LPaint.java b/lottie/src/main/java/com/airbnb/lottie/animation/LPaint.java
index 93869aa..ea8f1e8 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/LPaint.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/LPaint.java
@@ -13,26 +13,26 @@
  * setComposition.
  */
 public class LPaint extends Paint {
-    public LPaint() {
-        super();
-    }
+  public LPaint() {
+    super();
+  }
 
-    public LPaint(int flags) {
-        super(flags);
-    }
+  public LPaint(int flags) {
+    super(flags);
+  }
 
-    public LPaint(PorterDuff.Mode porterDuffMode) {
-        super();
-        setXfermode(new PorterDuffXfermode(porterDuffMode));
-    }
+  public LPaint(PorterDuff.Mode porterDuffMode) {
+    super();
+    setXfermode(new PorterDuffXfermode(porterDuffMode));
+  }
 
-    public LPaint(int flags, PorterDuff.Mode porterDuffMode) {
-        super(flags);
-        setXfermode(new PorterDuffXfermode(porterDuffMode));
-    }
+  public LPaint(int flags, PorterDuff.Mode porterDuffMode) {
+    super(flags);
+    setXfermode(new PorterDuffXfermode(porterDuffMode));
+  }
 
-    @Override
-    public void setTextLocales(@NonNull LocaleList locales) {
-        // Do nothing.
-    }
+  @Override
+  public void setTextLocales(@NonNull LocaleList locales) {
+    // Do nothing.
+  }
 }
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/BaseStrokeContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/BaseStrokeContent.java
index 813a8aa..dd42f82 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/BaseStrokeContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/BaseStrokeContent.java
@@ -1,5 +1,7 @@
 package com.airbnb.lottie.animation.content;
 
+import static com.airbnb.lottie.utils.MiscUtils.clamp;
+
 import android.graphics.Canvas;
 import android.graphics.ColorFilter;
 import android.graphics.DashPathEffect;
@@ -8,6 +10,7 @@
 import android.graphics.Path;
 import android.graphics.PathMeasure;
 import android.graphics.RectF;
+
 import androidx.annotation.CallSuper;
 import androidx.annotation.Nullable;
 
@@ -31,8 +34,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import static com.airbnb.lottie.utils.MiscUtils.clamp;
-
 public abstract class BaseStrokeContent
     implements BaseKeyframeAnimation.AnimationListener, KeyPathElementContent, DrawingContent {
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/CompoundTrimPathContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/CompoundTrimPathContent.java
index f69c633..aefc869 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/CompoundTrimPathContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/CompoundTrimPathContent.java
@@ -8,15 +8,15 @@
 import java.util.List;
 
 public class CompoundTrimPathContent {
-    private List<TrimPathContent> contents = new ArrayList<>();
+  private List<TrimPathContent> contents = new ArrayList<>();
 
-    void addTrimPath(TrimPathContent trimPath) {
-        contents.add(trimPath);
-    }
+  void addTrimPath(TrimPathContent trimPath) {
+    contents.add(trimPath);
+  }
 
-    public void apply(Path path) {
-        for (int i = contents.size() - 1; i >= 0; i--) {
-            Utils.applyTrimPathIfNeeded(path, contents.get(i));
-        }
+  public void apply(Path path) {
+    for (int i = contents.size() - 1; i >= 0; i--) {
+      Utils.applyTrimPathIfNeeded(path, contents.get(i));
     }
+  }
 }
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/ContentGroup.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/ContentGroup.java
index ebe2ad5..4af6907 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/ContentGroup.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/ContentGroup.java
@@ -6,6 +6,8 @@
 import android.graphics.Path;
 import android.graphics.RectF;
 
+import androidx.annotation.Nullable;
+
 import com.airbnb.lottie.LottieDrawable;
 import com.airbnb.lottie.animation.LPaint;
 import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
@@ -22,8 +24,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import androidx.annotation.Nullable;
-
 public class ContentGroup implements DrawingContent, PathContent,
     BaseKeyframeAnimation.AnimationListener, KeyPathElement {
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/DrawingContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/DrawingContent.java
index efdba44..c6501e3 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/DrawingContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/DrawingContent.java
@@ -6,5 +6,6 @@
 
 public interface DrawingContent extends Content {
   void draw(Canvas canvas, Matrix parentMatrix, int alpha);
+
   void getBounds(RectF outBounds, Matrix parentMatrix, boolean applyParents);
 }
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/FillContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/FillContent.java
index 56420f9..a4b7d95 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/FillContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/FillContent.java
@@ -1,11 +1,14 @@
 package com.airbnb.lottie.animation.content;
 
+import static com.airbnb.lottie.utils.MiscUtils.clamp;
+
 import android.graphics.Canvas;
 import android.graphics.ColorFilter;
 import android.graphics.Matrix;
 import android.graphics.Paint;
 import android.graphics.Path;
 import android.graphics.RectF;
+
 import androidx.annotation.Nullable;
 
 import com.airbnb.lottie.L;
@@ -24,8 +27,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import static com.airbnb.lottie.utils.MiscUtils.clamp;
-
 public class FillContent
     implements DrawingContent, BaseKeyframeAnimation.AnimationListener, KeyPathElementContent {
   private final Path path = new Path();
@@ -44,7 +45,7 @@
     name = fill.getName();
     hidden = fill.isHidden();
     this.lottieDrawable = lottieDrawable;
-    if (fill.getColor() == null || fill.getOpacity() == null ) {
+    if (fill.getColor() == null || fill.getOpacity() == null) {
       colorAnimation = null;
       opacityAnimation = null;
       return;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/GradientFillContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/GradientFillContent.java
index 740819d..8ff32fd 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/GradientFillContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/GradientFillContent.java
@@ -1,5 +1,7 @@
 package com.airbnb.lottie.animation.content;
 
+import static com.airbnb.lottie.utils.MiscUtils.clamp;
+
 import android.graphics.Canvas;
 import android.graphics.ColorFilter;
 import android.graphics.LinearGradient;
@@ -10,6 +12,7 @@
 import android.graphics.RadialGradient;
 import android.graphics.RectF;
 import android.graphics.Shader;
+
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.collection.LongSparseArray;
@@ -31,8 +34,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import static com.airbnb.lottie.utils.MiscUtils.clamp;
-
 public class GradientFillContent
     implements DrawingContent, BaseKeyframeAnimation.AnimationListener, KeyPathElementContent {
   /**
@@ -239,29 +240,29 @@
         layer.removeAnimation(colorFilterAnimation);
       }
 
-       if (callback == null) {
-         colorFilterAnimation = null;
-       } else {
-         colorFilterAnimation =
-             new ValueCallbackKeyframeAnimation<>((LottieValueCallback<ColorFilter>) callback);
-         colorFilterAnimation.addUpdateListener(this);
-         layer.addAnimation(colorFilterAnimation);
-       }
-     } else if (property == LottieProperty.GRADIENT_COLOR) {
+      if (callback == null) {
+        colorFilterAnimation = null;
+      } else {
+        colorFilterAnimation =
+            new ValueCallbackKeyframeAnimation<>((LottieValueCallback<ColorFilter>) callback);
+        colorFilterAnimation.addUpdateListener(this);
+        layer.addAnimation(colorFilterAnimation);
+      }
+    } else if (property == LottieProperty.GRADIENT_COLOR) {
       if (colorCallbackAnimation != null) {
         layer.removeAnimation(colorCallbackAnimation);
       }
 
-       if (callback == null) {
-         colorCallbackAnimation = null;
-       } else {
-         //noinspection rawtypes
-         linearGradientCache.clear();
-         radialGradientCache.clear();
-         colorCallbackAnimation = new ValueCallbackKeyframeAnimation<>(callback);
-         colorCallbackAnimation.addUpdateListener(this);
-         layer.addAnimation(colorCallbackAnimation);
-       }
+      if (callback == null) {
+        colorCallbackAnimation = null;
+      } else {
+        //noinspection rawtypes
+        linearGradientCache.clear();
+        radialGradientCache.clear();
+        colorCallbackAnimation = new ValueCallbackKeyframeAnimation<>(callback);
+        colorCallbackAnimation.addUpdateListener(this);
+        layer.addAnimation(colorCallbackAnimation);
+      }
     }
   }
 }
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/GradientStrokeContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/GradientStrokeContent.java
index 351171c..b8f0555 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/GradientStrokeContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/GradientStrokeContent.java
@@ -7,6 +7,7 @@
 import android.graphics.RadialGradient;
 import android.graphics.RectF;
 import android.graphics.Shader;
+
 import androidx.annotation.Nullable;
 import androidx.collection.LongSparseArray;
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/GreedyContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/GreedyContent.java
index 0cc02bd..8686511 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/GreedyContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/GreedyContent.java
@@ -11,7 +11,7 @@
   /**
    * An iterator of contents that can be used to take ownership of contents. If ownership is taken,
    * the content should be removed from the iterator.
-   *
+   * <p>
    * The contents should be iterated by calling hasPrevious() and previous() so that the list of
    * contents is traversed from bottom to top which is the correct order for handling AE logic.
    */
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/MergePathsContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/MergePathsContent.java
index e53c4e5..b69d713 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/MergePathsContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/MergePathsContent.java
@@ -31,7 +31,8 @@
   @Override public void absorbContent(ListIterator<Content> contents) {
     // Fast forward the iterator until after this content.
     //noinspection StatementWithEmptyBody
-    while (contents.hasPrevious() && contents.previous() != this) {}
+    while (contents.hasPrevious() && contents.previous() != this) {
+    }
     while (contents.hasPrevious()) {
       Content content = contents.previous();
       if (content instanceof PathContent) {
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/PathContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/PathContent.java
index 031d7ef..c7f6bfc 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/PathContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/PathContent.java
@@ -2,8 +2,6 @@
 
 import android.graphics.Path;
 
-import com.airbnb.lottie.animation.content.Content;
-
 interface PathContent extends Content {
   Path getPath();
 }
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/PolystarContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/PolystarContent.java
index c13c63f..dc9ab8f 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/PolystarContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/PolystarContent.java
@@ -2,6 +2,7 @@
 
 import android.graphics.Path;
 import android.graphics.PointF;
+
 import androidx.annotation.Nullable;
 
 import com.airbnb.lottie.LottieDrawable;
@@ -231,7 +232,7 @@
           }
         }
 
-        path.cubicTo(previousX - cp1x,previousY - cp1y, x + cp2x, y + cp2y, x, y);
+        path.cubicTo(previousX - cp1x, previousY - cp1y, x + cp2x, y + cp2y, x, y);
       }
 
       currentAngle += dTheta;
@@ -285,7 +286,7 @@
         float cp1y = radius * roundedness * POLYGON_MAGIC_NUMBER * cp1Dy;
         float cp2x = radius * roundedness * POLYGON_MAGIC_NUMBER * cp2Dx;
         float cp2y = radius * roundedness * POLYGON_MAGIC_NUMBER * cp2Dy;
-        path.cubicTo(previousX - cp1x,previousY - cp1y, x + cp2x, y + cp2y, x, y);
+        path.cubicTo(previousX - cp1x, previousY - cp1y, x + cp2x, y + cp2y, x, y);
       } else {
         path.lineTo(x, y);
       }
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/RectangleContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/RectangleContent.java
index 919695a..f40d20e 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/RectangleContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/RectangleContent.java
@@ -4,6 +4,8 @@
 import android.graphics.PointF;
 import android.graphics.RectF;
 
+import androidx.annotation.Nullable;
+
 import com.airbnb.lottie.LottieDrawable;
 import com.airbnb.lottie.LottieProperty;
 import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
@@ -17,8 +19,6 @@
 
 import java.util.List;
 
-import androidx.annotation.Nullable;
-
 public class RectangleContent
     implements BaseKeyframeAnimation.AnimationListener, KeyPathElementContent, PathContent {
   private final Path path = new Path();
@@ -156,7 +156,7 @@
 
   @Override
   public void resolveKeyPath(KeyPath keyPath, int depth, List<KeyPath> accumulator,
-                             KeyPath currentPartialKeyPath) {
+      KeyPath currentPartialKeyPath) {
     MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, this);
   }
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/RepeaterContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/RepeaterContent.java
index e3f426c..8b6d122 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/RepeaterContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/RepeaterContent.java
@@ -4,6 +4,7 @@
 import android.graphics.Matrix;
 import android.graphics.Path;
 import android.graphics.RectF;
+
 import androidx.annotation.Nullable;
 
 import com.airbnb.lottie.LottieDrawable;
@@ -73,7 +74,8 @@
     }
     // Fast forward the iterator until after this content.
     //noinspection StatementWithEmptyBody
-    while (contentsIter.hasPrevious() && contentsIter.previous() != this) {}
+    while (contentsIter.hasPrevious() && contentsIter.previous() != this) {
+    }
     List<Content> contents = new ArrayList<>();
     while (contentsIter.hasPrevious()) {
       contents.add(contentsIter.previous());
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/StrokeContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/StrokeContent.java
index 4e4900e..212aa55 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/StrokeContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/StrokeContent.java
@@ -1,8 +1,11 @@
 package com.airbnb.lottie.animation.content;
 
+import static com.airbnb.lottie.LottieProperty.STROKE_COLOR;
+
 import android.graphics.Canvas;
 import android.graphics.ColorFilter;
 import android.graphics.Matrix;
+
 import androidx.annotation.Nullable;
 
 import com.airbnb.lottie.LottieDrawable;
@@ -14,8 +17,6 @@
 import com.airbnb.lottie.model.layer.BaseLayer;
 import com.airbnb.lottie.value.LottieValueCallback;
 
-import static com.airbnb.lottie.LottieProperty.STROKE_COLOR;
-
 public class StrokeContent extends BaseStrokeContent {
 
   private final BaseLayer layer;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/package-info.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/package-info.java
index 0ef11ae..24cec40 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/package-info.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/package-info.java
@@ -1,6 +1,6 @@
 @RestrictTo(LIBRARY)
 package com.airbnb.lottie.animation.content;
 
-import androidx.annotation.RestrictTo;
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
 
-import static androidx.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
+import androidx.annotation.RestrictTo;
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation.java b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation.java
index 118b85a..d9ca3bc 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation.java
@@ -1,5 +1,9 @@
 package com.airbnb.lottie.animation.keyframe;
 
+import androidx.annotation.FloatRange;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.airbnb.lottie.L;
 import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.value.LottieValueCallback;
@@ -7,10 +11,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import androidx.annotation.FloatRange;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
 /**
  * @param <K> Keyframe type
  * @param <A> Animation type
@@ -110,18 +110,18 @@
 
   @FloatRange(from = 0f, to = 1f)
   private float getStartDelayProgress() {
-      if (cachedStartDelayProgress == -1f) {
-        cachedStartDelayProgress = keyframesWrapper.getStartDelayProgress();
-      }
-      return cachedStartDelayProgress;
+    if (cachedStartDelayProgress == -1f) {
+      cachedStartDelayProgress = keyframesWrapper.getStartDelayProgress();
+    }
+    return cachedStartDelayProgress;
   }
 
   @FloatRange(from = 0f, to = 1f)
   float getEndProgress() {
-      if (cachedEndProgress == -1f) {
-        cachedEndProgress = keyframesWrapper.getEndProgress();
-      }
-      return cachedEndProgress;
+    if (cachedEndProgress == -1f) {
+      cachedEndProgress = keyframesWrapper.getEndProgress();
+    }
+    return cachedEndProgress;
   }
 
   public A getValue() {
@@ -337,7 +337,7 @@
     @Override
     public boolean isCachedValueEnabled(float progress) {
       if (cachedCurrentKeyframe == currentKeyframe
-              && cachedInterpolatedProgress == progress) {
+          && cachedInterpolatedProgress == progress) {
         return true;
       }
       cachedCurrentKeyframe = currentKeyframe;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/ColorKeyframeAnimation.java b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/ColorKeyframeAnimation.java
index 79447e8..6303075 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/ColorKeyframeAnimation.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/ColorKeyframeAnimation.java
@@ -30,7 +30,7 @@
     if (valueCallback != null) {
       //noinspection ConstantConditions
       Integer value = valueCallback.getValueInternal(keyframe.startFrame, keyframe.endFrame, startColor,
-              endColor, keyframeProgress, getLinearCurrentKeyframeProgress(), getProgress());
+          endColor, keyframeProgress, getLinearCurrentKeyframeProgress(), getProgress());
       if (value != null) {
         return value;
       }
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation.java b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation.java
index 7a19378..1a8908f 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation.java
@@ -1,7 +1,7 @@
 package com.airbnb.lottie.animation.keyframe;
 
-import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.utils.MiscUtils;
+import com.airbnb.lottie.value.Keyframe;
 
 import java.util.List;
 
@@ -26,8 +26,8 @@
     if (valueCallback != null) {
       //noinspection ConstantConditions
       Float value = valueCallback.getValueInternal(keyframe.startFrame, keyframe.endFrame,
-              keyframe.startValue, keyframe.endValue,
-              keyframeProgress, getLinearCurrentKeyframeProgress(), getProgress());
+          keyframe.startValue, keyframe.endValue,
+          keyframeProgress, getLinearCurrentKeyframeProgress(), getProgress());
       if (value != null) {
         return value;
       }
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/GradientColorKeyframeAnimation.java b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/GradientColorKeyframeAnimation.java
index e992e57..c4c1a51 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/GradientColorKeyframeAnimation.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/GradientColorKeyframeAnimation.java
@@ -1,7 +1,7 @@
 package com.airbnb.lottie.animation.keyframe;
 
-import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.model.content.GradientColor;
+import com.airbnb.lottie.value.Keyframe;
 
 import java.util.List;
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/IntegerKeyframeAnimation.java b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/IntegerKeyframeAnimation.java
index c67da0f..18cc944 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/IntegerKeyframeAnimation.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/IntegerKeyframeAnimation.java
@@ -1,7 +1,7 @@
 package com.airbnb.lottie.animation.keyframe;
 
-import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.utils.MiscUtils;
+import com.airbnb.lottie.value.Keyframe;
 
 import java.util.List;
 
@@ -27,8 +27,8 @@
     if (valueCallback != null) {
       //noinspection ConstantConditions
       Integer value = valueCallback.getValueInternal(keyframe.startFrame, keyframe.endFrame,
-              keyframe.startValue, keyframe.endValue,
-              keyframeProgress, getLinearCurrentKeyframeProgress(), getProgress());
+          keyframe.startValue, keyframe.endValue,
+          keyframeProgress, getLinearCurrentKeyframeProgress(), getProgress());
       if (value != null) {
         return value;
       }
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/PathKeyframe.java b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/PathKeyframe.java
index 18be2de..aea1529 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/PathKeyframe.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/PathKeyframe.java
@@ -2,11 +2,12 @@
 
 import android.graphics.Path;
 import android.graphics.PointF;
+
 import androidx.annotation.Nullable;
 
 import com.airbnb.lottie.LottieComposition;
-import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.utils.Utils;
+import com.airbnb.lottie.value.Keyframe;
 
 public class PathKeyframe extends Keyframe<PointF> {
   @Nullable private Path path;
@@ -30,7 +31,9 @@
     }
   }
 
-  /** This will be null if the startValue and endValue are the same. */
+  /**
+   * This will be null if the startValue and endValue are the same.
+   */
   @Nullable Path getPath() {
     return path;
   }
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/PathKeyframeAnimation.java b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/PathKeyframeAnimation.java
index 0702c2f..b4f1663 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/PathKeyframeAnimation.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/PathKeyframeAnimation.java
@@ -27,8 +27,8 @@
 
     if (valueCallback != null) {
       PointF value = valueCallback.getValueInternal(pathKeyframe.startFrame, pathKeyframe.endFrame,
-              pathKeyframe.startValue, pathKeyframe.endValue, getLinearCurrentKeyframeProgress(),
-              keyframeProgress, getProgress());
+          pathKeyframe.startValue, pathKeyframe.endValue, getLinearCurrentKeyframeProgress(),
+          keyframeProgress, getProgress());
       if (value != null) {
         return value;
       }
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/ScaleKeyframeAnimation.java b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/ScaleKeyframeAnimation.java
index a236e47..724e433 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/ScaleKeyframeAnimation.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/ScaleKeyframeAnimation.java
@@ -1,8 +1,8 @@
 package com.airbnb.lottie.animation.keyframe;
 
+import com.airbnb.lottie.utils.MiscUtils;
 import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.value.ScaleXY;
-import com.airbnb.lottie.utils.MiscUtils;
 
 import java.util.List;
 
@@ -24,8 +24,8 @@
     if (valueCallback != null) {
       //noinspection ConstantConditions
       ScaleXY value = valueCallback.getValueInternal(keyframe.startFrame, keyframe.endFrame,
-              startTransform, endTransform,
-              keyframeProgress, getLinearCurrentKeyframeProgress(), getProgress());
+          startTransform, endTransform,
+          keyframeProgress, getLinearCurrentKeyframeProgress(), getProgress());
       if (value != null) {
         return value;
       }
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation.java b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation.java
index fe4a901..07e0fce 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation.java
@@ -2,9 +2,9 @@
 
 import android.graphics.Path;
 
-import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.model.content.ShapeData;
 import com.airbnb.lottie.utils.MiscUtils;
+import com.airbnb.lottie.value.Keyframe;
 
 import java.util.List;
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/SplitDimensionPathKeyframeAnimation.java b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/SplitDimensionPathKeyframeAnimation.java
index fd0afe8..6d3cf46 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/SplitDimensionPathKeyframeAnimation.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/SplitDimensionPathKeyframeAnimation.java
@@ -2,13 +2,13 @@
 
 import android.graphics.PointF;
 
+import androidx.annotation.Nullable;
+
 import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.value.LottieValueCallback;
 
 import java.util.Collections;
 
-import androidx.annotation.Nullable;
-
 public class SplitDimensionPathKeyframeAnimation extends BaseKeyframeAnimation<PointF, PointF> {
   private final PointF point = new PointF();
   private final PointF pointWithCallbackValues = new PointF();
@@ -70,10 +70,11 @@
     if (xValueCallback != null) {
       Keyframe<Float> xKeyframe = xAnimation.getCurrentKeyframe();
       if (xKeyframe != null) {
-          float progress = xAnimation.getInterpolatedCurrentKeyframeProgress();
-          Float endFrame = xKeyframe.endFrame;
-          xCallbackValue = xValueCallback.getValueInternal(xKeyframe.startFrame, endFrame == null ? xKeyframe.startFrame : endFrame, xKeyframe.startValue,
-              xKeyframe.endValue, keyframeProgress, keyframeProgress, progress);
+        float progress = xAnimation.getInterpolatedCurrentKeyframeProgress();
+        Float endFrame = xKeyframe.endFrame;
+        xCallbackValue =
+            xValueCallback.getValueInternal(xKeyframe.startFrame, endFrame == null ? xKeyframe.startFrame : endFrame, xKeyframe.startValue,
+                xKeyframe.endValue, keyframeProgress, keyframeProgress, progress);
       }
     }
     if (yValueCallback != null) {
@@ -81,8 +82,9 @@
       if (yKeyframe != null) {
         float progress = yAnimation.getInterpolatedCurrentKeyframeProgress();
         Float endFrame = yKeyframe.endFrame;
-        yCallbackValue = yValueCallback.getValueInternal(yKeyframe.startFrame, endFrame == null ? yKeyframe.startFrame : endFrame, yKeyframe.startValue,
-            yKeyframe.endValue, keyframeProgress, keyframeProgress, progress);
+        yCallbackValue =
+            yValueCallback.getValueInternal(yKeyframe.startFrame, endFrame == null ? yKeyframe.startFrame : endFrame, yKeyframe.startValue,
+                yKeyframe.endValue, keyframeProgress, keyframeProgress, progress);
       }
     }
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/TextKeyframeAnimation.java b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/TextKeyframeAnimation.java
index 0c09f94..d2bcc6a 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/TextKeyframeAnimation.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/TextKeyframeAnimation.java
@@ -1,7 +1,7 @@
 package com.airbnb.lottie.animation.keyframe;
 
-import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.model.DocumentData;
+import com.airbnb.lottie.value.Keyframe;
 
 import java.util.List;
 
@@ -11,9 +11,10 @@
   }
 
   @Override DocumentData getValue(Keyframe<DocumentData> keyframe, float keyframeProgress) {
-    if (keyframeProgress != 1.0f || keyframe.endValue == null)
+    if (keyframeProgress != 1.0f || keyframe.endValue == null) {
       return keyframe.startValue;
-    else
+    } else {
       return keyframe.endValue;
+    }
   }
 }
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation.java b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation.java
index a05354c..4483fbb 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation.java
@@ -1,18 +1,5 @@
 package com.airbnb.lottie.animation.keyframe;
 
-import android.graphics.Matrix;
-import android.graphics.PointF;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import com.airbnb.lottie.value.Keyframe;
-import com.airbnb.lottie.value.LottieValueCallback;
-import com.airbnb.lottie.value.ScaleXY;
-import com.airbnb.lottie.model.animatable.AnimatableTransform;
-import com.airbnb.lottie.model.layer.BaseLayer;
-
-import java.util.Collections;
-
 import static com.airbnb.lottie.LottieProperty.TRANSFORM_ANCHOR_POINT;
 import static com.airbnb.lottie.LottieProperty.TRANSFORM_END_OPACITY;
 import static com.airbnb.lottie.LottieProperty.TRANSFORM_OPACITY;
@@ -25,6 +12,20 @@
 import static com.airbnb.lottie.LottieProperty.TRANSFORM_SKEW_ANGLE;
 import static com.airbnb.lottie.LottieProperty.TRANSFORM_START_OPACITY;
 
+import android.graphics.Matrix;
+import android.graphics.PointF;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.airbnb.lottie.model.animatable.AnimatableTransform;
+import com.airbnb.lottie.model.layer.BaseLayer;
+import com.airbnb.lottie.value.Keyframe;
+import com.airbnb.lottie.value.LottieValueCallback;
+import com.airbnb.lottie.value.ScaleXY;
+
+import java.util.Collections;
+
 public class TransformKeyframeAnimation {
   private final Matrix matrix = new Matrix();
   private final Matrix skewMatrix1;
@@ -121,7 +122,7 @@
     }
   }
 
-  public void  setProgress(float progress) {
+  public void setProgress(float progress) {
     if (opacity != null) {
       opacity.setProgress(progress);
     }
@@ -176,7 +177,7 @@
     if (rotation != null) {
       float rotation;
       if (this.rotation instanceof ValueCallbackKeyframeAnimation) {
-          rotation = this.rotation.getValue();
+        rotation = this.rotation.getValue();
       } else {
         rotation = ((FloatKeyframeAnimation) this.rotation).getFloatValue();
       }
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/ValueCallbackKeyframeAnimation.java b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/ValueCallbackKeyframeAnimation.java
index 704ba69..79a1583 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/ValueCallbackKeyframeAnimation.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/ValueCallbackKeyframeAnimation.java
@@ -1,6 +1,7 @@
 package com.airbnb.lottie.animation.keyframe;
 
 import androidx.annotation.Nullable;
+
 import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.value.LottieFrameInfo;
 import com.airbnb.lottie.value.LottieValueCallback;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/package-info.java b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/package-info.java
index fe27111..7b7e10a 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/package-info.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/package-info.java
@@ -1,6 +1,6 @@
 @RestrictTo(LIBRARY)
 package com.airbnb.lottie.animation.keyframe;
 
-import androidx.annotation.RestrictTo;
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
 
-import static androidx.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
+import androidx.annotation.RestrictTo;
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/package-info.java b/lottie/src/main/java/com/airbnb/lottie/animation/package-info.java
index 5b8b264..fb0fff4 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/package-info.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/package-info.java
@@ -1,6 +1,6 @@
 @RestrictTo(LIBRARY)
 package com.airbnb.lottie.animation;
 
-import androidx.annotation.RestrictTo;
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
 
-import static androidx.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
+import androidx.annotation.RestrictTo;
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/manager/FontAssetManager.java b/lottie/src/main/java/com/airbnb/lottie/manager/FontAssetManager.java
index 360893b..9e0de5e 100644
--- a/lottie/src/main/java/com/airbnb/lottie/manager/FontAssetManager.java
+++ b/lottie/src/main/java/com/airbnb/lottie/manager/FontAssetManager.java
@@ -3,12 +3,11 @@
 import android.content.res.AssetManager;
 import android.graphics.Typeface;
 import android.graphics.drawable.Drawable;
-import androidx.annotation.Nullable;
-import android.util.Log;
 import android.view.View;
 
+import androidx.annotation.Nullable;
+
 import com.airbnb.lottie.FontAssetDelegate;
-import com.airbnb.lottie.L;
 import com.airbnb.lottie.model.MutablePair;
 import com.airbnb.lottie.utils.Logger;
 
@@ -18,9 +17,13 @@
 public class FontAssetManager {
   private final MutablePair<String> tempPair = new MutablePair<>();
 
-  /** Pair is (fontName, fontStyle) */
+  /**
+   * Pair is (fontName, fontStyle)
+   */
   private final Map<MutablePair<String>, Typeface> fontMap = new HashMap<>();
-  /** Map of font families to their fonts. Necessary to create a font with a different style */
+  /**
+   * Map of font families to their fonts. Necessary to create a font with a different style
+   */
   private final Map<String, Typeface> fontFamilies = new HashMap<>();
   private final AssetManager assetManager;
   @Nullable private FontAssetDelegate delegate;
@@ -43,9 +46,9 @@
 
   /**
    * Sets the default file extension (include the `.`).
-   *
+   * <p>
    * e.g. `.ttf` `.otf`
-   *
+   * <p>
    * Defaults to `.ttf`
    */
   @SuppressWarnings("unused") public void setDefaultFontFileExtension(String defaultFontFileExtension) {
diff --git a/lottie/src/main/java/com/airbnb/lottie/manager/ImageAssetManager.java b/lottie/src/main/java/com/airbnb/lottie/manager/ImageAssetManager.java
index 20d239e..7182b70 100644
--- a/lottie/src/main/java/com/airbnb/lottie/manager/ImageAssetManager.java
+++ b/lottie/src/main/java/com/airbnb/lottie/manager/ImageAssetManager.java
@@ -4,11 +4,12 @@
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.drawable.Drawable;
-import androidx.annotation.Nullable;
 import android.text.TextUtils;
 import android.util.Base64;
 import android.view.View;
 
+import androidx.annotation.Nullable;
+
 import com.airbnb.lottie.ImageAssetDelegate;
 import com.airbnb.lottie.LottieImageAsset;
 import com.airbnb.lottie.utils.Logger;
diff --git a/lottie/src/main/java/com/airbnb/lottie/manager/package-info.java b/lottie/src/main/java/com/airbnb/lottie/manager/package-info.java
index 87a0854..23aa8c7 100644
--- a/lottie/src/main/java/com/airbnb/lottie/manager/package-info.java
+++ b/lottie/src/main/java/com/airbnb/lottie/manager/package-info.java
@@ -1,6 +1,6 @@
 @RestrictTo(LIBRARY)
 package com.airbnb.lottie.manager;
 
-import androidx.annotation.RestrictTo;
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
 
-import static androidx.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
+import androidx.annotation.RestrictTo;
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/CubicCurveData.java b/lottie/src/main/java/com/airbnb/lottie/model/CubicCurveData.java
index f150ff2..63cfeee 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/CubicCurveData.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/CubicCurveData.java
@@ -1,10 +1,11 @@
 package com.airbnb.lottie.model;
 
-import android.graphics.PointF;
-import androidx.annotation.RestrictTo;
-
 import static androidx.annotation.RestrictTo.Scope.LIBRARY;
 
+import android.graphics.PointF;
+
+import androidx.annotation.RestrictTo;
+
 @RestrictTo(LIBRARY)
 public class CubicCurveData {
   private final PointF controlPoint1;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/DocumentData.java b/lottie/src/main/java/com/airbnb/lottie/model/DocumentData.java
index 969eea8..87122b4 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/DocumentData.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/DocumentData.java
@@ -1,10 +1,10 @@
 package com.airbnb.lottie.model;
 
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
+
 import androidx.annotation.ColorInt;
 import androidx.annotation.RestrictTo;
 
-import static androidx.annotation.RestrictTo.Scope.LIBRARY;
-
 @RestrictTo(LIBRARY)
 public class DocumentData {
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/Font.java b/lottie/src/main/java/com/airbnb/lottie/model/Font.java
index 89be53f..9c74ff0 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/Font.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/Font.java
@@ -1,9 +1,9 @@
 package com.airbnb.lottie.model;
 
-import androidx.annotation.RestrictTo;
-
 import static androidx.annotation.RestrictTo.Scope.LIBRARY;
 
+import androidx.annotation.RestrictTo;
+
 @RestrictTo(LIBRARY)
 public class Font {
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/FontCharacter.java b/lottie/src/main/java/com/airbnb/lottie/model/FontCharacter.java
index e09fbbd..00ab42a 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/FontCharacter.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/FontCharacter.java
@@ -1,13 +1,13 @@
 package com.airbnb.lottie.model;
 
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
+
 import androidx.annotation.RestrictTo;
 
 import com.airbnb.lottie.model.content.ShapeGroup;
 
 import java.util.List;
 
-import static androidx.annotation.RestrictTo.Scope.LIBRARY;
-
 @RestrictTo(LIBRARY)
 public class FontCharacter {
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/KeyPath.java b/lottie/src/main/java/com/airbnb/lottie/model/KeyPath.java
index 64fe09f..6d9cad1 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/KeyPath.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/KeyPath.java
@@ -13,33 +13,33 @@
  * The keypath can contain wildcards ('*') with match exactly 1 item.
  * or globstars ('**') which match 0 or more items. or KeyPath.COMPOSITION
  * to represent the root composition layer.
- *
+ * <p>
  * For example, if your content were arranged like this:
  * Gabriel (Shape Layer)
- *     Body (Shape Group)
- *         Left Hand (Shape)
- *             Fill (Fill)
- *             Transform (Transform)
- *         ...
+ * Body (Shape Group)
+ * Left Hand (Shape)
+ * Fill (Fill)
+ * Transform (Transform)
+ * ...
  * Brandon (Shape Layer)
- *     Body (Shape Group)
- *         Left Hand (Shape)
- *             Fill (Fill)
- *             Transform (Transform)
- *         ...
- *
- *
+ * Body (Shape Group)
+ * Left Hand (Shape)
+ * Fill (Fill)
+ * Transform (Transform)
+ * ...
+ * <p>
+ * <p>
  * You could:
- *     Match Gabriel left hand fill:
- *        new KeyPath("Gabriel", "Body", "Left Hand", "Fill");
- *     Match Gabriel and Brandon's left hand fill:
- *        new KeyPath("*", "Body", Left Hand", "Fill");
- *     Match anything with the name Fill:
- *        new KeyPath("**", "Fill");
- *     Target the the root composition layer:
- *        KeyPath.COMPOSITION
- *
- *
+ * Match Gabriel left hand fill:
+ * new KeyPath("Gabriel", "Body", "Left Hand", "Fill");
+ * Match Gabriel and Brandon's left hand fill:
+ * new KeyPath("*", "Body", Left Hand", "Fill");
+ * Match anything with the name Fill:
+ * new KeyPath("**", "Fill");
+ * Target the the root composition layer:
+ * KeyPath.COMPOSITION
+ * <p>
+ * <p>
  * NOTE: Content that are part of merge paths or repeaters cannot currently be resolved with
  * a {@link KeyPath}. This may be fixed in the future.
  */
@@ -124,7 +124,7 @@
   /**
    * For a given key and depth, returns how much the depth should be incremented by when
    * resolving a keypath to children.
-   *
+   * <p>
    * This can be 0 or 2 when there is a globstar and the next key either matches or doesn't match
    * the current key.
    */
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/KeyPathElement.java b/lottie/src/main/java/com/airbnb/lottie/model/KeyPathElement.java
index b3a095f..e43f600 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/KeyPathElement.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/KeyPathElement.java
@@ -1,5 +1,7 @@
 package com.airbnb.lottie.model;
 
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
+
 import androidx.annotation.Nullable;
 import androidx.annotation.RestrictTo;
 
@@ -7,8 +9,6 @@
 
 import java.util.List;
 
-import static androidx.annotation.RestrictTo.Scope.LIBRARY;
-
 /**
  * Any item that can be a part of a {@link KeyPath} should implement this.
  */
@@ -17,14 +17,14 @@
 
   /**
    * Called recursively during keypath resolution.
-   *
+   * <p>
    * The overridden method should just call:
-   *        MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, this);
+   * MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, this);
    *
-   * @param keyPath The full keypath being resolved.
-   * @param depth The current depth that this element should be checked at in the keypath.
-   * @param accumulator A list of fully resolved keypaths. If this element fully matches the
-   *                    keypath then it should add itself to this list.
+   * @param keyPath               The full keypath being resolved.
+   * @param depth                 The current depth that this element should be checked at in the keypath.
+   * @param accumulator           A list of fully resolved keypaths. If this element fully matches the
+   *                              keypath then it should add itself to this list.
    * @param currentPartialKeyPath A keypath that contains all parent element of this one.
    *                              This element should create a copy of this and append itself
    *                              with KeyPath#addKey when it adds itself to the accumulator
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/LottieCompositionCache.java b/lottie/src/main/java/com/airbnb/lottie/model/LottieCompositionCache.java
index c219f75..cfa897b 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/LottieCompositionCache.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/LottieCompositionCache.java
@@ -18,8 +18,7 @@
 
   private final LruCache<String, LottieComposition> cache = new LruCache<>(20);
 
-  @VisibleForTesting
-  LottieCompositionCache() {
+  @VisibleForTesting LottieCompositionCache() {
   }
 
   @Nullable
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/MutablePair.java b/lottie/src/main/java/com/airbnb/lottie/model/MutablePair.java
index e116601..dbb6b2a 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/MutablePair.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/MutablePair.java
@@ -1,13 +1,14 @@
 package com.airbnb.lottie.model;
 
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
+
 import androidx.annotation.Nullable;
 import androidx.annotation.RestrictTo;
 import androidx.core.util.Pair;
 
-import static androidx.annotation.RestrictTo.Scope.LIBRARY;
-
 /**
  * Non final version of {@link Pair}
+ *
  * @param <T>
  */
 @RestrictTo(LIBRARY)
@@ -26,7 +27,7 @@
    *
    * @param o the {@link Pair} to which this one is to be checked for equality
    * @return true if the underlying objects of the Pair are both considered
-   *         equal
+   * equal
    */
   @Override
   public boolean equals(Object o) {
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableColorValue.java b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableColorValue.java
index b1ff407..fee7b66 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableColorValue.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableColorValue.java
@@ -1,8 +1,8 @@
 package com.airbnb.lottie.model.animatable;
 
-import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
 import com.airbnb.lottie.animation.keyframe.ColorKeyframeAnimation;
+import com.airbnb.lottie.value.Keyframe;
 
 import java.util.List;
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableFloatValue.java b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableFloatValue.java
index 54671df..a73da37 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableFloatValue.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableFloatValue.java
@@ -1,8 +1,8 @@
 package com.airbnb.lottie.model.animatable;
 
-import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
 import com.airbnb.lottie.animation.keyframe.FloatKeyframeAnimation;
+import com.airbnb.lottie.value.Keyframe;
 
 import java.util.List;
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableGradientColorValue.java b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableGradientColorValue.java
index 3524b69..027c6c6 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableGradientColorValue.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableGradientColorValue.java
@@ -1,9 +1,9 @@
 package com.airbnb.lottie.model.animatable;
 
-import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
 import com.airbnb.lottie.animation.keyframe.GradientColorKeyframeAnimation;
 import com.airbnb.lottie.model.content.GradientColor;
+import com.airbnb.lottie.value.Keyframe;
 
 import java.util.List;
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableIntegerValue.java b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableIntegerValue.java
index 16d1df2..494e766 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableIntegerValue.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableIntegerValue.java
@@ -1,8 +1,8 @@
 package com.airbnb.lottie.model.animatable;
 
-import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
 import com.airbnb.lottie.animation.keyframe.IntegerKeyframeAnimation;
+import com.airbnb.lottie.value.Keyframe;
 
 import java.util.List;
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatablePathValue.java b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatablePathValue.java
index f106234..bf8dddd 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatablePathValue.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatablePathValue.java
@@ -2,10 +2,10 @@
 
 import android.graphics.PointF;
 
-import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
 import com.airbnb.lottie.animation.keyframe.PathKeyframeAnimation;
 import com.airbnb.lottie.animation.keyframe.PointKeyframeAnimation;
+import com.airbnb.lottie.value.Keyframe;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatablePointValue.java b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatablePointValue.java
index 897b4b8..867040a 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatablePointValue.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatablePointValue.java
@@ -2,9 +2,9 @@
 
 import android.graphics.PointF;
 
-import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
 import com.airbnb.lottie.animation.keyframe.PointKeyframeAnimation;
+import com.airbnb.lottie.value.Keyframe;
 
 import java.util.List;
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableScaleValue.java b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableScaleValue.java
index 0ead463..c168e5e 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableScaleValue.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableScaleValue.java
@@ -1,8 +1,8 @@
 package com.airbnb.lottie.model.animatable;
 
-import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
 import com.airbnb.lottie.animation.keyframe.ScaleKeyframeAnimation;
+import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.value.ScaleXY;
 
 import java.util.List;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableShapeValue.java b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableShapeValue.java
index c309563..d88dacf 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableShapeValue.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableShapeValue.java
@@ -2,10 +2,10 @@
 
 import android.graphics.Path;
 
-import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
 import com.airbnb.lottie.animation.keyframe.ShapeKeyframeAnimation;
 import com.airbnb.lottie.model.content.ShapeData;
+import com.airbnb.lottie.value.Keyframe;
 
 import java.util.List;
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableSplitDimensionPathValue.java b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableSplitDimensionPathValue.java
index 1242270..f046b53 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableSplitDimensionPathValue.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableSplitDimensionPathValue.java
@@ -6,7 +6,6 @@
 import com.airbnb.lottie.animation.keyframe.SplitDimensionPathKeyframeAnimation;
 import com.airbnb.lottie.value.Keyframe;
 
-import java.util.ArrayList;
 import java.util.List;
 
 public class AnimatableSplitDimensionPathValue implements AnimatableValue<PointF, PointF> {
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableTextFrame.java b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableTextFrame.java
index 372a347..231a296 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableTextFrame.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableTextFrame.java
@@ -1,8 +1,8 @@
 package com.airbnb.lottie.model.animatable;
 
-import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.animation.keyframe.TextKeyframeAnimation;
 import com.airbnb.lottie.model.DocumentData;
+import com.airbnb.lottie.value.Keyframe;
 
 import java.util.List;
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableTransform.java b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableTransform.java
index ba5fe69..2fb5ac9 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableTransform.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableTransform.java
@@ -1,7 +1,9 @@
 package com.airbnb.lottie.model.animatable;
 
 import android.graphics.PointF;
+
 import androidx.annotation.Nullable;
+
 import com.airbnb.lottie.LottieDrawable;
 import com.airbnb.lottie.animation.content.Content;
 import com.airbnb.lottie.animation.content.ModifierContent;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableValue.java b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableValue.java
index 8cbf9a6..9dcf176 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableValue.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableValue.java
@@ -7,6 +7,8 @@
 
 public interface AnimatableValue<K, A> {
   List<Keyframe<K>> getKeyframes();
+
   boolean isStatic();
+
   BaseKeyframeAnimation<K, A> createAnimation();
 }
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/animatable/BaseAnimatableValue.java b/lottie/src/main/java/com/airbnb/lottie/model/animatable/BaseAnimatableValue.java
index 4f930ae..6a5f6a7 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/animatable/BaseAnimatableValue.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/animatable/BaseAnimatableValue.java
@@ -1,7 +1,5 @@
 package com.airbnb.lottie.model.animatable;
 
-import android.graphics.PointF;
-
 import com.airbnb.lottie.value.Keyframe;
 
 import java.util.Arrays;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/animatable/package-info.java b/lottie/src/main/java/com/airbnb/lottie/model/animatable/package-info.java
index b64d3a6..407730c 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/animatable/package-info.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/animatable/package-info.java
@@ -1,6 +1,6 @@
 @RestrictTo(LIBRARY)
 package com.airbnb.lottie.model.animatable;
 
-import androidx.annotation.RestrictTo;
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
 
-import static androidx.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
+import androidx.annotation.RestrictTo;
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/CircleShape.java b/lottie/src/main/java/com/airbnb/lottie/model/content/CircleShape.java
index 64adcba..9d7add6 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/CircleShape.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/CircleShape.java
@@ -17,7 +17,7 @@
   private final boolean hidden;
 
   public CircleShape(String name, AnimatableValue<PointF, PointF> position,
-                     AnimatablePointValue size, boolean isReversed, boolean hidden) {
+      AnimatablePointValue size, boolean isReversed, boolean hidden) {
     this.name = name;
     this.position = position;
     this.size = size;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/GradientFill.java b/lottie/src/main/java/com/airbnb/lottie/model/content/GradientFill.java
index cd25721..fde5123 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/GradientFill.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/GradientFill.java
@@ -1,6 +1,7 @@
 package com.airbnb.lottie.model.content;
 
 import android.graphics.Path;
+
 import androidx.annotation.Nullable;
 
 import com.airbnb.lottie.LottieDrawable;
@@ -26,10 +27,10 @@
   private final boolean hidden;
 
   public GradientFill(String name, GradientType gradientType, Path.FillType fillType,
-                      AnimatableGradientColorValue gradientColor,
-                      AnimatableIntegerValue opacity, AnimatablePointValue startPoint,
-                      AnimatablePointValue endPoint, AnimatableFloatValue highlightLength,
-                      AnimatableFloatValue highlightAngle, boolean hidden) {
+      AnimatableGradientColorValue gradientColor,
+      AnimatableIntegerValue opacity, AnimatablePointValue startPoint,
+      AnimatablePointValue endPoint, AnimatableFloatValue highlightLength,
+      AnimatableFloatValue highlightAngle, boolean hidden) {
     this.gradientType = gradientType;
     this.fillType = fillType;
     this.gradientColor = gradientColor;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/GradientStroke.java b/lottie/src/main/java/com/airbnb/lottie/model/content/GradientStroke.java
index d9b27a5..837277c 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/GradientStroke.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/GradientStroke.java
@@ -30,12 +30,12 @@
   private final boolean hidden;
 
   public GradientStroke(String name, GradientType gradientType,
-                        AnimatableGradientColorValue gradientColor,
-                        AnimatableIntegerValue opacity, AnimatablePointValue startPoint,
-                        AnimatablePointValue endPoint, AnimatableFloatValue width, ShapeStroke.LineCapType capType,
-                        ShapeStroke.LineJoinType joinType, float miterLimit,
-                        List<AnimatableFloatValue> lineDashPattern,
-                        @Nullable AnimatableFloatValue dashOffset, boolean hidden) {
+      AnimatableGradientColorValue gradientColor,
+      AnimatableIntegerValue opacity, AnimatablePointValue startPoint,
+      AnimatablePointValue endPoint, AnimatableFloatValue width, ShapeStroke.LineCapType capType,
+      ShapeStroke.LineJoinType joinType, float miterLimit,
+      List<AnimatableFloatValue> lineDashPattern,
+      @Nullable AnimatableFloatValue dashOffset, boolean hidden) {
     this.name = name;
     this.gradientType = gradientType;
     this.gradientColor = gradientColor;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/MergePaths.java b/lottie/src/main/java/com/airbnb/lottie/model/content/MergePaths.java
index 3d1184d..f8d4453 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/MergePaths.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/MergePaths.java
@@ -68,6 +68,6 @@
 
   @Override
   public String toString() {
-    return "MergePaths{" + "mode=" +  mode + '}';
+    return "MergePaths{" + "mode=" + mode + '}';
   }
 }
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/PolystarShape.java b/lottie/src/main/java/com/airbnb/lottie/model/content/PolystarShape.java
index f719a1f..1ebab06 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/PolystarShape.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/PolystarShape.java
@@ -42,10 +42,10 @@
   private final boolean hidden;
 
   public PolystarShape(String name, Type type, AnimatableFloatValue points,
-                       AnimatableValue<PointF, PointF> position,
-                       AnimatableFloatValue rotation, AnimatableFloatValue innerRadius,
-                       AnimatableFloatValue outerRadius, AnimatableFloatValue innerRoundedness,
-                       AnimatableFloatValue outerRoundedness, boolean hidden) {
+      AnimatableValue<PointF, PointF> position,
+      AnimatableFloatValue rotation, AnimatableFloatValue innerRadius,
+      AnimatableFloatValue outerRadius, AnimatableFloatValue innerRoundedness,
+      AnimatableFloatValue outerRoundedness, boolean hidden) {
     this.name = name;
     this.type = type;
     this.points = points;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/RectangleShape.java b/lottie/src/main/java/com/airbnb/lottie/model/content/RectangleShape.java
index 90c0db9..6edd030 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/RectangleShape.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/RectangleShape.java
@@ -6,7 +6,6 @@
 import com.airbnb.lottie.animation.content.Content;
 import com.airbnb.lottie.animation.content.RectangleContent;
 import com.airbnb.lottie.model.animatable.AnimatableFloatValue;
-import com.airbnb.lottie.model.animatable.AnimatablePointValue;
 import com.airbnb.lottie.model.animatable.AnimatableValue;
 import com.airbnb.lottie.model.layer.BaseLayer;
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/Repeater.java b/lottie/src/main/java/com/airbnb/lottie/model/content/Repeater.java
index f8938f8..f031aa7 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/Repeater.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/Repeater.java
@@ -17,7 +17,7 @@
   private final boolean hidden;
 
   public Repeater(String name, AnimatableFloatValue copies, AnimatableFloatValue offset,
-                  AnimatableTransform transform, boolean hidden) {
+      AnimatableTransform transform, boolean hidden) {
     this.name = name;
     this.copies = copies;
     this.offset = offset;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeData.java b/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeData.java
index 5c0cdba..97d381c 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeData.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeData.java
@@ -1,6 +1,7 @@
 package com.airbnb.lottie.model.content;
 
 import android.graphics.PointF;
+
 import androidx.annotation.FloatRange;
 
 import com.airbnb.lottie.model.CubicCurveData;
@@ -56,7 +57,7 @@
       Logger.warning("Curves must have the same number of control points. Shape 1: " +
           shapeData1.getCurves().size() + "\tShape 2: " + shapeData2.getCurves().size());
     }
-    
+
     int points = Math.min(shapeData1.getCurves().size(), shapeData2.getCurves().size());
     if (curves.size() < points) {
       for (int i = curves.size(); i < points; i++) {
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeFill.java b/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeFill.java
index 26e75d2..f992d10 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeFill.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeFill.java
@@ -1,6 +1,7 @@
 package com.airbnb.lottie.model.content;
 
 import android.graphics.Path;
+
 import androidx.annotation.Nullable;
 
 import com.airbnb.lottie.LottieDrawable;
@@ -19,7 +20,7 @@
   private final boolean hidden;
 
   public ShapeFill(String name, boolean fillEnabled, Path.FillType fillType,
-                   @Nullable AnimatableColorValue color, @Nullable AnimatableIntegerValue opacity, boolean hidden) {
+      @Nullable AnimatableColorValue color, @Nullable AnimatableIntegerValue opacity, boolean hidden) {
     this.name = name;
     this.fillEnabled = fillEnabled;
     this.fillType = fillType;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeStroke.java b/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeStroke.java
index 240158e..dacb6be 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeStroke.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeStroke.java
@@ -1,6 +1,7 @@
 package com.airbnb.lottie.model.content;
 
 import android.graphics.Paint;
+
 import androidx.annotation.Nullable;
 
 import com.airbnb.lottie.LottieDrawable;
@@ -62,9 +63,9 @@
   private final boolean hidden;
 
   public ShapeStroke(String name, @Nullable AnimatableFloatValue offset,
-                     List<AnimatableFloatValue> lineDashPattern, AnimatableColorValue color,
-                     AnimatableIntegerValue opacity, AnimatableFloatValue width, LineCapType capType,
-                     LineJoinType joinType, float miterLimit, boolean hidden) {
+      List<AnimatableFloatValue> lineDashPattern, AnimatableColorValue color,
+      AnimatableIntegerValue opacity, AnimatableFloatValue width, LineCapType capType,
+      LineJoinType joinType, float miterLimit, boolean hidden) {
     this.name = name;
     this.offset = offset;
     this.lineDashPattern = lineDashPattern;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeTrimPath.java b/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeTrimPath.java
index aae9099..bf75948 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeTrimPath.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeTrimPath.java
@@ -32,7 +32,7 @@
   private final boolean hidden;
 
   public ShapeTrimPath(String name, Type type, AnimatableFloatValue start,
-                       AnimatableFloatValue end, AnimatableFloatValue offset, boolean hidden) {
+      AnimatableFloatValue end, AnimatableFloatValue offset, boolean hidden) {
     this.name = name;
     this.type = type;
     this.start = start;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/package-info.java b/lottie/src/main/java/com/airbnb/lottie/model/content/package-info.java
index 4a474d3..3278a49 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/package-info.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/package-info.java
@@ -1,6 +1,6 @@
 @RestrictTo(LIBRARY)
 package com.airbnb.lottie.model.content;
 
-import androidx.annotation.RestrictTo;
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
 
-import static androidx.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
+import androidx.annotation.RestrictTo;
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/BaseLayer.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/BaseLayer.java
index f287299..8078b0f 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/layer/BaseLayer.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/BaseLayer.java
@@ -1,11 +1,19 @@
 package com.airbnb.lottie.model.layer;
 
-import android.graphics.*;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Matrix;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.graphics.PorterDuff;
+import android.graphics.PorterDuffXfermode;
+import android.graphics.RectF;
 import android.os.Build;
 
 import androidx.annotation.CallSuper;
 import androidx.annotation.FloatRange;
 import androidx.annotation.Nullable;
+
 import com.airbnb.lottie.L;
 import com.airbnb.lottie.LottieComposition;
 import com.airbnb.lottie.LottieDrawable;
@@ -131,7 +139,7 @@
   /**
    * Enable this to debug slow animations by outlining masks and mattes. The performance overhead of the masks and mattes will
    * be proportional to the surface area of all of the masks/mattes combined.
-   *
+   * <p>
    * DO NOT leave this enabled in production.
    */
   void setOutlineMasksAndMattes(boolean outline) {
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/CompositionLayer.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/CompositionLayer.java
index 33361ed..11632bd 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/layer/CompositionLayer.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/CompositionLayer.java
@@ -5,6 +5,10 @@
 import android.graphics.Paint;
 import android.graphics.RectF;
 
+import androidx.annotation.FloatRange;
+import androidx.annotation.Nullable;
+import androidx.collection.LongSparseArray;
+
 import com.airbnb.lottie.L;
 import com.airbnb.lottie.LottieComposition;
 import com.airbnb.lottie.LottieDrawable;
@@ -19,10 +23,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import androidx.annotation.FloatRange;
-import androidx.annotation.Nullable;
-import androidx.collection.LongSparseArray;
-
 public class CompositionLayer extends BaseLayer {
   @Nullable private BaseKeyframeAnimation<Float, Float> timeRemapping;
   private final List<BaseLayer> layers = new ArrayList<>();
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/ImageLayer.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/ImageLayer.java
index f7e9186..fa855ae 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/layer/ImageLayer.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/ImageLayer.java
@@ -7,6 +7,7 @@
 import android.graphics.Paint;
 import android.graphics.Rect;
 import android.graphics.RectF;
+
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
@@ -44,7 +45,7 @@
     canvas.concat(parentMatrix);
     src.set(0, 0, bitmap.getWidth(), bitmap.getHeight());
     dst.set(0, 0, (int) (bitmap.getWidth() * density), (int) (bitmap.getHeight() * density));
-    canvas.drawBitmap(bitmap, src, dst , paint);
+    canvas.drawBitmap(bitmap, src, dst, paint);
     canvas.restore();
   }
 
@@ -67,14 +68,14 @@
   @Override
   public <T> void addValueCallback(T property, @Nullable LottieValueCallback<T> callback) {
     super.addValueCallback(property, callback);
-     if (property == LottieProperty.COLOR_FILTER) {
-       if (callback == null) {
-         colorFilterAnimation = null;
-       } else {
-         //noinspection unchecked
-         colorFilterAnimation =
-             new ValueCallbackKeyframeAnimation<>((LottieValueCallback<ColorFilter>) callback);
-       }
+    if (property == LottieProperty.COLOR_FILTER) {
+      if (callback == null) {
+        colorFilterAnimation = null;
+      } else {
+        //noinspection unchecked
+        colorFilterAnimation =
+            new ValueCallbackKeyframeAnimation<>((LottieValueCallback<ColorFilter>) callback);
+      }
     }
   }
 }
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/Layer.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/Layer.java
index 6b55581..ec144e7 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/layer/Layer.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/Layer.java
@@ -3,13 +3,13 @@
 import androidx.annotation.Nullable;
 
 import com.airbnb.lottie.LottieComposition;
-import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.model.animatable.AnimatableFloatValue;
 import com.airbnb.lottie.model.animatable.AnimatableTextFrame;
 import com.airbnb.lottie.model.animatable.AnimatableTextProperties;
 import com.airbnb.lottie.model.animatable.AnimatableTransform;
 import com.airbnb.lottie.model.content.ContentModel;
 import com.airbnb.lottie.model.content.Mask;
+import com.airbnb.lottie.value.Keyframe;
 
 import java.util.List;
 import java.util.Locale;
@@ -59,12 +59,12 @@
   private final boolean hidden;
 
   public Layer(List<ContentModel> shapes, LottieComposition composition, String layerName, long layerId,
-               LayerType layerType, long parentId, @Nullable String refId, List<Mask> masks,
-               AnimatableTransform transform, int solidWidth, int solidHeight, int solidColor,
-               float timeStretch, float startFrame, int preCompWidth, int preCompHeight,
-               @Nullable AnimatableTextFrame text, @Nullable AnimatableTextProperties textProperties,
-               List<Keyframe<Float>> inOutKeyframes, MatteType matteType,
-               @Nullable AnimatableFloatValue timeRemapping, boolean hidden) {
+      LayerType layerType, long parentId, @Nullable String refId, List<Mask> masks,
+      AnimatableTransform transform, int solidWidth, int solidHeight, int solidColor,
+      float timeStretch, float startFrame, int preCompWidth, int preCompHeight,
+      @Nullable AnimatableTextFrame text, @Nullable AnimatableTextProperties textProperties,
+      List<Keyframe<Float>> inOutKeyframes, MatteType matteType,
+      @Nullable AnimatableFloatValue timeRemapping, boolean hidden) {
     this.shapes = shapes;
     this.composition = composition;
     this.layerName = layerName;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/ShapeLayer.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/ShapeLayer.java
index eeea415..e44fc99 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/layer/ShapeLayer.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/ShapeLayer.java
@@ -3,6 +3,7 @@
 import android.graphics.Canvas;
 import android.graphics.Matrix;
 import android.graphics.RectF;
+
 import androidx.annotation.NonNull;
 
 import com.airbnb.lottie.LottieDrawable;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/SolidLayer.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/SolidLayer.java
index 73f85f6..993e1b3 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/layer/SolidLayer.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/SolidLayer.java
@@ -7,6 +7,7 @@
 import android.graphics.Paint;
 import android.graphics.Path;
 import android.graphics.RectF;
+
 import androidx.annotation.Nullable;
 
 import com.airbnb.lottie.LottieDrawable;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/TextLayer.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/TextLayer.java
index 76da86a..d15c537 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/layer/TextLayer.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/TextLayer.java
@@ -7,8 +7,10 @@
 import android.graphics.Path;
 import android.graphics.RectF;
 import android.graphics.Typeface;
+
 import androidx.annotation.Nullable;
 import androidx.collection.LongSparseArray;
+
 import com.airbnb.lottie.LottieComposition;
 import com.airbnb.lottie.LottieDrawable;
 import com.airbnb.lottie.LottieProperty;
@@ -461,7 +463,7 @@
       }
 
       if (callback == null) {
-          colorCallbackAnimation = null;
+        colorCallbackAnimation = null;
       } else {
         colorCallbackAnimation = new ValueCallbackKeyframeAnimation<>((LottieValueCallback<Integer>) callback);
         colorCallbackAnimation.addUpdateListener(this);
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/package-info.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/package-info.java
index 58db6e7..761ae4b 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/layer/package-info.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/package-info.java
@@ -1,6 +1,6 @@
 @RestrictTo(LIBRARY)
 package com.airbnb.lottie.model.layer;
 
-import androidx.annotation.RestrictTo;
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
 
-import static androidx.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
+import androidx.annotation.RestrictTo;
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/network/DefaultLottieFetchResult.java b/lottie/src/main/java/com/airbnb/lottie/network/DefaultLottieFetchResult.java
index 9a408ef..06dac3a 100644
--- a/lottie/src/main/java/com/airbnb/lottie/network/DefaultLottieFetchResult.java
+++ b/lottie/src/main/java/com/airbnb/lottie/network/DefaultLottieFetchResult.java
@@ -1,5 +1,8 @@
 package com.airbnb.lottie.network;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.airbnb.lottie.utils.Logger;
 
 import java.io.BufferedReader;
@@ -8,9 +11,6 @@
 import java.io.InputStreamReader;
 import java.net.HttpURLConnection;
 
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
 public class DefaultLottieFetchResult implements LottieFetchResult {
 
   @NonNull
diff --git a/lottie/src/main/java/com/airbnb/lottie/network/DefaultLottieNetworkFetcher.java b/lottie/src/main/java/com/airbnb/lottie/network/DefaultLottieNetworkFetcher.java
index 68b2ac9..df4c348 100644
--- a/lottie/src/main/java/com/airbnb/lottie/network/DefaultLottieNetworkFetcher.java
+++ b/lottie/src/main/java/com/airbnb/lottie/network/DefaultLottieNetworkFetcher.java
@@ -1,11 +1,11 @@
 package com.airbnb.lottie.network;
 
+import androidx.annotation.NonNull;
+
 import java.io.IOException;
 import java.net.HttpURLConnection;
 import java.net.URL;
 
-import androidx.annotation.NonNull;
-
 public class DefaultLottieNetworkFetcher implements LottieNetworkFetcher {
 
   @Override
diff --git a/lottie/src/main/java/com/airbnb/lottie/network/LottieFetchResult.java b/lottie/src/main/java/com/airbnb/lottie/network/LottieFetchResult.java
index 5a1a762..cae68d5 100644
--- a/lottie/src/main/java/com/airbnb/lottie/network/LottieFetchResult.java
+++ b/lottie/src/main/java/com/airbnb/lottie/network/LottieFetchResult.java
@@ -1,12 +1,12 @@
 package com.airbnb.lottie.network;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import java.io.Closeable;
 import java.io.IOException;
 import java.io.InputStream;
 
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
 /**
  * The result of the operation of obtaining a Lottie animation
  */
@@ -17,21 +17,18 @@
   boolean isSuccessful();
 
   /**
-   *
    * @return Received content stream
    */
   @NonNull
   InputStream bodyByteStream() throws IOException;
 
   /**
-   *
    * @return Type of content received
    */
   @Nullable
   String contentType();
 
   /**
-   *
    * @return Operation error
    */
   @Nullable
diff --git a/lottie/src/main/java/com/airbnb/lottie/network/LottieNetworkCacheProvider.java b/lottie/src/main/java/com/airbnb/lottie/network/LottieNetworkCacheProvider.java
index 8258ba6..00a11b3 100644
--- a/lottie/src/main/java/com/airbnb/lottie/network/LottieNetworkCacheProvider.java
+++ b/lottie/src/main/java/com/airbnb/lottie/network/LottieNetworkCacheProvider.java
@@ -1,12 +1,13 @@
 package com.airbnb.lottie.network;
 
 
-import java.io.File;
-
 import androidx.annotation.NonNull;
 
+import java.io.File;
+
 /**
  * Interface for providing the custom cache directory where animations downloaded via url are saved.
+ *
  * @see com.airbnb.lottie.Lottie#initialize
  */
 public interface LottieNetworkCacheProvider {
diff --git a/lottie/src/main/java/com/airbnb/lottie/network/LottieNetworkFetcher.java b/lottie/src/main/java/com/airbnb/lottie/network/LottieNetworkFetcher.java
index a607d51..4b940bf 100644
--- a/lottie/src/main/java/com/airbnb/lottie/network/LottieNetworkFetcher.java
+++ b/lottie/src/main/java/com/airbnb/lottie/network/LottieNetworkFetcher.java
@@ -1,19 +1,20 @@
 package com.airbnb.lottie.network;
 
-import java.io.IOException;
-
 import androidx.annotation.NonNull;
 import androidx.annotation.WorkerThread;
 
+import java.io.IOException;
+
 /**
  * Implement this interface to handle network fetching manually when animations are requested via url. By default, Lottie will use an
- * {@link java.net.HttpURLConnection} under the hood but this enables you to hook into your own network stack. By default, Lottie will also handle caching the
+ * {@link java.net.HttpURLConnection} under the hood but this enables you to hook into your own network stack. By default, Lottie will also handle
+ * caching the
  * animations but if you want to provide your own cache directory, you may implement {@link LottieNetworkCacheProvider}.
  *
  * @see com.airbnb.lottie.Lottie#initialize
  */
 public interface LottieNetworkFetcher {
-    @WorkerThread
-    @NonNull
-    LottieFetchResult fetchSync(@NonNull String url) throws IOException;
+  @WorkerThread
+  @NonNull
+  LottieFetchResult fetchSync(@NonNull String url) throws IOException;
 }
diff --git a/lottie/src/main/java/com/airbnb/lottie/network/NetworkCache.java b/lottie/src/main/java/com/airbnb/lottie/network/NetworkCache.java
index f0f29e1..f07ca24 100644
--- a/lottie/src/main/java/com/airbnb/lottie/network/NetworkCache.java
+++ b/lottie/src/main/java/com/airbnb/lottie/network/NetworkCache.java
@@ -44,7 +44,7 @@
 
   /**
    * If the animation doesn't exist in the cache, null will be returned.
-   *
+   * <p>
    * Once the animation is successfully parsed, {@link #renameTempFile(FileExtension)} must be
    * called to move the file from a temporary location to its permanent cache location so it can
    * be used in the future.
@@ -154,6 +154,6 @@
   }
 
   private static String filenameForUrl(String url, FileExtension extension, boolean isTemp) {
-    return "lottie_cache_" + url.replaceAll("\\W+", "") + (isTemp ? extension.tempExtension(): extension.extension);
+    return "lottie_cache_" + url.replaceAll("\\W+", "") + (isTemp ? extension.tempExtension() : extension.extension);
   }
 }
diff --git a/lottie/src/main/java/com/airbnb/lottie/network/NetworkFetcher.java b/lottie/src/main/java/com/airbnb/lottie/network/NetworkFetcher.java
index 75a8ab6..21bbcb5 100644
--- a/lottie/src/main/java/com/airbnb/lottie/network/NetworkFetcher.java
+++ b/lottie/src/main/java/com/airbnb/lottie/network/NetworkFetcher.java
@@ -2,6 +2,10 @@
 
 import android.util.Pair;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
 import com.airbnb.lottie.LottieComposition;
 import com.airbnb.lottie.LottieCompositionFactory;
 import com.airbnb.lottie.LottieResult;
@@ -11,13 +15,8 @@
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-
 import java.util.zip.ZipInputStream;
 
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.annotation.WorkerThread;
-
 public class NetworkFetcher {
 
   @NonNull
diff --git a/lottie/src/main/java/com/airbnb/lottie/network/package-info.java b/lottie/src/main/java/com/airbnb/lottie/network/package-info.java
index 7a014de..c012bd9 100644
--- a/lottie/src/main/java/com/airbnb/lottie/network/package-info.java
+++ b/lottie/src/main/java/com/airbnb/lottie/network/package-info.java
@@ -1,6 +1,6 @@
 @RestrictTo(LIBRARY)
 package com.airbnb.lottie.network;
 
-import androidx.annotation.RestrictTo;
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
 
-import static androidx.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
+import androidx.annotation.RestrictTo;
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/AnimatablePathValueParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/AnimatablePathValueParser.java
index be41074..c3acfb3 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/AnimatablePathValueParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/AnimatablePathValueParser.java
@@ -3,13 +3,13 @@
 import android.graphics.PointF;
 
 import com.airbnb.lottie.LottieComposition;
-import com.airbnb.lottie.parser.moshi.JsonReader;
-import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.model.animatable.AnimatableFloatValue;
 import com.airbnb.lottie.model.animatable.AnimatablePathValue;
 import com.airbnb.lottie.model.animatable.AnimatableSplitDimensionPathValue;
 import com.airbnb.lottie.model.animatable.AnimatableValue;
+import com.airbnb.lottie.parser.moshi.JsonReader;
 import com.airbnb.lottie.utils.Utils;
+import com.airbnb.lottie.value.Keyframe;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -23,7 +23,8 @@
       "y"
   );
 
-  private AnimatablePathValueParser() {}
+  private AnimatablePathValueParser() {
+  }
 
   public static AnimatablePathValue parse(
       JsonReader reader, LottieComposition composition) throws IOException {
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/AnimatableTextPropertiesParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/AnimatableTextPropertiesParser.java
index 1d3d0b9..fe485ee 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/AnimatableTextPropertiesParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/AnimatableTextPropertiesParser.java
@@ -18,7 +18,8 @@
       "t"
   );
 
-  private AnimatableTextPropertiesParser() {}
+  private AnimatableTextPropertiesParser() {
+  }
 
   public static AnimatableTextProperties parse(
       JsonReader reader, LottieComposition composition) throws IOException {
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/AnimatableTransformParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/AnimatableTransformParser.java
index 7053a0b..309a8b9 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/AnimatableTransformParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/AnimatableTransformParser.java
@@ -1,7 +1,7 @@
 package com.airbnb.lottie.parser;
 
 import android.graphics.PointF;
-import android.util.JsonToken;
+
 import com.airbnb.lottie.LottieComposition;
 import com.airbnb.lottie.model.animatable.AnimatableFloatValue;
 import com.airbnb.lottie.model.animatable.AnimatableIntegerValue;
@@ -60,9 +60,9 @@
               case 0:
                 anchorPoint = AnimatablePathValueParser.parse(reader, composition);
                 break;
-                default:
-                  reader.skipName();
-                  reader.skipValue();
+              default:
+                reader.skipName();
+                reader.skipValue();
             }
           }
           reader.endObject();
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/CircleShapeParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/CircleShapeParser.java
index 5d55aa3..b07ae92 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/CircleShapeParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/CircleShapeParser.java
@@ -20,7 +20,8 @@
       "d"
   );
 
-  private CircleShapeParser() {}
+  private CircleShapeParser() {
+  }
 
   static CircleShape parse(
       JsonReader reader, LottieComposition composition, int d) throws IOException {
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/ColorParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/ColorParser.java
index 5468245..9d3836b 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/ColorParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/ColorParser.java
@@ -1,7 +1,6 @@
 package com.airbnb.lottie.parser;
 
 import android.graphics.Color;
-import android.util.JsonToken;
 
 import com.airbnb.lottie.parser.moshi.JsonReader;
 
@@ -10,7 +9,8 @@
 public class ColorParser implements ValueParser<Integer> {
   public static final ColorParser INSTANCE = new ColorParser();
 
-  private ColorParser() {}
+  private ColorParser() {
+  }
 
   @Override public Integer parse(JsonReader reader, float scale) throws IOException {
     boolean isArray = reader.peek() == JsonReader.Token.BEGIN_ARRAY;
@@ -37,7 +37,9 @@
       // It appears as if sometimes, Telegram Lottie stickers are exported with rgb [0,1] and a [0,255].
       // This shouldn't happen but we can gracefully handle it when it does.
       // https://github.com/airbnb/lottie-android/issues/1478
-      if (a <= 1) a *= 255;
+      if (a <= 1) {
+        a *= 255;
+      }
     }
 
     return Color.argb((int) a, (int) r, (int) g, (int) b);
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/ContentModelParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/ContentModelParser.java
index 63d5f17..bd6918b 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/ContentModelParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/ContentModelParser.java
@@ -1,6 +1,7 @@
 package com.airbnb.lottie.parser;
 
 import androidx.annotation.Nullable;
+
 import com.airbnb.lottie.LottieComposition;
 import com.airbnb.lottie.model.content.ContentModel;
 import com.airbnb.lottie.parser.moshi.JsonReader;
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/FloatParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/FloatParser.java
index 7995201..ed9d420 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/FloatParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/FloatParser.java
@@ -8,7 +8,8 @@
 public class FloatParser implements ValueParser<Float> {
   public static final FloatParser INSTANCE = new FloatParser();
 
-  private FloatParser() {}
+  private FloatParser() {
+  }
 
   @Override public Float parse(JsonReader reader, float scale) throws IOException {
     return JsonUtils.valueFromObject(reader) * scale;
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/FontParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/FontParser.java
index d155db5..f655b9e 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/FontParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/FontParser.java
@@ -13,7 +13,8 @@
       "ascent"
   );
 
-  private FontParser() {}
+  private FontParser() {
+  }
 
   static Font parse(JsonReader reader) throws IOException {
     String family = null;
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/GradientColorParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/GradientColorParser.java
index 37e96df..3899b0f 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/GradientColorParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/GradientColorParser.java
@@ -2,6 +2,8 @@
 
 import android.graphics.Color;
 
+import androidx.annotation.IntRange;
+
 import com.airbnb.lottie.model.content.GradientColor;
 import com.airbnb.lottie.parser.moshi.JsonReader;
 import com.airbnb.lottie.utils.MiscUtils;
@@ -10,8 +12,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import androidx.annotation.IntRange;
-
 public class GradientColorParser implements com.airbnb.lottie.parser.ValueParser<GradientColor> {
   /**
    * The number of colors if it exists in the json or -1 if it doesn't (legacy bodymovin)
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/GradientFillParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/GradientFillParser.java
index 879b5a6..db9b4ae 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/GradientFillParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/GradientFillParser.java
@@ -30,7 +30,8 @@
       "k"
   );
 
-  private GradientFillParser() {}
+  private GradientFillParser() {
+  }
 
   static GradientFill parse(
       JsonReader reader, LottieComposition composition) throws IOException {
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/GradientStrokeParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/GradientStrokeParser.java
index 818acea..4643bf3 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/GradientStrokeParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/GradientStrokeParser.java
@@ -19,7 +19,9 @@
 
 class GradientStrokeParser {
 
-  private GradientStrokeParser() {}
+  private GradientStrokeParser() {
+  }
+
   private static JsonReader.Options NAMES = JsonReader.Options.of(
       "nm",
       "g",
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/IntegerParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/IntegerParser.java
index 2ed12a4..68957d1 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/IntegerParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/IntegerParser.java
@@ -7,7 +7,8 @@
 public class IntegerParser implements ValueParser<Integer> {
   public static final IntegerParser INSTANCE = new IntegerParser();
 
-  private IntegerParser() {}
+  private IntegerParser() {
+  }
 
   @Override public Integer parse(JsonReader reader, float scale) throws IOException {
     return Math.round(JsonUtils.valueFromObject(reader) * scale);
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/JsonUtils.java b/lottie/src/main/java/com/airbnb/lottie/parser/JsonUtils.java
index 7cd7709..d33ff8b 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/JsonUtils.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/JsonUtils.java
@@ -2,8 +2,8 @@
 
 import android.graphics.Color;
 import android.graphics.PointF;
+
 import androidx.annotation.ColorInt;
-import android.util.JsonToken;
 
 import com.airbnb.lottie.parser.moshi.JsonReader;
 
@@ -45,10 +45,14 @@
 
   static PointF jsonToPoint(JsonReader reader, float scale) throws IOException {
     switch (reader.peek()) {
-      case NUMBER: return jsonNumbersToPoint(reader, scale);
-      case BEGIN_ARRAY: return jsonArrayToPoint(reader, scale);
-      case BEGIN_OBJECT: return jsonObjectToPoint(reader, scale);
-      default: throw new IllegalArgumentException("Unknown point starts with " + reader.peek());
+      case NUMBER:
+        return jsonNumbersToPoint(reader, scale);
+      case BEGIN_ARRAY:
+        return jsonArrayToPoint(reader, scale);
+      case BEGIN_OBJECT:
+        return jsonObjectToPoint(reader, scale);
+      default:
+        throw new IllegalArgumentException("Unknown point starts with " + reader.peek());
     }
   }
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/KeyframeParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/KeyframeParser.java
index 3e54a6a..934ffe3 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/KeyframeParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/KeyframeParser.java
@@ -1,19 +1,18 @@
 package com.airbnb.lottie.parser;
 
 import android.graphics.PointF;
+import android.view.animation.Interpolator;
+import android.view.animation.LinearInterpolator;
+
 import androidx.annotation.Nullable;
 import androidx.collection.SparseArrayCompat;
 import androidx.core.view.animation.PathInterpolatorCompat;
 
-import android.util.JsonToken;
-import android.view.animation.Interpolator;
-import android.view.animation.LinearInterpolator;
-
 import com.airbnb.lottie.LottieComposition;
 import com.airbnb.lottie.parser.moshi.JsonReader;
-import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.utils.MiscUtils;
 import com.airbnb.lottie.utils.Utils;
+import com.airbnb.lottie.value.Keyframe;
 
 import java.io.IOException;
 import java.lang.ref.WeakReference;
@@ -72,7 +71,7 @@
    * @param multiDimensional When true, the keyframe interpolators can be independent for the X and Y axis.
    */
   static <T> Keyframe<T> parse(JsonReader reader, LottieComposition composition,
-                               float scale, ValueParser<T> valueParser, boolean animated, boolean multiDimensional) throws IOException {
+      float scale, ValueParser<T> valueParser, boolean animated, boolean multiDimensional) throws IOException {
 
     if (animated && multiDimensional) {
       return parseMultiDimensionalKeyframe(composition, reader, scale, valueParser);
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/LayerParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/LayerParser.java
index bc392e2..47c359d 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/LayerParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/LayerParser.java
@@ -4,8 +4,6 @@
 import android.graphics.Rect;
 
 import com.airbnb.lottie.LottieComposition;
-import com.airbnb.lottie.parser.moshi.JsonReader;
-import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.model.animatable.AnimatableFloatValue;
 import com.airbnb.lottie.model.animatable.AnimatableTextFrame;
 import com.airbnb.lottie.model.animatable.AnimatableTextProperties;
@@ -13,7 +11,9 @@
 import com.airbnb.lottie.model.content.ContentModel;
 import com.airbnb.lottie.model.content.Mask;
 import com.airbnb.lottie.model.layer.Layer;
+import com.airbnb.lottie.parser.moshi.JsonReader;
 import com.airbnb.lottie.utils.Utils;
+import com.airbnb.lottie.value.Keyframe;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -22,7 +22,8 @@
 
 public class LayerParser {
 
-  private LayerParser() {}
+  private LayerParser() {
+  }
 
   private static final JsonReader.Options NAMES = JsonReader.Options.of(
       "nm", // 0
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/LottieCompositionMoshiParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/LottieCompositionMoshiParser.java
index 3ff3e24..1c2a48a 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/LottieCompositionMoshiParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/LottieCompositionMoshiParser.java
@@ -2,7 +2,9 @@
 
 import android.graphics.Rect;
 
-import com.airbnb.lottie.L;
+import androidx.collection.LongSparseArray;
+import androidx.collection.SparseArrayCompat;
+
 import com.airbnb.lottie.LottieComposition;
 import com.airbnb.lottie.LottieImageAsset;
 import com.airbnb.lottie.model.Font;
@@ -19,9 +21,6 @@
 import java.util.List;
 import java.util.Map;
 
-import androidx.collection.LongSparseArray;
-import androidx.collection.SparseArrayCompat;
-
 
 public class LottieCompositionMoshiParser {
   private static final JsonReader.Options NAMES = JsonReader.Options.of(
@@ -114,7 +113,7 @@
   }
 
   private static void parseLayers(JsonReader reader, LottieComposition composition,
-                                  List<Layer> layers, LongSparseArray<Layer> layerMap) throws IOException {
+      List<Layer> layers, LongSparseArray<Layer> layerMap) throws IOException {
     int imageCount = 0;
     reader.beginArray();
     while (reader.hasNext()) {
@@ -241,7 +240,7 @@
   );
 
   private static void parseMarkers(
-      JsonReader reader, LottieComposition composition, List<Marker> markers) throws IOException{
+      JsonReader reader, LottieComposition composition, List<Marker> markers) throws IOException {
     reader.beginArray();
     while (reader.hasNext()) {
       String comment = null;
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/LottieCompositionParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/LottieCompositionParser.java
index 03e8eac..ecc64bc 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/LottieCompositionParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/LottieCompositionParser.java
@@ -2,6 +2,9 @@
 
 import android.graphics.Rect;
 
+import androidx.collection.LongSparseArray;
+import androidx.collection.SparseArrayCompat;
+
 import com.airbnb.lottie.LottieComposition;
 import com.airbnb.lottie.LottieImageAsset;
 import com.airbnb.lottie.model.Font;
@@ -18,9 +21,6 @@
 import java.util.List;
 import java.util.Map;
 
-import androidx.collection.LongSparseArray;
-import androidx.collection.SparseArrayCompat;
-
 
 public class LottieCompositionParser {
   static JsonReader.Options NAMES = JsonReader.Options.of(
@@ -99,7 +99,7 @@
   }
 
   private static void parseLayers(JsonReader reader, LottieComposition composition,
-                                  List<Layer> layers, LongSparseArray<Layer> layerMap) throws IOException {
+      List<Layer> layers, LongSparseArray<Layer> layerMap) throws IOException {
     int imageCount = 0;
     reader.beginArray();
     while (reader.hasNext()) {
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/MaskParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/MaskParser.java
index d335fea..eae1514 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/MaskParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/MaskParser.java
@@ -11,7 +11,8 @@
 
 class MaskParser {
 
-  private MaskParser() {}
+  private MaskParser() {
+  }
 
   static Mask parse(
       JsonReader reader, LottieComposition composition) throws IOException {
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/MergePathsParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/MergePathsParser.java
index 7f52fd2..067d21d 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/MergePathsParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/MergePathsParser.java
@@ -12,7 +12,8 @@
       "hd"
   );
 
-  private MergePathsParser() {}
+  private MergePathsParser() {
+  }
 
   static MergePaths parse(JsonReader reader) throws IOException {
     String name = null;
@@ -25,7 +26,7 @@
           name = reader.nextString();
           break;
         case 1:
-          mode =  MergePaths.MergePathsMode.forId(reader.nextInt());
+          mode = MergePaths.MergePathsMode.forId(reader.nextInt());
           break;
         case 2:
           hidden = reader.nextBoolean();
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/PathKeyframeParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/PathKeyframeParser.java
index 1209157..b5ff817 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/PathKeyframeParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/PathKeyframeParser.java
@@ -1,19 +1,19 @@
 package com.airbnb.lottie.parser;
 
 import android.graphics.PointF;
-import android.util.JsonToken;
 
 import com.airbnb.lottie.LottieComposition;
-import com.airbnb.lottie.parser.moshi.JsonReader;
-import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.animation.keyframe.PathKeyframe;
+import com.airbnb.lottie.parser.moshi.JsonReader;
 import com.airbnb.lottie.utils.Utils;
+import com.airbnb.lottie.value.Keyframe;
 
 import java.io.IOException;
 
 class PathKeyframeParser {
 
-  private PathKeyframeParser() {}
+  private PathKeyframeParser() {
+  }
 
   static PathKeyframe parse(
       JsonReader reader, LottieComposition composition) throws IOException {
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/PathParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/PathParser.java
index 0141725..9713bf8 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/PathParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/PathParser.java
@@ -9,7 +9,8 @@
 public class PathParser implements ValueParser<PointF> {
   public static final PathParser INSTANCE = new PathParser();
 
-  private PathParser() {}
+  private PathParser() {
+  }
 
   @Override public PointF parse(JsonReader reader, float scale) throws IOException {
     return JsonUtils.jsonToPoint(reader, scale);
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/PolystarShapeParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/PolystarShapeParser.java
index 57678aa..1865be6 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/PolystarShapeParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/PolystarShapeParser.java
@@ -12,19 +12,20 @@
 
 class PolystarShapeParser {
   private static final JsonReader.Options NAMES = JsonReader.Options.of(
-    "nm",
-    "sy",
-    "pt",
-    "p",
-    "r",
-    "or",
-    "os",
-    "ir",
-    "is",
-    "hd"
+      "nm",
+      "sy",
+      "pt",
+      "p",
+      "r",
+      "or",
+      "os",
+      "ir",
+      "is",
+      "hd"
   );
 
-  private PolystarShapeParser() {}
+  private PolystarShapeParser() {
+  }
 
   static PolystarShape parse(
       JsonReader reader, LottieComposition composition) throws IOException {
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/ScaleXYParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/ScaleXYParser.java
index e27e5a2..ce327c5 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/ScaleXYParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/ScaleXYParser.java
@@ -1,7 +1,5 @@
 package com.airbnb.lottie.parser;
 
-import android.util.JsonToken;
-
 import com.airbnb.lottie.parser.moshi.JsonReader;
 import com.airbnb.lottie.value.ScaleXY;
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/ShapeDataParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/ShapeDataParser.java
index 87f2e9c..04dd07d 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/ShapeDataParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/ShapeDataParser.java
@@ -15,10 +15,10 @@
 public class ShapeDataParser implements ValueParser<ShapeData> {
   public static final ShapeDataParser INSTANCE = new ShapeDataParser();
   private static final JsonReader.Options NAMES = JsonReader.Options.of(
-    "c",
-    "v",
-    "i",
-    "o"
+      "c",
+      "v",
+      "i",
+      "o"
   );
 
   private ShapeDataParser() {
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/ShapeFillParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/ShapeFillParser.java
index 631883b..e354121 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/ShapeFillParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/ShapeFillParser.java
@@ -1,6 +1,7 @@
 package com.airbnb.lottie.parser;
 
 import android.graphics.Path;
+
 import com.airbnb.lottie.LottieComposition;
 import com.airbnb.lottie.model.animatable.AnimatableColorValue;
 import com.airbnb.lottie.model.animatable.AnimatableIntegerValue;
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/ShapeGroupParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/ShapeGroupParser.java
index 17eb682..b95655d 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/ShapeGroupParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/ShapeGroupParser.java
@@ -12,12 +12,15 @@
 
 class ShapeGroupParser {
 
-  private ShapeGroupParser() {}
+  private ShapeGroupParser() {
+  }
+
   private static JsonReader.Options NAMES = JsonReader.Options.of(
       "nm",
       "hd",
       "it"
   );
+
   static ShapeGroup parse(
       JsonReader reader, LottieComposition composition) throws IOException {
     String name = null;
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/ShapeTrimPathParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/ShapeTrimPathParser.java
index f8e70dd..f8cc323 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/ShapeTrimPathParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/ShapeTrimPathParser.java
@@ -1,6 +1,8 @@
 package com.airbnb.lottie.parser;
 
 
+import static com.airbnb.lottie.parser.moshi.JsonReader.Options;
+
 import com.airbnb.lottie.LottieComposition;
 import com.airbnb.lottie.model.animatable.AnimatableFloatValue;
 import com.airbnb.lottie.model.content.ShapeTrimPath;
@@ -8,11 +10,11 @@
 
 import java.io.IOException;
 
-import static com.airbnb.lottie.parser.moshi.JsonReader.*;
-
 class ShapeTrimPathParser {
 
-  private ShapeTrimPathParser() {}
+  private ShapeTrimPathParser() {
+  }
+
   private static Options NAMES = Options.of(
       "s",
       "e",
@@ -21,6 +23,7 @@
       "m",
       "hd"
   );
+
   static ShapeTrimPath parse(
       JsonReader reader, LottieComposition composition) throws IOException {
     String name = null;
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/moshi/JsonEncodingException.java b/lottie/src/main/java/com/airbnb/lottie/parser/moshi/JsonEncodingException.java
index accdfaa..936049f 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/moshi/JsonEncodingException.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/moshi/JsonEncodingException.java
@@ -15,12 +15,14 @@
  */
 package com.airbnb.lottie.parser.moshi;
 
-import java.io.IOException;
-
 import androidx.annotation.Nullable;
 
+import java.io.IOException;
 
-/** Thrown when the data being parsed is not encoded as valid JSON. */
+
+/**
+ * Thrown when the data being parsed is not encoded as valid JSON.
+ */
 final class JsonEncodingException extends IOException {
   JsonEncodingException(@Nullable String message) {
     super(message);
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/moshi/JsonReader.java b/lottie/src/main/java/com/airbnb/lottie/parser/moshi/JsonReader.java
index ffa7bf5..dc7083f 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/moshi/JsonReader.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/moshi/JsonReader.java
@@ -17,12 +17,8 @@
 
 import java.io.Closeable;
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
 
-import androidx.annotation.Nullable;
 import okio.Buffer;
 import okio.BufferedSink;
 import okio.BufferedSource;
@@ -188,6 +184,7 @@
    * error. http://code.google.com/p/google-gson/issues/detail?id=341
    */
   private static final String[] REPLACEMENT_CHARS;
+
   static {
     REPLACEMENT_CHARS = new String[128];
     for (int i = 0; i <= 0x1f; i++) {
@@ -210,14 +207,20 @@
   String[] pathNames;
   int[] pathIndices;
 
-  /** True to accept non-spec compliant JSON. */
+  /**
+   * True to accept non-spec compliant JSON.
+   */
   boolean lenient;
 
-  /** True to throw a {@link JsonDataException} on any attempt to call {@link #skipValue()}. */
+  /**
+   * True to throw a {@link JsonDataException} on any attempt to call {@link #skipValue()}.
+   */
   boolean failOnUnknown;
 
-  /** Returns a new instance that reads UTF-8 encoded JSON from {@code source}. */
-   public static JsonReader of(BufferedSource source) {
+  /**
+   * Returns a new instance that reads UTF-8 encoded JSON from {@code source}.
+   */
+  public static JsonReader of(BufferedSource source) {
     return new JsonUtf8Reader(source);
   }
 
@@ -249,9 +252,6 @@
   }
 
 
-
-
-
   /**
    * Consumes the next token from the JSON stream and asserts that it is the beginning of a new
    * array.
@@ -279,25 +279,25 @@
   /**
    * Returns true if the current array or object has another element.
    */
-   public abstract boolean hasNext() throws IOException;
+  public abstract boolean hasNext() throws IOException;
 
   /**
    * Returns the type of the next token without consuming it.
    */
-   public abstract Token peek() throws IOException;
+  public abstract Token peek() throws IOException;
 
   /**
    * Returns the next token, a {@linkplain Token#NAME property name}, and consumes it.
    *
    * @throws JsonDataException if the next token in the stream is not a property name.
    */
-   public abstract String nextName() throws IOException;
+  public abstract String nextName() throws IOException;
 
   /**
    * If the next token is a {@linkplain Token#NAME property name} that's in {@code options}, this
    * consumes it and returns its index. Otherwise this returns -1 and no name is consumed.
    */
-   public abstract int selectName(Options options) throws IOException;
+  public abstract int selectName(Options options) throws IOException;
 
   /**
    * Skips the next token, consuming it. This method is intended for use when the JSON token stream
@@ -329,7 +329,7 @@
    * Double#parseDouble(String)}.
    *
    * @throws JsonDataException if the next token is not a literal value, or if the next literal
-   *     value cannot be parsed as a double, or is non-finite.
+   *                           value cannot be parsed as a double, or is non-finite.
    */
   public abstract double nextDouble() throws IOException;
 
@@ -339,7 +339,7 @@
    * value cannot be exactly represented by a Java {@code int}, this method throws.
    *
    * @throws JsonDataException if the next token is not a literal value, if the next literal value
-   *     cannot be parsed as a number, or exactly represented as an int.
+   *                           cannot be parsed as a number, or exactly represented as an int.
    */
   public abstract int nextInt() throws IOException;
 
@@ -358,7 +358,7 @@
    * Returns a <a href="http://goessner.net/articles/JsonPath/">JsonPath</a> to
    * the current location in the JSON value.
    */
-   public final String getPath() {
+  public final String getPath() {
     return JsonScope.getPath(stackSize, scopes, pathNames, pathIndices);
   }
 
@@ -375,7 +375,7 @@
       this.doubleQuoteSuffix = doubleQuoteSuffix;
     }
 
-     public static Options of(String... strings) {
+    public static Options of(String... strings) {
       try {
         ByteString[] result = new ByteString[strings.length];
         Buffer buffer = new Buffer();
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/moshi/JsonScope.java b/lottie/src/main/java/com/airbnb/lottie/parser/moshi/JsonScope.java
index 0234af2..eac9ba4 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/moshi/JsonScope.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/moshi/JsonScope.java
@@ -15,33 +15,51 @@
  */
 package com.airbnb.lottie.parser.moshi;
 
-/** Lexical scoping elements within a JSON reader or writer. */
+/**
+ * Lexical scoping elements within a JSON reader or writer.
+ */
 final class JsonScope {
   private JsonScope() {
   }
 
-  /** An array with no elements requires no separators or newlines before it is closed. */
+  /**
+   * An array with no elements requires no separators or newlines before it is closed.
+   */
   static final int EMPTY_ARRAY = 1;
 
-  /** A array with at least one value requires a comma and newline before the next element. */
+  /**
+   * A array with at least one value requires a comma and newline before the next element.
+   */
   static final int NONEMPTY_ARRAY = 2;
 
-  /** An object with no name/value pairs requires no separators or newlines before it is closed. */
+  /**
+   * An object with no name/value pairs requires no separators or newlines before it is closed.
+   */
   static final int EMPTY_OBJECT = 3;
 
-  /** An object whose most recent element is a key. The next element must be a value. */
+  /**
+   * An object whose most recent element is a key. The next element must be a value.
+   */
   static final int DANGLING_NAME = 4;
 
-  /** An object with at least one name/value pair requires a separator before the next element. */
+  /**
+   * An object with at least one name/value pair requires a separator before the next element.
+   */
   static final int NONEMPTY_OBJECT = 5;
 
-  /** No object or array has been started. */
+  /**
+   * No object or array has been started.
+   */
   static final int EMPTY_DOCUMENT = 6;
 
-  /** A document with at an array or object. */
+  /**
+   * A document with at an array or object.
+   */
   static final int NONEMPTY_DOCUMENT = 7;
 
-  /** A document that's been closed and cannot be accessed. */
+  /**
+   * A document that's been closed and cannot be accessed.
+   */
   static final int CLOSED = 8;
 
   /**
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/moshi/JsonUtf8Reader.java b/lottie/src/main/java/com/airbnb/lottie/parser/moshi/JsonUtf8Reader.java
index ab19c8f..e3fc1f8 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/moshi/JsonUtf8Reader.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/moshi/JsonUtf8Reader.java
@@ -15,10 +15,11 @@
  */
 package com.airbnb.lottie.parser.moshi;
 
+import androidx.annotation.Nullable;
+
 import java.io.EOFException;
 import java.io.IOException;
 
-import androidx.annotation.Nullable;
 import okio.Buffer;
 import okio.BufferedSource;
 import okio.ByteString;
@@ -44,13 +45,17 @@
   private static final int PEEKED_SINGLE_QUOTED = 8;
   private static final int PEEKED_DOUBLE_QUOTED = 9;
   private static final int PEEKED_UNQUOTED = 10;
-  /** When this is returned, the string value is stored in peekedString. */
+  /**
+   * When this is returned, the string value is stored in peekedString.
+   */
   private static final int PEEKED_BUFFERED = 11;
   private static final int PEEKED_SINGLE_QUOTED_NAME = 12;
   private static final int PEEKED_DOUBLE_QUOTED_NAME = 13;
   private static final int PEEKED_UNQUOTED_NAME = 14;
   private static final int PEEKED_BUFFERED_NAME = 15;
-  /** When this is returned, the integer value is stored in peekedLong. */
+  /**
+   * When this is returned, the integer value is stored in peekedLong.
+   */
   private static final int PEEKED_LONG = 16;
   private static final int PEEKED_NUMBER = 17;
   private static final int PEEKED_EOF = 18;
@@ -65,7 +70,9 @@
   private static final int NUMBER_CHAR_EXP_SIGN = 6;
   private static final int NUMBER_CHAR_EXP_DIGIT = 7;
 
-  /** The input JSON. */
+  /**
+   * The input JSON.
+   */
   private final BufferedSource source;
   private final Buffer buffer;
 
@@ -716,11 +723,15 @@
     StringBuilder builder = null;
     while (true) {
       long index = source.indexOfElement(runTerminator);
-      if (index == -1L) throw syntaxError("Unterminated string");
+      if (index == -1L) {
+        throw syntaxError("Unterminated string");
+      }
 
       // If we've got an escape character, we're going to need a string builder.
       if (buffer.getByte(index) == '\\') {
-        if (builder == null) builder = new StringBuilder();
+        if (builder == null) {
+          builder = new StringBuilder();
+        }
         builder.append(buffer.readUtf8(index));
         buffer.readByte(); // '\'
         builder.append(readEscapeCharacter());
@@ -740,7 +751,9 @@
     }
   }
 
-  /** Returns an unquoted value as a string. */
+  /**
+   * Returns an unquoted value as a string.
+   */
   private String nextUnquotedValue() throws IOException {
     long i = source.indexOfElement(UNQUOTED_STRING_TERMINALS);
     return i != -1 ? buffer.readUtf8(i) : buffer.readUtf8();
@@ -749,7 +762,9 @@
   private void skipQuotedValue(ByteString runTerminator) throws IOException {
     while (true) {
       long index = source.indexOfElement(runTerminator);
-      if (index == -1L) throw syntaxError("Unterminated string");
+      if (index == -1L) {
+        throw syntaxError("Unterminated string");
+      }
 
       if (buffer.getByte(index) == '\\') {
         buffer.skip(index + 1);
@@ -1037,7 +1052,9 @@
         return (char) escaped;
 
       default:
-        if (!lenient) throw syntaxError("Invalid escape sequence: \\" + (char) escaped);
+        if (!lenient) {
+          throw syntaxError("Invalid escape sequence: \\" + (char) escaped);
+        }
         return (char) escaped;
     }
   }
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/moshi/LinkedHashTreeMap.java b/lottie/src/main/java/com/airbnb/lottie/parser/moshi/LinkedHashTreeMap.java
index 4537da9..959aaa7 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/moshi/LinkedHashTreeMap.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/moshi/LinkedHashTreeMap.java
@@ -37,7 +37,7 @@
  * LinkedHashMap classes.
  */
 final class LinkedHashTreeMap<K, V> extends AbstractMap<K, V> implements Serializable {
-  @SuppressWarnings({ "unchecked", "rawtypes" }) // to avoid Comparable<Comparable<Comparable<...>>>
+  @SuppressWarnings({"unchecked", "rawtypes"}) // to avoid Comparable<Comparable<Comparable<...>>>
   private static final Comparator<Comparable> NATURAL_ORDER = new Comparator<Comparable>() {
     public int compare(Comparable a, Comparable b) {
       return a.compareTo(b);
@@ -64,12 +64,11 @@
    * be null if {@code comparator} permits.
    *
    * @param comparator the comparator to order elements with, or {@code null} to
-   *     use the natural ordering.
+   *                   use the natural ordering.
    */
   @SuppressWarnings({
       "unchecked", "rawtypes" // Unsafe! if comparator is null, this assumes K is comparable.
-  })
-  LinkedHashTreeMap(Comparator<? super K> comparator) {
+  }) LinkedHashTreeMap(Comparator<? super K> comparator) {
     this.comparator = comparator != null
         ? comparator
         : (Comparator) NATURAL_ORDER;
@@ -126,7 +125,7 @@
    * Returns the node at or adjacent to the given key, creating it if requested.
    *
    * @throws ClassCastException if {@code key} and the tree's keys aren't
-   *     mutually comparable.
+   *                            mutually comparable.
    */
   Node<K, V> find(K key, boolean create) {
     Comparator<? super K> comparator = this.comparator;
@@ -333,7 +332,7 @@
    * newly-unbalanced node and the tree's root.
    *
    * @param insert true if the node was unbalanced by an insert; false if it
-   *     was by a removal.
+   *               was by a removal.
    */
   private void rebalance(Node<K, V> unbalanced, boolean insert) {
     for (Node<K, V> node = unbalanced; node != null; node = node.parent) {
@@ -475,14 +474,18 @@
     V value;
     int height;
 
-    /** Create the header entry. */
+    /**
+     * Create the header entry.
+     */
     Node() {
       key = null;
       hash = -1;
       next = prev = this;
     }
 
-    /** Create a regular entry. */
+    /**
+     * Create a regular entry.
+     */
     Node(Node<K, V> parent, K key, int hash, Node<K, V> next, Node<K, V> prev) {
       this.parent = parent;
       this.key = key;
@@ -567,7 +570,7 @@
     // TODO: don't do anything if we're already at MAX_CAPACITY
     int oldCapacity = oldTable.length;
     @SuppressWarnings("unchecked") // Arrays and generics don't get along.
-        Node<K, V>[] newTable = new Node[oldCapacity * 2];
+    Node<K, V>[] newTable = new Node[oldCapacity * 2];
     AvlIterator<K, V> iterator = new AvlIterator<>();
     AvlBuilder<K, V> leftBuilder = new AvlBuilder<>();
     AvlBuilder<K, V> rightBuilder = new AvlBuilder<>();
@@ -620,7 +623,9 @@
    * iteration of a tree.
    */
   static class AvlIterator<K, V> {
-    /** This stack is a singly linked list, linked by the 'parent' field. */
+    /**
+     * This stack is a singly linked list, linked by the 'parent' field.
+     */
     private Node<K, V> stackTop;
 
     void reset(Node<K, V> root) {
@@ -668,7 +673,9 @@
    * {@code O(S)}.
    */
   static final class AvlBuilder<K, V> {
-    /** This stack is a singly linked list, linked by the 'parent' field. */
+    /**
+     * This stack is a singly linked list, linked by the 'parent' field.
+     */
     private Node<K, V> stack;
     private int leavesToSkip;
     private int leavesSkipped;
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/moshi/package-info.java b/lottie/src/main/java/com/airbnb/lottie/parser/moshi/package-info.java
index 3c6cd55..e76b77d 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/moshi/package-info.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/moshi/package-info.java
@@ -1,6 +1,6 @@
 @RestrictTo(LIBRARY)
 package com.airbnb.lottie.parser.moshi;
 
-import androidx.annotation.RestrictTo;
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
 
-import static androidx.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
+import androidx.annotation.RestrictTo;
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/package-info.java b/lottie/src/main/java/com/airbnb/lottie/parser/package-info.java
index fa7edd8..f27cd7d 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/package-info.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/package-info.java
@@ -1,6 +1,6 @@
 @RestrictTo(LIBRARY)
 package com.airbnb.lottie.parser;
 
-import androidx.annotation.RestrictTo;
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
 
-import static androidx.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
+import androidx.annotation.RestrictTo;
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/utils/BaseLottieAnimator.java b/lottie/src/main/java/com/airbnb/lottie/utils/BaseLottieAnimator.java
index c6e0685..e55246a 100644
--- a/lottie/src/main/java/com/airbnb/lottie/utils/BaseLottieAnimator.java
+++ b/lottie/src/main/java/com/airbnb/lottie/utils/BaseLottieAnimator.java
@@ -19,6 +19,7 @@
   @Override public void setStartDelay(long startDelay) {
     throw new UnsupportedOperationException("LottieAnimator does not support setStartDelay.");
   }
+
   @Override public ValueAnimator setDuration(long duration) {
     throw new UnsupportedOperationException("LottieAnimator does not support setDuration.");
   }
diff --git a/lottie/src/main/java/com/airbnb/lottie/utils/LottieValueAnimator.java b/lottie/src/main/java/com/airbnb/lottie/utils/LottieValueAnimator.java
index 9673259..c3a652b 100644
--- a/lottie/src/main/java/com/airbnb/lottie/utils/LottieValueAnimator.java
+++ b/lottie/src/main/java/com/airbnb/lottie/utils/LottieValueAnimator.java
@@ -1,11 +1,12 @@
 package com.airbnb.lottie.utils;
 
 import android.animation.ValueAnimator;
+import android.view.Choreographer;
+
 import androidx.annotation.FloatRange;
 import androidx.annotation.MainThread;
 import androidx.annotation.Nullable;
 import androidx.annotation.VisibleForTesting;
-import android.view.Choreographer;
 
 import com.airbnb.lottie.L;
 import com.airbnb.lottie.LottieComposition;
@@ -138,8 +139,8 @@
 
     if (keepMinAndMaxFrames) {
       setMinAndMaxFrames(
-              (int) Math.max(this.minFrame, composition.getStartFrame()),
-              (int) Math.min(this.maxFrame, composition.getEndFrame())
+          (int) Math.max(this.minFrame, composition.getStartFrame()),
+          (int) Math.min(this.maxFrame, composition.getEndFrame())
       );
     } else {
       setMinAndMaxFrames((int) composition.getStartFrame(), (int) composition.getEndFrame());
diff --git a/lottie/src/main/java/com/airbnb/lottie/utils/MiscUtils.java b/lottie/src/main/java/com/airbnb/lottie/utils/MiscUtils.java
index c55432b..ec285bd 100644
--- a/lottie/src/main/java/com/airbnb/lottie/utils/MiscUtils.java
+++ b/lottie/src/main/java/com/airbnb/lottie/utils/MiscUtils.java
@@ -2,6 +2,7 @@
 
 import android.graphics.Path;
 import android.graphics.PointF;
+
 import androidx.annotation.FloatRange;
 
 import com.airbnb.lottie.animation.content.KeyPathElementContent;
@@ -97,7 +98,7 @@
    * Helper method for any {@link KeyPathElementContent} that will check if the content
    * fully matches the keypath then will add itself as the final key, resolve it, and add
    * it to the accumulator list.
-   *
+   * <p>
    * Any {@link KeyPathElementContent} should call through to this as its implementation of
    * {@link KeyPathElementContent#resolveKeyPath(KeyPath, int, List, KeyPath)}.
    */
diff --git a/lottie/src/main/java/com/airbnb/lottie/utils/Utils.java b/lottie/src/main/java/com/airbnb/lottie/utils/Utils.java
index baac4e5..a0f7e9e 100644
--- a/lottie/src/main/java/com/airbnb/lottie/utils/Utils.java
+++ b/lottie/src/main/java/com/airbnb/lottie/utils/Utils.java
@@ -14,6 +14,8 @@
 import android.os.Build;
 import android.provider.Settings;
 
+import androidx.annotation.Nullable;
+
 import com.airbnb.lottie.L;
 import com.airbnb.lottie.animation.LPaint;
 import com.airbnb.lottie.animation.content.TrimPathContent;
@@ -29,8 +31,6 @@
 
 import javax.net.ssl.SSLException;
 
-import androidx.annotation.Nullable;
-
 public final class Utils {
   public static final int SECOND_IN_NANOS = 1000000000;
 
@@ -261,11 +261,11 @@
   public static float getAnimationScale(Context context) {
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
       return Settings.Global.getFloat(context.getContentResolver(),
-              Settings.Global.ANIMATOR_DURATION_SCALE, 1.0f);
+          Settings.Global.ANIMATOR_DURATION_SCALE, 1.0f);
     } else {
       //noinspection deprecation
       return Settings.System.getFloat(context.getContentResolver(),
-              Settings.System.ANIMATOR_DURATION_SCALE, 1.0f);
+          Settings.System.ANIMATOR_DURATION_SCALE, 1.0f);
     }
   }
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/utils/package-info.java b/lottie/src/main/java/com/airbnb/lottie/utils/package-info.java
index 7bf2a4c..f0a42a2 100644
--- a/lottie/src/main/java/com/airbnb/lottie/utils/package-info.java
+++ b/lottie/src/main/java/com/airbnb/lottie/utils/package-info.java
@@ -1,6 +1,6 @@
 @RestrictTo(LIBRARY)
 package com.airbnb.lottie.utils;
 
-import androidx.annotation.RestrictTo;
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
 
-import static androidx.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
+import androidx.annotation.RestrictTo;
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/value/Keyframe.java b/lottie/src/main/java/com/airbnb/lottie/value/Keyframe.java
index 36d45d9..78f74db 100644
--- a/lottie/src/main/java/com/airbnb/lottie/value/Keyframe.java
+++ b/lottie/src/main/java/com/airbnb/lottie/value/Keyframe.java
@@ -1,9 +1,10 @@
 package com.airbnb.lottie.value;
 
 import android.graphics.PointF;
+import android.view.animation.Interpolator;
+
 import androidx.annotation.FloatRange;
 import androidx.annotation.Nullable;
-import android.view.animation.Interpolator;
 
 import com.airbnb.lottie.LottieComposition;
 
@@ -94,7 +95,7 @@
       return 0f;
     }
     if (startProgress == Float.MIN_VALUE) {
-      startProgress = (startFrame  - composition.getStartFrame()) / composition.getDurationFrames();
+      startProgress = (startFrame - composition.getStartFrame()) / composition.getDurationFrames();
     }
     return startProgress;
   }
diff --git a/lottie/src/main/java/com/airbnb/lottie/value/LottieRelativePointValueCallback.java b/lottie/src/main/java/com/airbnb/lottie/value/LottieRelativePointValueCallback.java
index f0a7446..4aacef4 100644
--- a/lottie/src/main/java/com/airbnb/lottie/value/LottieRelativePointValueCallback.java
+++ b/lottie/src/main/java/com/airbnb/lottie/value/LottieRelativePointValueCallback.java
@@ -1,6 +1,7 @@
 package com.airbnb.lottie.value;
 
 import android.graphics.PointF;
+
 import androidx.annotation.NonNull;
 
 import com.airbnb.lottie.utils.MiscUtils;
diff --git a/lottie/src/main/java/com/airbnb/lottie/value/LottieValueCallback.java b/lottie/src/main/java/com/airbnb/lottie/value/LottieValueCallback.java
index 6e3354b..201c3bc 100644
--- a/lottie/src/main/java/com/airbnb/lottie/value/LottieValueCallback.java
+++ b/lottie/src/main/java/com/airbnb/lottie/value/LottieValueCallback.java
@@ -29,7 +29,7 @@
 
   /**
    * Override this if you haven't set a static value in the constructor or with setValue.
-   *
+   * <p>
    * Return null to resort to the default value.
    */
   @Nullable