// Copyright (c) 2019, 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.ir.code;

public abstract class DefaultInstructionVisitor<T> implements InstructionVisitor<T> {

  public T handleFieldInstruction(FieldInstruction instruction) {
    return null;
  }

  public T handleInvoke(Invoke instruction) {
    return null;
  }

  @Override
  public T visit(Add instruction) {
    return null;
  }

  @Override
  public T visit(AlwaysMaterializingDefinition instruction) {
    return null;
  }

  @Override
  public T visit(AlwaysMaterializingNop instruction) {
    return null;
  }

  @Override
  public T visit(AlwaysMaterializingUser instruction) {
    return null;
  }

  @Override
  public T visit(And instruction) {
    return null;
  }

  @Override
  public T visit(Argument instruction) {
    return null;
  }

  @Override
  public T visit(ArrayGet instruction) {
    return null;
  }

  @Override
  public T visit(ArrayLength instruction) {
    return null;
  }

  @Override
  public T visit(ArrayPut instruction) {
    return null;
  }

  @Override
  public T visit(CheckCast instruction) {
    return null;
  }

  @Override
  public T visit(Cmp instruction) {
    return null;
  }

  @Override
  public T visit(ConstClass instruction) {
    return null;
  }

  @Override
  public T visit(ConstMethodHandle instruction) {
    return null;
  }

  @Override
  public T visit(ConstMethodType instruction) {
    return null;
  }

  @Override
  public T visit(ConstNumber instruction) {
    return null;
  }

  @Override
  public T visit(ConstString instruction) {
    return null;
  }

  @Override
  public T visit(DebugLocalRead instruction) {
    return null;
  }

  @Override
  public T visit(DebugLocalsChange instruction) {
    return null;
  }

  @Override
  public T visit(DebugLocalUninitialized instruction) {
    return null;
  }

  @Override
  public T visit(DebugLocalWrite instruction) {
    return null;
  }

  @Override
  public T visit(DebugPosition instruction) {
    return null;
  }

  @Override
  public T visit(DexItemBasedConstString instruction) {
    return null;
  }

  @Override
  public T visit(Div instruction) {
    return null;
  }

  @Override
  public T visit(Dup instruction) {
    return null;
  }

  @Override
  public T visit(Dup2 instruction) {
    return null;
  }

  @Override
  public T visit(Goto instruction) {
    return null;
  }

  @Override
  public T visit(If instruction) {
    return null;
  }

  @Override
  public T visit(Inc instruction) {
    return null;
  }

  @Override
  public T visit(InstanceGet instruction) {
    return handleFieldInstruction(instruction);
  }

  @Override
  public T visit(InstanceOf instruction) {
    return null;
  }

  @Override
  public T visit(InstancePut instruction) {
    return handleFieldInstruction(instruction);
  }

  @Override
  public T visit(InvokeCustom instruction) {
    return handleInvoke(instruction);
  }

  @Override
  public T visit(InvokeDirect instruction) {
    return handleInvoke(instruction);
  }

  @Override
  public T visit(InvokeInterface instruction) {
    return handleInvoke(instruction);
  }

  @Override
  public T visit(InvokeMultiNewArray instruction) {
    return handleInvoke(instruction);
  }

  @Override
  public T visit(InvokeNewArray instruction) {
    return handleInvoke(instruction);
  }

  @Override
  public T visit(InvokePolymorphic instruction) {
    return handleInvoke(instruction);
  }

  @Override
  public T visit(InvokeStatic instruction) {
    return handleInvoke(instruction);
  }

  @Override
  public T visit(InvokeSuper instruction) {
    return handleInvoke(instruction);
  }

  @Override
  public T visit(InvokeVirtual instruction) {
    return handleInvoke(instruction);
  }

  @Override
  public T visit(Load instruction) {
    return null;
  }

  @Override
  public T visit(Monitor instruction) {
    return null;
  }

  @Override
  public T visit(Move instruction) {
    return null;
  }

  @Override
  public T visit(MoveException instruction) {
    return null;
  }

  @Override
  public T visit(Mul instruction) {
    return null;
  }

  @Override
  public T visit(Neg instruction) {
    return null;
  }

  @Override
  public T visit(NewArrayEmpty instruction) {
    return null;
  }

  @Override
  public T visit(NewArrayFilledData instruction) {
    return null;
  }

  @Override
  public T visit(NewInstance instruction) {
    return null;
  }

  @Override
  public T visit(Assume instruction) {
    return null;
  }

  @Override
  public T visit(Not instruction) {
    return null;
  }

  @Override
  public T visit(NumberConversion instruction) {
    return null;
  }

  @Override
  public T visit(Or instruction) {
    return null;
  }

  @Override
  public T visit(Pop instruction) {
    return null;
  }

  @Override
  public T visit(Rem instruction) {
    return null;
  }

  @Override
  public T visit(Return instruction) {
    return null;
  }

  @Override
  public T visit(Shl instruction) {
    return null;
  }

  @Override
  public T visit(Shr instruction) {
    return null;
  }

  @Override
  public T visit(StaticGet instruction) {
    return handleFieldInstruction(instruction);
  }

  @Override
  public T visit(StaticPut instruction) {
    return handleFieldInstruction(instruction);
  }

  @Override
  public T visit(Store instruction) {
    return null;
  }

  @Override
  public T visit(Sub instruction) {
    return null;
  }

  @Override
  public T visit(Swap instruction) {
    return null;
  }

  @Override
  public T visit(Switch instruction) {
    return null;
  }

  @Override
  public T visit(Throw instruction) {
    return null;
  }

  @Override
  public T visit(Ushr instruction) {
    return null;
  }

  @Override
  public T visit(Xor instruction) {
    return null;
  }
}
