/*******************************************************************************
 * Copyright (c) 2010, 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 v2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.wst.jsdt.debug.internal.crossfire.jsdi;

import org.eclipse.osgi.util.NLS;

/**
 *
 */
public class Messages extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.wst.jsdt.debug.internal.crossfire.jsdi.messages"; //$NON-NLS-1$
	public static String BreakpointTracker_0;
	public static String BreakpointTracker_1;
	public static String BreakpointTracker_10;
	public static String BreakpointTracker_11;
	public static String BreakpointTracker_12;
	public static String BreakpointTracker_13;
	public static String BreakpointTracker_14;
	public static String BreakpointTracker_2;
	public static String BreakpointTracker_3;
	public static String BreakpointTracker_4;
	public static String BreakpointTracker_5;
	public static String BreakpointTracker_6;
	public static String BreakpointTracker_7;
	public static String BreakpointTracker_8;
	public static String BreakpointTracker_9;
	public static String CFStackFrame_0;
	public static String crossfire_vm;
	public static String thread_name;
	public static String vm_name;
	static {
		// initialize resource bundle
		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
	}

	private Messages() {
	}
}
