###############################################################################
# Copyright (c) 2000, 2009 IBM Corporation and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################

AndAssignmentOperator_operator_1='&=\' operator
AndOperator_____operator_1='&\' operator
ArrayAccess_0=Null pointer exception: attempt to access null array object
ArrayAccess_array_access_1=array access
ArrayAccess_illegal_index=Attempt to access illegal array index: {0}
ArrayAllocation_array_allocation_1=array allocation
ArrayInitializerInstruction_array_initializer_1=array initializer
AssignmentOperator_operator_1='=\' operator
Cast_ClassCastException__Cannot_cast__0__as__1___1=ClassCastException: Cannot cast {0} to {1}
Cast_cast_3=cast
ConditionalJump_conditional_jump_1=conditional jump
Constructor_constructor__1=constructor
LocalVariableCreation_create_local_variable__0___1___1=Create local variable {1} {0}
DivideAssignmentOperator_operator_1='/=\' operator
DivideOperator_Divide_by_zero_1=Divide by zero
DivideOperator_Divide_by_zero_2=Divide by zero
DivideOperator______operator_3='/\' operator
EqualEqualOperator_operator_1='==\' operator
GreaterEqualOperator_operator_1='>=\' operator
GreaterOperator______operator_1='>\' operator
InstanceOfOperator__instanceof___operator_3='instanceof\' operator

Jump_jump_1=jump
LeftShiftAssignmentOperator_operator_1='<<=\' operator
LeftShiftOperator_______operator_1='<<\' operator
LessEqualOperator_operator_1='<=\' operator
LessOperator______operator_1='<\' operator
MinusAssignmentOperator_operator_1='-=\' operator
MinusOperator______operator_1='-\' operator
MultiplyAssignmentOperator_operator_1='*=\' operator
MultiplyOperator______operator_1='*\' operator
NoOp_no_op_1=no op
NotOperator______operator_1='!\' operator
OrAssignmentOperator_operator_1='|=\' operator
OrOperator______operator_1='|\' operator
PlusAssignmentOperator_operator_1='+=\' operator
PlusOperator______operator_2='+\' operator
Pop_pop_1=pop
PostfixMinusMinusOperator_postfix________operator_1=postfix \'--\' operator
PostfixPlusPlusOperator_postfix________operator_1=postfix \'++\' operator
PrefixMinusMinusOperator_prefix________operator_1=prefix \'--\' operator
PrefixPlusPlusOperator_prefix________operator_1=prefix \'++\' operator
PushBoolean_push__1=push
PushFieldVariable_0=Field access attempt on a null object
PushChar_push__1=push
PushClassLiteralValue_push_class_literal_value_1=push class literal value
PushDouble_push__1=push
PushFieldVariable_Cannot_find_the_field__0__for_the_object__1__1=Cannot find the field {0} for the object {1}
PushFieldVariable_push_field__0__2=push field {0}
PushArrayLength_push_array_length__1=push array length
PushFloat_push__1=push
PushInt_push__1=push
PushLong_push__1=push
PushNull_push___null__1=push \'null'
PushString_push__1=push
PushThis_push___this__1=push \'this'
PushThis_Unable_to_retrieve_the_correct_enclosing_instance_of__this__2=Unable to retrieve the correct enclosing instance of \'this'
PushType_push_type__1=push type
RemainderAssignmentOperator_operator_1='%=\' operator
RemainderOperator_Divide_by_zero_1=Divide by zero
RemainderOperator_Divide_by_zero_2=Divide by zero
RemainderOperator______operator_3='%\' operator
ReturnInstruction_return=return
RightShiftAssignmentOperator_operator_1='>>=\' operator
RightShiftOperator_______operator_1='>>\' operator
TwiddleOperator______operator_1='~\' operator
UnaryMinusOperator_unary_minus_operator_1=unary minus operator
UnaryPlusOperator_unary_plus_operator_1=unary plus operator
UnsignedRightShiftAssignmentOperator_operator_1='>>>=\' operator
UnsignedRightShiftOperator________operator_1='>>>\' operator
XorAssignmentOperator_operator_1='^=\' operator
XorOperator______operator_1='^\' operator
PushLocalVariable_Cannot_find_the_variable____1=Cannot find the variable {0}:
PushLocalVariable_push____0___2=push \"{0}\"
PushStaticFieldVariable_Cannot_find_the_field__0__in__1__1=Cannot find the field {0} in {1}
PushStaticFieldVariable_push_static_field__0__2=push static field {0}
SendMessage_Attempt_to_send_a_message_to_a_non_object_value_1=Attempt to send a message to a non object value
SendMessage_send_message__0___1__2=send message {0} {1}
SendStaticMessage_Cannot_send_a_static_message_to_a_non_class_type_object_1=Cannot send a static message to a non class type object
SendStaticMessage_send_static_message__0___1__2=send static message {0} {1}
Instruction_No_type=could not resolve type: {0}
InstanceOfOperator_No_class_object=could not get the class object for {0}
Cast_No_class_object=could not get the class object for {0}
LocalVariableCreation_Execution_failed___VM_disconnected__1=Execution failed - VM disconnected.
