| // Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file | 
 | // for details. All rights reserved. Use of this source code is governed by a | 
 | // BSD-style license that can be found in the LICENSE file. | 
 |  | 
 | package com.android.tools.r8.shaking; | 
 |  | 
 | import static com.android.tools.r8.utils.SystemPropertyUtils.parseSystemPropertyOrDefault; | 
 |  | 
 | public class ProguardConfigurationParserOptions { | 
 |  | 
 |   private final boolean enableExperimentalCheckEnumUnboxed; | 
 |   private final boolean enableExperimentalConvertCheckNotNull; | 
 |   private final boolean enableExperimentalWhyAreYouNotInlining; | 
 |   private final boolean enableTestingOptions; | 
 |  | 
 |   ProguardConfigurationParserOptions( | 
 |       boolean enableExperimentalCheckEnumUnboxed, | 
 |       boolean enableExperimentalConvertCheckNotNull, | 
 |       boolean enableExperimentalWhyAreYouNotInlining, | 
 |       boolean enableTestingOptions) { | 
 |     this.enableExperimentalCheckEnumUnboxed = enableExperimentalCheckEnumUnboxed; | 
 |     this.enableExperimentalConvertCheckNotNull = enableExperimentalConvertCheckNotNull; | 
 |     this.enableExperimentalWhyAreYouNotInlining = enableExperimentalWhyAreYouNotInlining; | 
 |     this.enableTestingOptions = enableTestingOptions; | 
 |   } | 
 |  | 
 |   public static Builder builder() { | 
 |     return new Builder(); | 
 |   } | 
 |  | 
 |   public boolean isExperimentalCheckEnumUnboxedEnabled() { | 
 |     return enableExperimentalCheckEnumUnboxed; | 
 |   } | 
 |  | 
 |   public boolean isExperimentalConvertCheckNotNullEnabled() { | 
 |     return enableExperimentalConvertCheckNotNull; | 
 |   } | 
 |  | 
 |   public boolean isExperimentalWhyAreYouNotInliningEnabled() { | 
 |     return enableExperimentalWhyAreYouNotInlining; | 
 |   } | 
 |  | 
 |   public boolean isTestingOptionsEnabled() { | 
 |     return enableTestingOptions; | 
 |   } | 
 |  | 
 |   public static class Builder { | 
 |  | 
 |     private boolean enableExperimentalCheckEnumUnboxed; | 
 |     private boolean enableExperimentalConvertCheckNotNull; | 
 |     private boolean enableExperimentalWhyAreYouNotInlining; | 
 |     private boolean enableTestingOptions; | 
 |  | 
 |     public Builder readEnvironment() { | 
 |       enableExperimentalCheckEnumUnboxed = | 
 |           parseSystemPropertyOrDefault( | 
 |               "com.android.tools.r8.experimental.enablecheckenumunboxed", false); | 
 |       enableExperimentalConvertCheckNotNull = | 
 |           parseSystemPropertyOrDefault( | 
 |               "com.android.tools.r8.experimental.enableconvertchecknotnull", false); | 
 |       enableExperimentalWhyAreYouNotInlining = | 
 |           parseSystemPropertyOrDefault( | 
 |               "com.android.tools.r8.experimental.enablewhyareyounotinlining", false); | 
 |       enableTestingOptions = | 
 |           parseSystemPropertyOrDefault("com.android.tools.r8.allowTestProguardOptions", false); | 
 |       return this; | 
 |     } | 
 |  | 
 |     public Builder setEnableExperimentalCheckEnumUnboxed( | 
 |         boolean enableExperimentalCheckEnumUnboxed) { | 
 |       this.enableExperimentalCheckEnumUnboxed = enableExperimentalCheckEnumUnboxed; | 
 |       return this; | 
 |     } | 
 |  | 
 |     public Builder setEnableExperimentalConvertCheckNotNull( | 
 |         boolean enableExperimentalConvertCheckNotNull) { | 
 |       this.enableExperimentalConvertCheckNotNull = enableExperimentalConvertCheckNotNull; | 
 |       return this; | 
 |     } | 
 |  | 
 |     public Builder setEnableExperimentalWhyAreYouNotInlining( | 
 |         boolean enableExperimentalWhyAreYouNotInlining) { | 
 |       this.enableExperimentalWhyAreYouNotInlining = enableExperimentalWhyAreYouNotInlining; | 
 |       return this; | 
 |     } | 
 |  | 
 |     public Builder setEnableTestingOptions(boolean enableTestingOptions) { | 
 |       this.enableTestingOptions = enableTestingOptions; | 
 |       return this; | 
 |     } | 
 |  | 
 |     public ProguardConfigurationParserOptions build() { | 
 |       return new ProguardConfigurationParserOptions( | 
 |           enableExperimentalCheckEnumUnboxed, | 
 |           enableExperimentalConvertCheckNotNull, | 
 |           enableExperimentalWhyAreYouNotInlining, | 
 |           enableTestingOptions); | 
 |     } | 
 |   } | 
 | } |