###############################################################################
# Copyright (c) 2000, 2012 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################

ArrayReferenceImpl_Invalid_index_of_array_reference_given_1=Invalid index of array reference given
ArrayReferenceImpl_Invalid_ArrayReference_Value_tag_encountered___2=Invalid ArrayReference Value tag encountered:
ArrayReferenceImpl_Attempted_to_set_more_values_in_array_than_length_of_array_3=Attempted to set more values in array than length of array
ArrayReferenceImpl_Attempted_to_set_more_values_in_array_than_given_4=Attempted to set more values in array than given
ArrayReferenceImpl__Garbage_Collected__ArrayReference_5=(Garbage Collected) ArrayReference
ArrayTypeImpl_getValues_not_allowed_on_array_1=get values not allowed on array
ArrayTypeImpl_No_source_name_for_Arrays_1=No source name for Arrays
ClassTypeImpl_Class_does_not_contain_given_method_1=Class does not contain given method
ClassTypeImpl_Number_of_arguments_doesn__t_match_2=Number of arguments does not match
ClassTypeImpl_Method_is_constructor_or_intitializer_3=Method is constructor or initializer
ClassTypeImpl_Class_does_not_contain_given_method_4=Class does not contain given method
ClassTypeImpl_Number_of_arguments_doesn__t_match_5=Number of arguments does not match
ClassTypeImpl_Method_is_not_a_constructor_6=Method is not a constructor
InterfaceTypeImpl_Static_interface_methods_require_newer_JVM=Static interface method invocation requires newer JVM.
FieldImpl_Can__t_compare_field_to_given_object_1=Cannot compare field to given object
FieldImpl_Got_FieldID_of_ReferenceType_that_is_not_a_member_of_the_ReferenceType_2=Got FieldID of ReferenceType that is not a member of the ReferenceType
LocalVariableImpl_Can__t_compare_local_variable_to_given_object_1=Cannot compare local variable to given object
LocalVariableImpl_Code_indexes_are_assumed_to_be_always_positive_2=Code indexes are assumed to be always positive
LocalVariableImpl_The_stack_frame__s_method_does_not_match_this_variable__s_method_3=The stack frame\'s method does not match this variable\'s method
LocalVariableImpl_Code_indexes_are_assumed_to_be_always_positive_4=Code indexes are assumed to be always positive
LocationImpl_Can__t_compare_location_to_given_object_1=Cannot compare location to given object
LocationImpl_Code_indexes_are_assumed_to_be_always_positive_2=Code indexes are assumed to be always positive
LocationImpl_sourcename___0___line___1__3=sourcename: {0}, line: {1}
MethodImpl_Got_empty_line_number_table_for_this_method_1=Got empty line number table for this method
MethodImpl_No_line_number_information_available_2=No line number information available
MethodImpl_Got_empty_line_number_table_for_this_method_3=Got empty line number table for this method
MethodImpl_Invalid_code_index_of_a_location_given_4=Invalid code index of a location given
MethodImpl_Can__t_compare_method_to_given_object_6=Cannot compare method to given object
MethodImpl_No_local_variable_information_available_9=No local variable information available
MethodImpl_Got_MethodID_of_ReferenceType_that_is_not_a_member_of_the_ReferenceType_10=Got MethodID of ReferenceType that is not a member of the ReferenceType
MethodImpl_No_valid_location_at_the_specified_code_index__0__2=No valid location at the specified code index {0}

MirrorImpl_Got_error_code_in_reply___1=Got error code in reply:
MirrorImpl_Got_invalid_data___2=Got invalid data:
ObjectReferenceImpl_Retrieved_a_different_number_of_values_from_the_VM_than_requested_1=Retrieved a different number of values from the VM than requested
ObjectReferenceImpl_Class_does_not_contain_given_method_2=Class does not contain given method
ObjectReferenceImpl_Number_of_arguments_doesn__t_match_3=Number of arguments does not match
ObjectReferenceImpl_Method_is_constructor_or_intitializer_4=Method is constructor or initializer
ObjectReferenceImpl_Method_is_abstract_and_can_therefore_not_be_invoked_nonvirtual_5=Method is abstract and can therefore not be invoked nonvirtual
ObjectReferenceImpl_One_of_the_arguments_of_ObjectReference_invokeMethod___6=One of the arguments of ObjectReference.invokeMethod()
ObjectReferenceImpl__Garbage_Collected__ObjectReference__8=(Garbage Collected) ObjectReference
ObjectReferenceImpl_Invalid_ObjectID_tag_encountered___9=Invalid ObjectID tag encountered:
PrimitiveTypeImpl_Invalid_primitive_signature____1=Invalid primitive signature: "
PrimitiveTypeImpl___2="
PrimitiveTypeImpl_A_PrimitiveType_does_not_have_modifiers_3=A PrimitiveType does not have modifiers
PrimitiveValueImpl_Invalid_Primitive_Value_tag_encountered___2=Invalid Primitive Value tag encountered:
ReferenceTypeImpl_Obsolete_method_1=Obsolete method
ReferenceTypeImpl_Retrieved_a_different_number_of_values_from_the_VM_than_requested_3=Retrieved a different number of values from the VM than requested
ReferenceTypeImpl_Can__t_compare_reference_type_to_given_object_4=Cannot compare reference type to given object
ReferenceTypeImpl_Source_name_is_not_known_7=Source name is not known
ReferenceTypeImpl_no_class_version_support24=VM does not support class file version information.
ReferenceTypeImpl_no_constant_pool_support=VM does not support constant pool information.
ReferenceTypeImpl_Invalid_ReferenceTypeID_tag_encountered___8=Invalid ReferenceTypeID tag encountered:
ReferenceTypeImpl_Type_has_not_been_loaded_10=Type has not been loaded
StackFrameImpl_Retrieved_a_different_number_of_values_from_the_VM_than_requested_1=Retrieved a different number of values from the VM than requested
StringReferenceImpl__Garbage_Collected__StringReference__3=(Garbage Collected) StringReference
ThreadReferenceImpl_Thread_was_not_suspended_1=Thread was not suspended
ThreadReferenceImpl_Invalid_index_of_stack_frames_given_4=Invalid index of stack frames given
ThreadReferenceImpl_Thread_was_not_suspended_5=Thread was not suspended
ThreadReferenceImpl_thread_not_suspended=Thread must be suspended to force early return.
ThreadReferenceImpl_thread_no_stackframes=Thread has no stack frames.
ThreadReferenceImpl_thread_object_invalid=The thread or object is invalid.
ThreadReferenceImpl_thread_or_value_unknown=The thread or value is an unknown ID.
ThreadReferenceImpl_incapatible_return_type=The specified return type is not compatible with the return type of the method.
ThreadReferenceImpl_Unknown_thread_status_received___6=Unknown thread status received:
ThreadReferenceImpl_no_force_early_return_on_threads=VM does not support forcing early return on threads.
ThreadReferenceImpl_thread_cannot_force_native_method=Cannot force return from a native method.
ThreadReferenceImpl_Stop_argument_not_an_instance_of_java_lang_Throwable_in_the_target_VM_7=Stop argument not an instance of java.lang.Throwable in the target VM
ThreadReferenceImpl_8={0} (name={1}, id={2})
ThreadReferenceImpl_vm_read_only=The VM is read-only and cannot be modified.
ThreadReferenceImpl__Garbage_Collected__ThreadReference__9=(Garbage Collected) ThreadReference
ThreadReferenceImpl_Unable_to_pop_the_requested_stack_frame_from_the_call_stack__Reasons_include__The_frame_id_was_invalid__The_thread_was_resumed__10=Unable to pop the requested stack frame from the call stack (Reasons include: The frame id was invalid; The thread was resumed)
ThreadReferenceImpl_Unable_to_pop_the_requested_stack_frame__The_requested_stack_frame_is_not_suspended_11=Unable to pop the requested stack frame. The requested stack frame is not suspended
ThreadReferenceImpl_Unable_to_pop_the_requested_stack_frame_from_the_call_stack__Reasons_include__The_requested_frame_was_the_last_frame_on_the_call_stack__The_requested_frame_was_the_last_frame_above_a_native_frame__12=Unable to pop the requested stack frame from the call stack (Reasons include: The requested frame was the last frame on the call stack; The requested frame was the last frame above a native frame)
TypeImpl__Unloaded_Type__1=(Unloaded Type)
TypeImpl_Can__t_covert_method_signature_to_tag___9=Cannot convert method signature to tag:
TypeImpl_Invalid_signature____10=Invalid signature: "
TypeImpl___11="
TypeImpl_Can__t_convert_method_signature_to_name_2=Cannot convert method signature to name
ValueImpl_Invalid_Value_tag_encountered___1=Invalid Value tag encountered:
VirtualMachineImpl_Target_VM__0__does_not_support_Hot_Code_Replacement_1=Target VM {0} does not support Hot Code Replacement
VirtualMachineImpl_Failed_to_get_ID_sizes_2=Failed to get ID sizes
VirtualMachineImpl_count_less_than_zero=The count of refTypes cannot be less than zero.
VirtualMachineImpl_Invalid_result_flag_in_Classes_Have_Changed_response___3=Invalid result flag in Classes Have Changed response:
VirtualMachineImpl__4=
VirtualMachineImpl_0=Packet Receive Manager
VirtualMachineImpl_1=Packet Send Manager
VirtualMachineImpl_2=Reference type list cannot be null.
VirtualMachineImpl_3=Improper instance counts between VM and client.
VirtualMachineManagerImpl_Could_not_open_verbose_file___1=Could not open verbose file "
VirtualMachineManagerImpl_____2=":
VoidTypeImpl_A_VoidType_does_not_have_modifiers_1=A VoidType does not have modifiers
VirtualMachineImpl_Add_method_not_implemented_1=Add method not implemented
VirtualMachineImpl_Scheme_change_not_implemented_2=Scheme change not implemented
VirtualMachineImpl_Hierarchy_change_not_implemented_3=Hierarchy change not implemented
VirtualMachineImpl_Delete_method_not_implemented_4=Delete method not implemented
VirtualMachineImpl_Class_modifiers_change_not_implemented_5=Class modifiers change not implemented
VirtualMachineImpl_Method_modifiers_change_not_implemented_6=Method modifiers change not implemented
VerboseWriter___unknown_value__1=\ <unknown value>
VerboseWriter__unknown_bit__2=<unknown bit>
VerboseWriter__none__4=<none>
ArrayReferenceImpl_Invalid_index_1=Invalid index
ArrayReferenceImpl_Invalid_srcIndex_2=Invalid srcIndex
ArrayReferenceImpl_Invalid_number_of_value_to_set_in_array_3=Invalid number of value to set in array
ValueImpl_Type_of_the_value_not_compatible_with_the_expected_type__1=Generated value ({0}) is not compatible with declared type ({1}).
ArrayReferenceImpl_Invalid_number_of_value_to_get_from_array_1=Invalid number of value to get from array
ArrayReferenceImpl_Attempted_to_get_more_values_from_array_than_length_of_array_2=Attempted to get more values from array than length of array
ReferenceTypeImpl_28=SMAP parsing: {0} already used as file id in {1}
ReferenceTypeImpl_29=SMAP parsing: {0} is not a valid lineFileId.
ReferenceTypeImpl_27=Heap walking is not supported by this VM.
ReferenceTypeImpl_26=The maximum value cannot be less than zero.
ReferenceTypeImpl_30=No source names for this stratum.
ReferenceTypeImpl_31=Source Debug Extension not defined
ReferenceTypeImpl_32=source debug extension
ReferenceTypeImpl_34=No information for the specified sourceName.
SourceDebugExtensionParser_0=SMAP parsing: Unexpected end of file
SourceDebugExtensionParser_2=SMAP parsing: The default stratum is not defined in a stratum section.
SourceDebugExtensionParser_3=SMAP parsing: Invalid ID.
SourceDebugExtensionParser_4=SMAP parsing: Carriage return expected.
SourceDebugExtensionParser_5=SMAP parsing: Invalid output file name.
SourceDebugExtensionParser_6=SMAP parsing: Invalid default stratum id.
SourceDebugExtensionParser_7=SMAP parsing: Stratum section expected.
SourceDebugExtensionParser_8=SMAP parsing: Invalid stratum id.
SourceDebugExtensionParser_9=SMAP parsing: Stratum ''{0}'' already defined.
SourceDebugExtensionParser_10=SMAP parsing: File section already defined for stratum ''{0}''.
SourceDebugExtensionParser_11=SMAP parsing: Line section already defined for stratum ''{0}''.
SourceDebugExtensionParser_12=SMAP parsing: Unexpected token ''{0}''.
SourceDebugExtensionParser_13=SMAP parsing: No file section defined for stratum ''{0}''.
SourceDebugExtensionParser_14=SMAP parsing: No line section defined for stratum ''{0}''.
SourceDebugExtensionParser_16=SMAP parsing: File name expected.
SourceDebugExtensionParser_17=SMAP parsing: File id expected.
SourceDebugExtensionParser_19=SMAP parsing: Absolute file name expected.
SourceDebugExtensionParser_22=SMAP parsing: Input start line expected.
SourceDebugExtensionParser_23=SMAP parsing: Line file id expected.
SourceDebugExtensionParser_24=SMAP parsing: Repeat count expected.
SourceDebugExtensionParser_25=SMAP parsing: \':\' expected.
SourceDebugExtensionParser_26=SMAP parsing: Output start line expected.
SourceDebugExtensionParser_27=SMAP parsing: Output line increment expected.
SourceDebugExtensionParser_28=SMAP parsing: Carriage return expected.
StackFrameImpl_no_argument_values_available=The selected stack frame is no longer able to get argument values.
ObjectReferenceImpl_object_not_known=Object is not a known ID.
class_or_object_not_known=The class or object is not known or incorrect.
vm_dead=VM is not responding or disconnected.
