/*******************************************************************************
 * Copyright (c) 2000, 2012 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 - Initial API and implementation
 *******************************************************************************/
package org.eclipse.jdi.internal;

import org.eclipse.osgi.util.NLS;

public class JDIMessages extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.jdi.internal.JDIMessages";//$NON-NLS-1$

	public static String ArrayReferenceImpl_Invalid_index_of_array_reference_given_1;
	public static String ArrayReferenceImpl_Invalid_ArrayReference_Value_tag_encountered___2;
	public static String ArrayReferenceImpl_Attempted_to_set_more_values_in_array_than_length_of_array_3;
	public static String ArrayReferenceImpl_Attempted_to_set_more_values_in_array_than_given_4;
	public static String ArrayReferenceImpl__Garbage_Collected__ArrayReference_5;
	public static String ArrayTypeImpl_getValues_not_allowed_on_array_1;
	public static String ArrayTypeImpl_No_source_name_for_Arrays_1;

	public static String class_or_object_not_known;
	public static String ClassTypeImpl_Class_does_not_contain_given_method_1;
	public static String ClassTypeImpl_Number_of_arguments_doesn__t_match_2;
	public static String ClassTypeImpl_Method_is_constructor_or_intitializer_3;
	public static String ClassTypeImpl_Class_does_not_contain_given_method_4;
	public static String ClassTypeImpl_Number_of_arguments_doesn__t_match_5;
	public static String ClassTypeImpl_Method_is_not_a_constructor_6;
	public static String InterfaceTypeImpl_Static_interface_methods_require_newer_JVM;
	public static String FieldImpl_Can__t_compare_field_to_given_object_1;
	public static String FieldImpl_Got_FieldID_of_ReferenceType_that_is_not_a_member_of_the_ReferenceType_2;
	public static String LocalVariableImpl_Can__t_compare_local_variable_to_given_object_1;
	public static String LocalVariableImpl_Code_indexes_are_assumed_to_be_always_positive_2;
	public static String LocalVariableImpl_The_stack_frame__s_method_does_not_match_this_variable__s_method_3;
	public static String LocalVariableImpl_Code_indexes_are_assumed_to_be_always_positive_4;
	public static String LocationImpl_Can__t_compare_location_to_given_object_1;
	public static String LocationImpl_Code_indexes_are_assumed_to_be_always_positive_2;
	public static String LocationImpl_sourcename___0___line___1__3;
	public static String MethodImpl_Got_empty_line_number_table_for_this_method_1;
	public static String MethodImpl_No_line_number_information_available_2;
	public static String MethodImpl_Got_empty_line_number_table_for_this_method_3;
	public static String MethodImpl_Invalid_code_index_of_a_location_given_4;
	public static String MethodImpl_Can__t_compare_method_to_given_object_6;
	public static String MethodImpl_No_local_variable_information_available_9;
	public static String MethodImpl_Got_MethodID_of_ReferenceType_that_is_not_a_member_of_the_ReferenceType_10;
	public static String MethodImpl_No_valid_location_at_the_specified_code_index__0__2;

	public static String MirrorImpl_Got_error_code_in_reply___1;
	public static String MirrorImpl_Got_invalid_data___2;

	public static String ObjectReferenceImpl_object_not_known;

	public static String ObjectReferenceImpl_Retrieved_a_different_number_of_values_from_the_VM_than_requested_1;
	public static String ObjectReferenceImpl_Class_does_not_contain_given_method_2;
	public static String ObjectReferenceImpl_Number_of_arguments_doesn__t_match_3;
	public static String ObjectReferenceImpl_Method_is_constructor_or_intitializer_4;
	public static String ObjectReferenceImpl_Method_is_abstract_and_can_therefore_not_be_invoked_nonvirtual_5;
	public static String ObjectReferenceImpl_One_of_the_arguments_of_ObjectReference_invokeMethod___6;
	public static String ObjectReferenceImpl__Garbage_Collected__ObjectReference__8;
	public static String ObjectReferenceImpl_Invalid_ObjectID_tag_encountered___9;

	public static String PrimitiveTypeImpl_Invalid_primitive_signature____1;
	public static String PrimitiveTypeImpl___2;
	public static String PrimitiveTypeImpl_A_PrimitiveType_does_not_have_modifiers_3;
	public static String PrimitiveValueImpl_Invalid_Primitive_Value_tag_encountered___2;

	public static String ReferenceTypeImpl_26;
	public static String ReferenceTypeImpl_27;
	public static String ReferenceTypeImpl_no_class_version_support24;
	public static String ReferenceTypeImpl_no_constant_pool_support;
	public static String ReferenceTypeImpl_Obsolete_method_1;
	public static String ReferenceTypeImpl_Retrieved_a_different_number_of_values_from_the_VM_than_requested_3;
	public static String ReferenceTypeImpl_Can__t_compare_reference_type_to_given_object_4;
	public static String ReferenceTypeImpl_Source_name_is_not_known_7;
	public static String ReferenceTypeImpl_Invalid_ReferenceTypeID_tag_encountered___8;
	public static String ReferenceTypeImpl_Type_has_not_been_loaded_10;

	public static String StackFrameImpl_no_argument_values_available;
	public static String StackFrameImpl_Retrieved_a_different_number_of_values_from_the_VM_than_requested_1;
	public static String StringReferenceImpl__Garbage_Collected__StringReference__3;

	public static String ThreadReferenceImpl_incapatible_return_type;
	public static String ThreadReferenceImpl_no_force_early_return_on_threads;
	public static String ThreadReferenceImpl_thread_cannot_force_native_method;
	public static String ThreadReferenceImpl_thread_no_stackframes;
	public static String ThreadReferenceImpl_thread_not_suspended;
	public static String ThreadReferenceImpl_thread_object_invalid;
	public static String ThreadReferenceImpl_thread_or_value_unknown;
	public static String ThreadReferenceImpl_Thread_was_not_suspended_1;
	public static String ThreadReferenceImpl_Invalid_index_of_stack_frames_given_4;
	public static String ThreadReferenceImpl_Thread_was_not_suspended_5;
	public static String ThreadReferenceImpl_Unknown_thread_status_received___6;
	public static String ThreadReferenceImpl_Stop_argument_not_an_instance_of_java_lang_Throwable_in_the_target_VM_7;
	public static String ThreadReferenceImpl_8;
	public static String ThreadReferenceImpl__Garbage_Collected__ThreadReference__9;
	public static String ThreadReferenceImpl_Unable_to_pop_the_requested_stack_frame_from_the_call_stack__Reasons_include__The_frame_id_was_invalid__The_thread_was_resumed__10;
	public static String ThreadReferenceImpl_Unable_to_pop_the_requested_stack_frame__The_requested_stack_frame_is_not_suspended_11;
	public static String 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;
	public static String ThreadReferenceImpl_vm_read_only;
	public static String TypeImpl__Unloaded_Type__1;
	public static String TypeImpl_Can__t_covert_method_signature_to_tag___9;
	public static String TypeImpl_Invalid_signature____10;
	public static String TypeImpl___11;
	public static String TypeImpl_Can__t_convert_method_signature_to_name_2;
	public static String ValueImpl_Invalid_Value_tag_encountered___1;

	public static String VirtualMachineImpl_2;
	public static String VirtualMachineImpl_3;
	public static String VirtualMachineImpl_count_less_than_zero;
	public static String VirtualMachineImpl_Target_VM__0__does_not_support_Hot_Code_Replacement_1;
	public static String VirtualMachineImpl_Failed_to_get_ID_sizes_2;
	public static String VirtualMachineImpl_Invalid_result_flag_in_Classes_Have_Changed_response___3;
	public static String VirtualMachineImpl__4;
	public static String VirtualMachineImpl_0;
	public static String VirtualMachineImpl_1;
	public static String VirtualMachineManagerImpl_Could_not_open_verbose_file___1;
	public static String VirtualMachineManagerImpl_____2;

	public static String vm_dead;
	public static String VoidTypeImpl_A_VoidType_does_not_have_modifiers_1;
	public static String VirtualMachineImpl_Add_method_not_implemented_1;
	public static String VirtualMachineImpl_Scheme_change_not_implemented_2;
	public static String VirtualMachineImpl_Hierarchy_change_not_implemented_3;
	public static String VirtualMachineImpl_Delete_method_not_implemented_4;
	public static String VirtualMachineImpl_Class_modifiers_change_not_implemented_5;
	public static String VirtualMachineImpl_Method_modifiers_change_not_implemented_6;
	public static String VerboseWriter___unknown_value__1;
	public static String VerboseWriter__unknown_bit__2;
	public static String VerboseWriter__none__4;
	public static String ArrayReferenceImpl_Invalid_index_1;
	public static String ArrayReferenceImpl_Invalid_srcIndex_2;
	public static String ArrayReferenceImpl_Invalid_number_of_value_to_set_in_array_3;
	public static String ValueImpl_Type_of_the_value_not_compatible_with_the_expected_type__1;
	public static String ArrayReferenceImpl_Invalid_number_of_value_to_get_from_array_1;
	public static String ArrayReferenceImpl_Attempted_to_get_more_values_from_array_than_length_of_array_2;
	public static String ReferenceTypeImpl_28;
	public static String ReferenceTypeImpl_29;
	public static String ReferenceTypeImpl_30;
	public static String ReferenceTypeImpl_31;
	public static String ReferenceTypeImpl_32;
	public static String ReferenceTypeImpl_34;
	public static String SourceDebugExtensionParser_0;
	public static String SourceDebugExtensionParser_2;
	public static String SourceDebugExtensionParser_3;
	public static String SourceDebugExtensionParser_4;
	public static String SourceDebugExtensionParser_5;
	public static String SourceDebugExtensionParser_6;
	public static String SourceDebugExtensionParser_7;
	public static String SourceDebugExtensionParser_8;
	public static String SourceDebugExtensionParser_9;
	public static String SourceDebugExtensionParser_10;
	public static String SourceDebugExtensionParser_11;
	public static String SourceDebugExtensionParser_12;
	public static String SourceDebugExtensionParser_13;
	public static String SourceDebugExtensionParser_14;
	public static String SourceDebugExtensionParser_16;
	public static String SourceDebugExtensionParser_17;
	public static String SourceDebugExtensionParser_19;
	public static String SourceDebugExtensionParser_22;
	public static String SourceDebugExtensionParser_23;
	public static String SourceDebugExtensionParser_24;
	public static String SourceDebugExtensionParser_25;
	public static String SourceDebugExtensionParser_26;
	public static String SourceDebugExtensionParser_27;
	public static String SourceDebugExtensionParser_28;

	static {
		// load message values from bundle file
		NLS.initializeMessages(BUNDLE_NAME, JDIMessages.class);
	}
}
