###############################################################################
# Copyright (c) 2004 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
###############################################################################
Please_specify_CSS_file_na=Please specify CSS file name.
ERROR__Cannot_use_a_static_ERROR_=ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.
You_cannot_use_CSSStyleShe_UI_=You cannot use CSSStyleSheet.getOwnerRule() because of many referencers of this rule\nPlease use getOnwerRules()
Missing_return_statement_i_ERROR_=Missing return statement in function
1concat_ERROR_={0}first flat node is null.
2concat_ERROR_={0}first flat node is not in model.
3concat_ERROR_={0}last flat node is null.
4concat_ERROR_={0}last flat node is not in model.
25concat_ERROR_={0}first region is null.
26concat_ERROR_={0}first region is not in model.
27concat_ERROR_={0}last region is null.
28concat_ERROR_={0}last region is not in model.
5concat_ERROR_={0}first region is null.
6concat_ERROR_={0}first region is not in model.
7concat_ERROR_={0}last region is null.
8concat_ERROR_={0}last region is not in model.
9concat_ERROR_=Invalid escape character at line {0} column {1}.
12concat_EXC_=Caught Exception: {0}
13concat_ERROR_=Error: Ignoring invalid lexical state : {0}. State unchanged.
15concat_ERROR_=Lexical error at line {0}, column {1}.  Encountered:  {2} after :
ERROR__Cannot_use_a_static_ERROR__ERROR_=ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.
