// 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.optimize.interfaces.analysis;

import com.android.tools.r8.cf.code.CfAssignability;
import com.android.tools.r8.graph.DexMethod;
import com.android.tools.r8.graph.DexType;

public interface CfAnalysisConfig {

  CfAssignability getAssignability();

  DexMethod getCurrentContext();

  int getMaxLocals();

  int getMaxStack();

  boolean isImmediateSuperClassOfCurrentContext(DexType type);
}
