###############################################################################
# Copyright (c) 2000, 2010 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
###############################################################################

ASTInstructionCompiler_Anonymous_type_declaration_cannot_be_used_in_an_evaluation_expression_2=Anonymous type declaration cannot be used in an evaluation expression
ASTInstructionCompiler_Assert_statement_cannot_be_used_in_an_evaluation_expression_3=Assert statement cannot be used in an evaluation expression
ASTInstructionCompiler_Unrecognized_assignment_operator____4=Unrecognized assignment operator :

ASTInstructionCompiler_Catch_clause_cannot_be_used_in_an_evaluation_expression_6=Catch clause cannot be used in an evaluation expression
ASTInstructionCompiler_Anonymous_type_declaration_cannot_be_used_in_an_evaluation_expression_7=Anonymous type declaration cannot be used in an evaluation expression
ASTInstructionCompiler_Constructor_of_a_local_type_cannot_be_used_in_an_evaluation_expression_8=Constructor of a local type cannot be used in an evaluation expression
ASTInstructionCompiler_this_constructor_invocation_cannot_be_used_in_an_evaluation_expression_9=this constructor invocation cannot be used in an evaluation expression
ASTInstructionCompiler_Error_in_type_declaration_statement= Error in declaration statement.
ASTInstructionCompiler_Unrecognized_infix_operator____13=Unrecognized infix operator :

ASTInstructionCompiler_unrecognized_postfix_operator____15=unrecognized postfix operator :
ASTInstructionCompiler_unrecognized_prefix_operator____16=unrecognized prefix operator :

ASTInstructionCompiler_super_constructor_invocation_cannot_be_used_in_an_evaluation_expression_19=super constructor invocation cannot be used in an evaluation expression
ASTInstructionCompiler_Try_statement_cannot_be_used_in_an_evaluation_expression_23=Try statement cannot be used in an evaluation expression
ASTInstructionCompiler_Type_declaration_cannot_be_used_in_an_evaluation_expression_24=Type declaration cannot be used in an evaluation expression
ASTInstructionCompiler_Type_declaration_statement_cannot_be_used_in_an_evaluation_expression_25=Type declaration statement cannot be used in an evaluation expression
ASTInstructionCompiler_Local_type_array_instance_creation_cannot_be_used_in_an_evaluation_expression_29=Local type array instance creation cannot be used in an evaluation expression
ASTInstructionCompiler_Constructor_which_contains_a_local_type_as_parameter_cannot_be_used_in_an_evaluation_expression_30=Constructor which contains a local type as parameter cannot be used in an evaluation expression
ASTInstructionCompiler_Qualified_local_type_field_access_cannot_be_used_in_an_evaluation_expression_31=Qualified local type field access cannot be used in an evaluation expression
ASTInstructionCompiler_Method_which_contains_a_local_type_as_parameter_cannot_be_used_in_an_evaluation_expression_32=Method which contains a local type as parameter cannot be used in an evaluation expression
ASTInstructionCompiler_Must_explicitly_qualify_the_allocation_with_an_instance_of_the_enclosing_type_33=Must explicitly qualify the allocation with an instance of the enclosing type
ASTEvaluationEngine_Evaluations_must_contain_either_an_expression_or_a_block_of_well_formed_statements_1=Evaluations must contain either an expression or a block of well-formed statements

InterpreterVariable_setValue_String__not_supported_for_interpreter_variable_1=setValue(String) not supported for interpreter variable
InterpreterVariable_verifyValue_IValue__not_supported_for_interpreter_variable_2=verifyValue(IValue) not supported for interpreter variable
InterpreterVariable_verifyValue_String__not_supported_for_interpreter_variable_3=verifyValue(String) not supported for interpreter variable

ASTEvaluationEngine_AST_evaluation_engine_cannot_evaluate_expression=The AST evaluation engine cannot evaluate this expression.
ASTEvaluationEngine_An_unknown_error_occurred_during_evaluation=An unknown error occurred during evaluation
ASTEvaluationEngine_Cannot_perform_nested_evaluations=Cannot perform nested evaluations.

ASTInstructionCompiler_3=Unable to resolve type binding for: {0}
ASTInstructionCompiler_36=Local type field access cannot be used in an evaluation expression
ASTInstructionCompiler_0=Enum declaration cannot be used in an evaluation expression
ASTInstructionCompiler_1=Unable to resolve type binding of constructor: {0}
ASTInstructionCompiler_2=Unable to resolve type binding of declaring type of: {0}
ASTInstructionCompiler_5=Unable to resolve binding for: {0}
ASTEvaluationEngine_0=Unable to evaluate expressions in the context of an interface
ASTEvaluationEngine_1=Unable to retrieve type for java.lang.Object
ArrayRuntimeContext_0=Unable to retrieve type for java.lang.Object
