class VarInsnAST extends InsnAST implements VariableReference {
	private final NameAST variable;

	/**
	 * @param line
	 * 		Line number this node is written on.
	 * @param start
	 * 		Offset from line start this node starts at.
	 * @param opcode
	 * 		Opcode AST.
	 * @param variable
	 * 		Variable name AST.
	 */
	public VarInsnAST(int line, int start, OpcodeAST opcode, NameAST variable) {
		super(line, start, opcode);
		this.variable = variable;
		addChild(variable);
	}

	@Override
	public NameAST getVariableName() {
		return variable;
	}

	@Override
	public int getVariableSort() {<FILL_FUNCTION_BODY>}

	@Override
	public String print() {
		return getOpcode().print() + " " + variable.print();
	}

	@Override
	public void compile(MethodCompilation compilation) throws AssemblerException {
		compilation.addInstruction(new VarInsnNode(getOpcode().getOpcode(),
				getVariableIndex(compilation.getVariableNameCache())), this);
	}
}

		int opcode = getOpcode().getOpcode();
		switch (opcode) {
			case Opcodes.ILOAD:
			case Opcodes.ISTORE:
				return Type.INT;
			case Opcodes.LLOAD:
			case Opcodes.LSTORE:
				return Type.LONG;
			case Opcodes.DLOAD:
			case Opcodes.DSTORE:
				return Type.DOUBLE;
			case Opcodes.FLOAD:
			case Opcodes.FSTORE:
				return Type.FLOAT;
			case Opcodes.ALOAD:
			case Opcodes.ASTORE:
			default:
				return Type.OBJECT;
		}
	
<methods>public void <init>(int, int, me.coley.recaf.parse.bytecode.ast.OpcodeAST) ,public void compile(me.coley.recaf.parse.bytecode.MethodCompilation) throws me.coley.recaf.parse.bytecode.exception.AssemblerException,public me.coley.recaf.parse.bytecode.ast.OpcodeAST getOpcode() ,public java.lang.String print() <variables>private final non-sealed me.coley.recaf.parse.bytecode.ast.OpcodeAST opcode