|  | // 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.startup; | 
|  |  | 
|  | import com.android.tools.r8.Keep; | 
|  | import com.android.tools.r8.TextInputStream; | 
|  | import com.android.tools.r8.profile.art.HumanReadableArtProfileParserBuilder; | 
|  | import java.util.function.Consumer; | 
|  |  | 
|  | /** Interface for providing a startup profile to the compiler. */ | 
|  | @Keep | 
|  | public interface StartupProfileBuilder { | 
|  |  | 
|  | /** API for adding information about a startup class to the compiler. */ | 
|  | StartupProfileBuilder addStartupClass(Consumer<StartupClassBuilder> startupClassBuilderConsumer); | 
|  |  | 
|  | /** API for adding information about a startup method to the compiler. */ | 
|  | StartupProfileBuilder addStartupMethod( | 
|  | Consumer<StartupMethodBuilder> startupMethodBuilderConsumer); | 
|  |  | 
|  | /** | 
|  | * Adds the rules from the given human-readable ART profile to the startup profile and then closes | 
|  | * the stream. | 
|  | * | 
|  | * @see <a href="https://developer.android.com/topic/performance/baselineprofiles">ART Baseline | 
|  | *     Profiles</a> | 
|  | */ | 
|  | StartupProfileBuilder addHumanReadableArtProfile( | 
|  | TextInputStream textInputStream, | 
|  | Consumer<HumanReadableArtProfileParserBuilder> parserBuilderConsumer); | 
|  | } |