###############################################################################
# Copyright (c) 2003, 2019 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
###############################################################################
BreakpointConditionEditor_1=Enter a condition
ExceptionBreakpointEditor_1=&Caught locations
ExceptionBreakpointEditor_2=&Uncaught locations
ExceptionBreakpointEditor_3=Subclasses of this e&xception
ExceptionFilterEditor_5=Re&strict to Selected Location(s):\nChecked locations are inclusive (stop in the specified location)\nUnchecked locations are exclusive (do not stop in the specified location)
ExceptionFilterEditor_6=&Add
ExceptionFilterEditor_7=Add a fully qualified type name or package name expression as a filter pattern for this breakpoint
ExceptionFilterEditor_8=Add &Class...
ExceptionFilterEditor_9=Choose a Java Class to Add to the Breakpoint Scope
ExceptionFilterEditor_10=Add &Package...
ExceptionFilterEditor_11=Choose a Package to Add to the Breakpoint Scope
ExceptionFilterEditor_12=R&emove
ExceptionFilterEditor_13=Remove all selected scoping elements
ExceptionFilterEditor_14=Invalid expression. Return to continue; escape to exit
ExceptionFilterEditor_15=Add Package to Scope
ExceptionFilterEditor_16=Could not open package selection dialog for scope definition
ExceptionFilterEditor_18=&Select a package to add to the scope of the breakpoint:
ExceptionFilterEditor_19=Add Class to Scope
ExceptionFilterEditor_20=Could not open class selection dialog for scope definition
ExceptionFilterEditor_22=&Select a class to add to the scope of the breakpoint:
JavaBreakpointConditionEditor_0=Co&nditional
JavaBreakpointConditionEditor_1=Suspend when \'tr&ue\'
JavaBreakpointConditionEditor_2=Suspend &when value changes
JavaBreakpointConditionEditor_choosePreviousCondition=<Choose a previously entered condition>
JavaBreakpointConditionEditor_historySeparator=Global history
JavaBreakpointPage_0=Hit count must be a positive integer
JavaBreakpointPage_10=Create Breakpoint for {0}
JavaBreakpointPage_11=Class Prepare Breakpoint
JavaBreakpointPage_12=T&rigger Point
JavaBreakpointPage_13=Active Trigger
JavaBreakpointPage_3=&Type:
JavaBreakpointPage_4=&Hit count:
JavaBreakpointPage_5=&Enabled
JavaBreakpointPage_7=&Suspend thread
JavaBreakpointPage_8=Suspend &VM
JavaBreakpointPage_9=Unable to cancel breakpoint creation
JavaExceptionBreakpointPage_5=Java Exception Breakpoint
JavaLineBreakpointPage_2=&Line Number:
JavaLineBreakpointPage_3=&Member:
JavaLineBreakpointPage_4=&Method:
JavaLineBreakpointPage_5=&Field:
JavaLineBreakpointPage_7=&Access
JavaLineBreakpointPage_8=&Modification
JavaLineBreakpointPage_10=Entr&y
JavaLineBreakpointPage_11=E&xit
JavaLineBreakpointPage_18=Line Breakpoint
JavaLineBreakpointPage_19=Watchpoint
JavaLineBreakpointPage_20=Method Breakpoint
JavaVariableDetailsPane_choosePreviousExpression=<Choose a previously entered expression for debugging>
JavaVariableDetailsPane_description=Java Variable Detail Pane Viewer
JavaVariableDetailsPane_historySeparator=Global history
JavaVariableDetailsPane_name=Java Variable Detail Pane Viewer
JavaVariableDetailsPane_settings=Java Variable Detail Pane Settings
ThreadFilterEditor_1=&Restrict to Selected Thread(s):
ThreadFilterEditor_2=Must select a thread in selected targets
InstanceFilterEditor_0=Restricted to Selected Ob&ject(s)
VMCapabilitiesPropertyPage_0=The selected debug element does not allow access to the underlying virtual machine.
VMCapabilitiesPropertyPage_1=&Virtual Machine: 
VMCapabilitiesPropertyPage_3=Supports synthetic method step filter
VMCapabilitiesPropertyPage_4=Instance specific breakpoints
VMCapabilitiesPropertyPage_6=Deadlock detection
VMCapabilitiesPropertyPage_9=Field modification watchpoints
VMCapabilitiesPropertyPage_10=Field access watchpoints
VMCapabilitiesPropertyPage_12=Method addition
VMCapabilitiesPropertyPage_14=Drop to frame
VMCapabilitiesPropertyPage_15=Hot code replace
VMCapabilitiesPropertyPage_16=Arbitrary class redefinition
VMCapabilitiesPropertyPage_18=JSR045: stepping and breakpoints in non-Java source
VMCapabilitiesPropertyPage_21=Force early return from a method
VMCapabilitiesPropertyPage_24=Return value on method exit breakpoint
VMCapabilitiesPropertyPage_25=Monitor acquisition and release
VMCapabilitiesPropertyPage_26=Heap walking
VMCapabilitiesPropertyPage_27=&Breakpoints
VMCapabilitiesPropertyPage_28=&Hot Code Replace
VMCapabilitiesPropertyPage_29=&Stepping
VMCapabilitiesPropertyPage_30=&General
VMCapabilitiesPropertyPage_31=This page displays optional debug capabilities that may be supported by the selected VM.
