Merge remote-tracking branch 'origin/master' into IDEA-CR-10038
authorVladimir Krivosheev <vladimir.krivosheev@jetbrains.com>
Thu, 12 May 2016 09:28:40 +0000 (11:28 +0200)
committerVladimir Krivosheev <vladimir.krivosheev@jetbrains.com>
Thu, 12 May 2016 09:28:40 +0000 (11:28 +0200)
479 files changed:
RegExpSupport/gen/org/intellij/lang/regexp/_RegExLexer.java
build/scripts/dist.gant
build/scripts/download_jre.gant [new file with mode: 0644]
build/scripts/utils.gant
community-resources/src/idea_community_about.png
community-resources/src/idea_community_about@2x.png
community-resources/src/idea_community_logo.png
community-resources/src/idea_community_logo@2x.png
java/compiler/impl/src/com/intellij/packaging/impl/elements/LibraryPackagingElement.java
java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java
java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/DescriptorTree.java
java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/ValueDescriptorImpl.java
java/debugger/openapi/src/com/intellij/debugger/DebuggerManager.java
java/execution/impl/src/com/intellij/execution/testframework/SearchForTestsTask.java
java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AbstractProjectWizard.java
java/idea-ui/src/com/intellij/ide/util/newProjectWizard/WizardDelegate.java
java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java
java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java
java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightNamesUtil.java
java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java
java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousCanBeLambdaInspection.java
java/java-impl/gen/com/intellij/spi/parsing/_SPILexer.java
java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsManagerImpl.java
java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/FileHeaderChecker.java
java/java-impl/src/com/intellij/psi/formatter/java/JavaLineWrapPositionStrategy.java
java/java-impl/src/com/intellij/refactoring/introduceParameter/JavaIntroduceParameterMethodUsagesProcessor.java
java/java-impl/src/com/intellij/refactoring/memberPushDown/JavaPushDownDelegate.java
java/java-impl/src/com/intellij/refactoring/memberPushDown/PushDownDialog.java
java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerDialog.java
java/java-impl/src/com/intellij/spi/parsing/_SPILexer.flex
java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaClassInheritorsSearcher.java
java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaDirectInheritorsSearcher.java
java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaOverridingMethodsSearcher.java
java/java-psi-impl/gen/com/intellij/lang/java/lexer/_JavaDocLexer.java
java/java-psi-impl/gen/com/intellij/lang/java/lexer/_JavaLexer.java
java/java-psi-impl/src/com/intellij/lang/java/lexer/_JavaDocLexer.flex
java/java-psi-impl/src/com/intellij/lang/java/lexer/_JavaLexer.flex
java/java-psi-impl/src/com/intellij/psi/impl/source/tree/JavaDocElementType.java
java/java-psi-impl/src/com/intellij/psi/impl/source/tree/JavaElementType.java
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/NamesHighlighting.java
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/scopeBased/x/Shared.java
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/scopeBased/x/X.java
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterMultipleConstructorsWithOneCandidateWithCorrectParamNumber.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeMultipleConstructorsWithOneCandidateWithCorrectParamNumber.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/makeInnerStatic/afterInnerClass.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/makeInnerStatic/beforeInnerClass.java [new file with mode: 0644]
java/java-tests/testData/refactoring/introduceParameter/afterSubstituteTypeParamsInInheritor.java [new file with mode: 0644]
java/java-tests/testData/refactoring/introduceParameter/beforeSubstituteTypeParamsInInheritor.java [new file with mode: 0644]
java/java-tests/testSrc/com/intellij/codeInsight/SuppressExternalTest.java
java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/MakeInnerClassStaticTest.java [new file with mode: 0644]
java/java-tests/testSrc/com/intellij/codeInsight/template/LiveTemplateTest.groovy
java/java-tests/testSrc/com/intellij/openapi/vfs/JrtFileSystemTest.java
java/java-tests/testSrc/com/intellij/psi/ClsMirrorBuildingTest.java
java/java-tests/testSrc/com/intellij/psi/ClsPsiTest.java
java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaLineWrapTest.java
java/java-tests/testSrc/com/intellij/refactoring/IntroduceParameterTest.java
jps/jps-builders/src/org/jetbrains/jps/cmdline/BuildRunner.java
platform/analysis-impl/src/com/intellij/codeInspection/inspection-black-list.txt
platform/configuration-store-impl/src/StorageBaseEx.kt
platform/core-api/src/com/intellij/openapi/progress/Task.java
platform/core-api/src/com/intellij/psi/PsiReferenceBase.java
platform/core-impl/src/com/intellij/openapi/application/TransactionGuardImpl.java
platform/core-impl/src/com/intellij/openapi/progress/util/ProgressWrapper.java
platform/core-impl/src/com/intellij/psi/impl/source/text/BlockSupportImpl.java
platform/diff-api/src/com/intellij/diff/DiffRequestPanel.java
platform/diff-impl/src/com/intellij/diff/actions/NavigationContextChecker.java [deleted file]
platform/diff-impl/src/com/intellij/diff/comparison/iterables/DiffIterableUtil.java
platform/diff-impl/src/com/intellij/diff/impl/DiffRequestPanelImpl.java
platform/diff-impl/src/com/intellij/diff/tools/fragmented/UnifiedDiffViewer.java
platform/diff-impl/src/com/intellij/diff/tools/simple/SimpleDiffViewer.java
platform/diff-impl/src/com/intellij/diff/tools/simple/SimpleOnesideDiffViewer.java
platform/lang-api/src/com/intellij/execution/runners/ExecutionEnvironmentBuilder.java
platform/lang-impl/gen/com/intellij/codeInsight/template/impl/_MacroLexer.java
platform/lang-impl/gen/com/intellij/codeInsight/template/impl/_TemplateTextLexer.java
platform/lang-impl/gen/com/intellij/ide/fileTemplates/impl/_FileTemplateTextLexer.java [moved from platform/lang-impl/gen/com/intellij/ide/fileTemplates/impl/FileTemplateTextLexer.java with 81% similarity]
platform/lang-impl/gen/com/intellij/psi/search/scope/packageSet/lexer/_ScopesLexer.java
platform/lang-impl/src/com/intellij/codeInsight/editorActions/EnterHandler.java
platform/lang-impl/src/com/intellij/codeInsight/editorActions/TypedHandler.java
platform/lang-impl/src/com/intellij/codeInsight/editorActions/enter/EnterHandlerDelegate.java
platform/lang-impl/src/com/intellij/codeInsight/editorActions/enter/EnterInStringLiteralHandler.java
platform/lang-impl/src/com/intellij/codeInsight/template/impl/ListTemplatesHandler.java
platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateState.java
platform/lang-impl/src/com/intellij/codeInspection/ex/GlobalInspectionContextImpl.java
platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionManagerEx.java
platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionProfileManagerImpl.java
platform/lang-impl/src/com/intellij/codeInspection/ex/LocalQuickFixWrapper.java
platform/lang-impl/src/com/intellij/codeInspection/ex/QuickFixAction.java
platform/lang-impl/src/com/intellij/diagnostic/logging/LogConsoleManagerBase.java
platform/lang-impl/src/com/intellij/find/actions/ShowUsagesTableCellRenderer.java
platform/lang-impl/src/com/intellij/find/editorHeaderActions/NextOccurrenceAction.java
platform/lang-impl/src/com/intellij/find/editorHeaderActions/PrevNextOccurrenceAction.java
platform/lang-impl/src/com/intellij/find/editorHeaderActions/PrevOccurrenceAction.java
platform/lang-impl/src/com/intellij/find/impl/FindDialog.java
platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateConfigurable.java
platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateTextLexer.flex
platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeEditorPanel.java
platform/lang-impl/src/com/intellij/lang/parser/GeneratedParserUtilBase.java
platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleFacadeImpl.java
platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/FormatterBasedLineIndentProvider.java [new file with mode: 0644]
platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/JavaLikeLangLineIndentProvider.java [new file with mode: 0644]
platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/LineIndentProvider.java [new file with mode: 0644]
platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/LineIndentProviderEP.java [new file with mode: 0644]
platform/lang-impl/src/com/intellij/psi/search/scope/packageSet/lexer/_ScopesLexer.flex
platform/lang-impl/src/com/intellij/psi/stubs/StubIndexImpl.java
platform/lang-impl/src/com/intellij/psi/stubs/StubUpdatingIndex.java
platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexImpl.java
platform/lang-impl/src/com/intellij/util/indexing/IndexInfrastructure.java
platform/platform-api/src/com/intellij/codeStyle/CodeStyleFacade.java
platform/platform-api/src/com/intellij/execution/process/CapturingProcessHandler.java
platform/platform-api/src/com/intellij/execution/process/ProcessOutput.java
platform/platform-api/src/com/intellij/openapi/diff/DiffNavigationContext.java
platform/platform-api/src/com/intellij/ui/table/JBTable.java
platform/platform-api/src/com/intellij/util/ui/AsyncProcessIcon.java
platform/platform-impl/src/com/intellij/diagnostic/LogMessage.java
platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java
platform/platform-impl/src/com/intellij/ide/IdeTooltipManager.java
platform/platform-impl/src/com/intellij/ide/MacOSApplicationProvider.java
platform/platform-impl/src/com/intellij/ide/RecentProjectsManagerBase.java
platform/platform-impl/src/com/intellij/ide/customize/CustomizeDesktopEntryStep.java
platform/platform-impl/src/com/intellij/ide/customize/CustomizeLauncherScriptStep.java
platform/platform-impl/src/com/intellij/ide/ui/laf/intellij/MacIntelliJPasswordFieldUI.java
platform/platform-impl/src/com/intellij/idea/IdeaLogger.java
platform/platform-impl/src/com/intellij/notification/EventLogConsole.java
platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java
platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/ChooseActionsDialog.java
platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/KeymapPanel.java
platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateInfo.kt
platform/platform-impl/src/com/intellij/openapi/vfs/impl/local/NativeFileWatcherImpl.java
platform/platform-impl/src/com/intellij/openapi/wm/impl/PaintersHelper.java
platform/platform-impl/src/com/intellij/ui/EditorTextField.java
platform/platform-impl/src/com/intellij/util/path.kt
platform/platform-impl/src/com/intellij/util/ui/SwingHelper.java
platform/platform-resources-en/src/messages/VcsBundle.properties
platform/platform-resources/src/META-INF/LangExtensionPoints.xml
platform/platform-resources/src/META-INF/LangExtensions.xml
platform/platform-tests/testSrc/com/intellij/application/TransactionTest.groovy
platform/platform-tests/testSrc/com/intellij/ide/updates/UpdateInfoParsingTest.kt
platform/platform-tests/testSrc/com/intellij/openapi/vfs/VfsUtilTest.java
platform/platform-tests/testSrc/com/intellij/openapi/vfs/VirtualFileListenerTest.java
platform/platform-tests/testSrc/com/intellij/util/containers/ConcurrentMapsTest.java
platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTestProxy.java
platform/util-rt/anno/com/intellij/util/annotations.xml [new file with mode: 0644]
platform/util-rt/src/com/intellij/openapi/util/io/FileUtilRt.java
platform/util-rt/util-rt.iml
platform/util/anno/com/intellij/util/annotations.xml [new file with mode: 0644]
platform/util/resources/misc/registry.properties
platform/util/src/com/intellij/execution/process/BaseOSProcessHandler.java
platform/util/src/com/intellij/openapi/diagnostic/DefaultLogger.java
platform/util/src/com/intellij/openapi/util/ShutDownTracker.java
platform/util/src/com/intellij/util/ExceptionUtil.java
platform/util/src/com/intellij/util/PathMappingSettings.java
platform/util/src/com/intellij/util/ReflectionUtil.java
platform/util/src/com/intellij/util/containers/ConcurrentRefValueHashMap.java
platform/util/src/com/intellij/util/containers/ConcurrentRefValueIntObjectHashMap.java
platform/util/src/com/intellij/util/io/BaseOutputReader.java
platform/util/src/com/intellij/util/text/StringFactory.java
platform/util/src/com/intellij/util/ui/KeyboardLayoutUtil.java
platform/util/util.iml
platform/vcs-impl/src/com/intellij/diff/Block.java
platform/vcs-impl/src/com/intellij/openapi/vcs/actions/ContentsLines.java [deleted file]
platform/vcs-impl/src/com/intellij/openapi/vcs/actions/SelectedBlockHistoryAction.java
platform/vcs-impl/src/com/intellij/openapi/vcs/actions/ShowDiffFromAnnotation.java
platform/vcs-impl/src/com/intellij/openapi/vcs/actions/SplittingIterator.java [deleted file]
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/CallbackData.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListManagerImpl.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListWorker.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/FictiveBackgroundable.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/Waiter.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/ApplyPatchDifferentiatedDialog.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesBrowser.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesBrowserBase.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/MultipleChangeListBrowser.java
platform/vcs-impl/src/com/intellij/openapi/vcs/history/FileHistoryPanelImpl.java
platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/CachedRevisionsContents.java [deleted file]
platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/VcsSelectionHistoryDialog.java
platform/vcs-log/impl/gen/icons/VcsLogIcons.java
platform/vcs-log/impl/resources/icons/process/dots_1.png [new file with mode: 0644]
platform/vcs-log/impl/resources/icons/process/dots_1@2x.png [new file with mode: 0644]
platform/vcs-log/impl/resources/icons/process/dots_2.png [new file with mode: 0644]
platform/vcs-log/impl/resources/icons/process/dots_2@2x.png [new file with mode: 0644]
platform/vcs-log/impl/resources/icons/process/dots_3.png [new file with mode: 0644]
platform/vcs-log/impl/resources/icons/process/dots_3@2x.png [new file with mode: 0644]
platform/vcs-log/impl/resources/icons/process/dots_4.png [new file with mode: 0644]
platform/vcs-log/impl/resources/icons/process/dots_4@2x.png [new file with mode: 0644]
platform/vcs-log/impl/resources/icons/process/dots_5.png [new file with mode: 0644]
platform/vcs-log/impl/resources/icons/process/dots_5@2x.png [new file with mode: 0644]
platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogData.java
platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogFiltererImpl.java
platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogProgress.java [new file with mode: 0644]
platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogRefresherImpl.java
platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/DetailsPanel.java
platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/MainFrame.java
platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/TableWithProgress.java [new file with mode: 0644]
platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogGraphTable.java
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebugSessionImpl.java
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/META-INF/InspectionGadgets.xml
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/dataflow/TooBroadScopeInspectionBase.java
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/j2me/FieldRepeatedlyAccessedInspection.java [deleted file]
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/j2me/VariableAccessVisitor.java [deleted file]
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/JavaLangReflectInspection.java [deleted file]
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ControlFlowUtils.java
plugins/InspectionGadgets/src/com/siyeh/ig/dataflow/TooBroadScopeInspection.java
plugins/InspectionGadgets/src/com/siyeh/ig/performance/ObjectInstantiationInEqualsHashCodeInspection.java [new file with mode: 0644]
plugins/InspectionGadgets/src/inspectionDescriptions/FieldRepeatedlyAccessed.html [deleted file]
plugins/InspectionGadgets/src/inspectionDescriptions/JavaLangReflect.html [deleted file]
plugins/InspectionGadgets/src/inspectionDescriptions/ObjectInstantiationInEqualsHashCode.html [new file with mode: 0644]
plugins/InspectionGadgets/test/com/siyeh/igfixes/dataflow/too_broad_scope/Comments2.after.java [new file with mode: 0644]
plugins/InspectionGadgets/test/com/siyeh/igfixes/dataflow/too_broad_scope/Comments2.java [new file with mode: 0644]
plugins/InspectionGadgets/test/com/siyeh/igtest/j2me/field_repeatedly_accessed/FieldRepeatedlyAccessed.java [deleted file]
plugins/InspectionGadgets/test/com/siyeh/igtest/performance/JavaLangReflectInspection.java [deleted file]
plugins/InspectionGadgets/test/com/siyeh/igtest/performance/object_instantiation_in_equals_hash_code/ObjectInstantiationInEqualsHashCode.java [new file with mode: 0644]
plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/dataflow/TooBroadScopeInspectionFixTest.java
plugins/InspectionGadgets/testsrc/com/siyeh/ig/performance/ObjectInstantiationInEqualsHashCodeInspectionTest.java [moved from plugins/InspectionGadgets/testsrc/com/siyeh/ig/j2me/FieldRepeatedlyAccessedInspectionTest.java with 77% similarity]
plugins/git4idea/src/git4idea/actions/GitAction.java
plugins/git4idea/src/git4idea/actions/GitMergeAction.java
plugins/git4idea/src/git4idea/actions/GitResolveConflictsAction.java
plugins/git4idea/src/git4idea/branch/GitBranchOperation.java
plugins/git4idea/src/git4idea/branch/GitBranchUiHandlerImpl.java
plugins/git4idea/src/git4idea/branch/GitBranchUtil.java
plugins/git4idea/src/git4idea/branch/GitRenameBranchOperation.java
plugins/git4idea/src/git4idea/commands/Git.java
plugins/git4idea/src/git4idea/commands/GitHttpGuiAuthenticator.java
plugins/git4idea/src/git4idea/crlf/GitCrlfDialog.java
plugins/git4idea/src/git4idea/history/GitHistoryProvider.java
plugins/git4idea/src/git4idea/push/GitOutgoingCommitsProvider.java
plugins/git4idea/src/git4idea/push/GitPushOperation.java
plugins/git4idea/src/git4idea/push/GitPushTarget.java
plugins/git4idea/src/git4idea/repo/GitRemote.java
plugins/git4idea/src/git4idea/stash/GitChangesSaver.java
plugins/git4idea/src/git4idea/status/GitChangesCollector.java
plugins/git4idea/src/git4idea/ui/GitCommitListPanel.java
plugins/git4idea/src/git4idea/update/GitFetcher.java
plugins/git4idea/src/git4idea/update/GitSkippedCommits.java
plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/builder/ScalaModelBuilderImpl.groovy
plugins/groovy/groovy-psi/gen/org/jetbrains/plugins/groovy/lang/groovydoc/lexer/_GroovyDocLexer.java
plugins/groovy/groovy-psi/gen/org/jetbrains/plugins/groovy/lang/lexer/_GroovyLexer.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/builder/StreamingJsonBuilderContributor.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/builder/StreamingJsonBuilderDelegateContributor.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/groovydoc/lexer/gdoc.flex
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/lexer/groovy.skeleton
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/GroovyFileBase.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyFileBaseImpl.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/GrVariableImpl.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/typedef/GrTypeDefinitionImpl.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/typedef/GrTypeDefinitionMembersCache.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/typedef/code/BodyCodeMembersProvider.kt [new file with mode: 0644]
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/typedef/code/FileCodeMembersProvider.kt [new file with mode: 0644]
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/typedef/code/GrCodeMembersProvider.kt [new file with mode: 0644]
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrAccessorMethodImpl.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrLightTypeDefinitionBase.java [new file with mode: 0644]
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrLightTypeParameterList.java [new file with mode: 0644]
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrScriptField.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GroovyScriptClass.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/util/GrClassImplUtil.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/transformations/TransformationContext.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/transformations/TransformationContextImpl.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/transformations/impl/BaseScriptTransformationSupport.java [new file with mode: 0644]
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/transformations/impl/FieldScriptTransformationSupport.java [new file with mode: 0644]
plugins/groovy/src/META-INF/plugin.xml
plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/Groovy23HighlightingTest.groovy
plugins/hg4idea/src/org/zmlx/hg4idea/command/HgBookmarkCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/provider/HgDiffProvider.java
plugins/hg4idea/src/org/zmlx/hg4idea/provider/HgHistoryProvider.java
plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXRenameTest.java
plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxControllerFieldSearcher.java
plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxScopeEnlarger.java
plugins/javaFX/src/org/jetbrains/plugins/javaFX/indexing/JavaFxControllerClassIndex.java
plugins/javaFX/src/org/jetbrains/plugins/javaFX/sceneBuilder/SceneBuilderImpl.java
plugins/javaFX/testData/rename/PrivateSuperHandler.java [new file with mode: 0644]
plugins/javaFX/testData/rename/PrivateSuperHandlerBase.java [new file with mode: 0644]
plugins/javaFX/testData/rename/privateSuperHandler.fxml [new file with mode: 0644]
plugins/javaFX/testData/rename/privateSuperHandler_after.fxml [new file with mode: 0644]
plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/AbstractJavaFXRenameTest.java [new file with mode: 0644]
plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/AbstractJavaFXTestCase.java
plugins/junit/test/com/intellij/execution/junit/JUnitClasspathTest.java
plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java
plugins/properties/properties-psi-api/gen/com/intellij/lang/properties/parsing/_PropertiesLexer.java
plugins/settings-repository/resources/messages/IcsBundle.properties
plugins/settings-repository/src/RepositoryService.kt
plugins/settings-repository/src/settings/readOnlySourcesEditor.kt
plugins/settings-repository/src/settings/upstreamEditor.kt
plugins/tasks/tasks-core/jira/gen/com/intellij/tasks/jira/jql/_JqlLexer.java
plugins/testng_rt/src/org/testng/RemoteTestNGStarter.java
plugins/xpath/xpath-lang/gen/org/intellij/lang/xpath/_XPathLexer.java [new file with mode: 0644]
plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/_XPathLexer.java [deleted file]
plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xpath-lexer.flex
plugins/xpath/xpath.iml
plugins/yaml/gen/org/jetbrains/yaml/lexer/_YAMLLexer.java
python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/CCStudyActionListener.java
python/educational-python/build.gradle
python/educational-python/gradle.properties
python/educational-python/resources/fileTemplates/internal/test_helper.py.ft
python/gen/com/jetbrains/python/buildout/config/lexer/_BuildoutCfgFlexLexer.java
python/gen/com/jetbrains/python/lexer/_PythonLexer.java
python/gen/com/jetbrains/python/psi/types/_PyTypeLexer.java [moved from python/gen/com/jetbrains/python/psi/types/PyTypeLexer.java with 80% similarity]
python/helpers/pycharm/lettuce_runner.py
python/helpers/pydev/_pydev_bundle/pydev_console_utils.py
python/helpers/pydev/_pydevd_bundle/pydevd_frame.py
python/helpers/pydev/_pydevd_bundle/pydevd_save_locals.py
python/helpers/pydev/_pydevd_bundle/pydevd_vars.py
python/helpers/pydev/pydevconsole.py
python/helpers/pydev/pydevd.py
python/helpers/pydev/pydevd_plugins/django_debug.py
python/helpers/python-skeletons/lettuce/terrain.py
python/rest/gen/com/jetbrains/rest/lexer/_RestFlexLexer.java
python/setup-test-environment/build.gradle
python/src/com/jetbrains/python/console/PyConsoleDebugProcess.java
python/src/com/jetbrains/python/console/PydevConsoleCommunication.java
python/src/com/jetbrains/python/debugger/PyDebugRunner.java
python/src/com/jetbrains/python/lexer/Python.flex
python/src/com/jetbrains/python/psi/types/PyType.flex
python/src/com/jetbrains/python/psi/types/PyTypeParser.java
spellchecker/src/com/intellij/spellchecker/quickfixes/AcceptWordAsCorrect.java
tools/lexer/CHANGES [new file with mode: 0644]
tools/lexer/COPYRIGHT [new file with mode: 0644]
tools/lexer/idea-flex.skeleton
tools/lexer/jflex-1.4/.classpath [deleted file]
tools/lexer/jflex-1.4/.project [deleted file]
tools/lexer/jflex-1.4/COPYRIGHT [deleted file]
tools/lexer/jflex-1.4/JFlex-Changes.txt [deleted file]
tools/lexer/jflex-1.4/bin/jflex [deleted file]
tools/lexer/jflex-1.4/bin/jflex.bat [deleted file]
tools/lexer/jflex-1.4/doc/COPYRIGHT [deleted file]
tools/lexer/jflex-1.4/doc/crossref.png [deleted file]
tools/lexer/jflex-1.4/doc/footnote.png [deleted file]
tools/lexer/jflex-1.4/doc/jflex_anttask.html [deleted file]
tools/lexer/jflex-1.4/doc/logo.gif [deleted file]
tools/lexer/jflex-1.4/doc/manual.css [deleted file]
tools/lexer/jflex-1.4/doc/manual.html [deleted file]
tools/lexer/jflex-1.4/doc/manual.pdf [deleted file]
tools/lexer/jflex-1.4/doc/manual.ps.gz [deleted file]
tools/lexer/jflex-1.4/examples/binary/Makefile [deleted file]
tools/lexer/jflex-1.4/examples/binary/README [deleted file]
tools/lexer/jflex-1.4/examples/binary/StraightStreamReader.java [deleted file]
tools/lexer/jflex-1.4/examples/binary/binary.flex [deleted file]
tools/lexer/jflex-1.4/examples/byaccj/Makefile [deleted file]
tools/lexer/jflex-1.4/examples/byaccj/README [deleted file]
tools/lexer/jflex-1.4/examples/byaccj/calc.flex [deleted file]
tools/lexer/jflex-1.4/examples/byaccj/calc.y [deleted file]
tools/lexer/jflex-1.4/examples/cup/Main.java [deleted file]
tools/lexer/jflex-1.4/examples/cup/Makefile [deleted file]
tools/lexer/jflex-1.4/examples/cup/README [deleted file]
tools/lexer/jflex-1.4/examples/cup/lcalc.flex [deleted file]
tools/lexer/jflex-1.4/examples/cup/output.good [deleted file]
tools/lexer/jflex-1.4/examples/cup/test.txt [deleted file]
tools/lexer/jflex-1.4/examples/cup/ycalc.cup [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/AST.java [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/Main.java [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/Makefile [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/README [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/STEfun.java [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/STEvar.java [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/SymTab.java [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/SymtabEntry.java [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/Tboolexp.java [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/Tdekl.java [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/Tdekllist.java [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/Texp.java [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/Texpinfix.java [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/Texplist.java [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/Tfun.java [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/Tident.java [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/Tifthenelse.java [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/Tnumber.java [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/Tparlist.java [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/Tprogram.java [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/Tuminus.java [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/build.xml [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/example.as [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/parser.cup [deleted file]
tools/lexer/jflex-1.4/examples/interpreter/scanner.flex [deleted file]
tools/lexer/jflex-1.4/examples/java/JavaParser.java [deleted file]
tools/lexer/jflex-1.4/examples/java/JavaSymbol.java [deleted file]
tools/lexer/jflex-1.4/examples/java/Makefile [deleted file]
tools/lexer/jflex-1.4/examples/java/README [deleted file]
tools/lexer/jflex-1.4/examples/java/TestLexer.java [deleted file]
tools/lexer/jflex-1.4/examples/java/java.flex [deleted file]
tools/lexer/jflex-1.4/examples/java/java12.cup [deleted file]
tools/lexer/jflex-1.4/examples/java/lexer-output.good [deleted file]
tools/lexer/jflex-1.4/examples/java/unicode.flex [deleted file]
tools/lexer/jflex-1.4/examples/simple/Makefile [deleted file]
tools/lexer/jflex-1.4/examples/simple/README [deleted file]
tools/lexer/jflex-1.4/examples/simple/Utility.java [deleted file]
tools/lexer/jflex-1.4/examples/simple/Yytoken.java [deleted file]
tools/lexer/jflex-1.4/examples/simple/output.good [deleted file]
tools/lexer/jflex-1.4/examples/simple/simple.flex [deleted file]
tools/lexer/jflex-1.4/examples/simple/test.txt [deleted file]
tools/lexer/jflex-1.4/examples/standalone/Makefile [deleted file]
tools/lexer/jflex-1.4/examples/standalone/README [deleted file]
tools/lexer/jflex-1.4/examples/standalone/build.xml [deleted file]
tools/lexer/jflex-1.4/examples/standalone/sample.inp [deleted file]
tools/lexer/jflex-1.4/examples/standalone/standalone.flex [deleted file]
tools/lexer/jflex-1.4/jflex-1.4.3-unicode-character-category.patch [deleted file]
tools/lexer/jflex-1.4/lib/JFlex.jar [deleted file]
tools/lexer/jflex-1.4/lib/jflex-mode.el [deleted file]
tools/lexer/jflex-1.4/lib/jflex.vim [deleted file]
tools/lexer/jflex-1.4/src/JFlex/Action.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/CharClassException.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/CharClassInterval.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/CharClasses.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/CharSet.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/CharSetEnumerator.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/CountEmitter.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/DFA.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/EOFActions.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/Emitter.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/ErrorMessages.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/GeneratorException.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/HiLowEmitter.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/IntCharSet.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/IntPair.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/Interval.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/LexParse.cup [deleted file]
tools/lexer/jflex-1.4/src/JFlex/LexParse.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/LexScan.flex [deleted file]
tools/lexer/jflex-1.4/src/JFlex/LexScan.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/LexicalStates.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/MacroException.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/Macros.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/Main.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/Messages.properties [deleted file]
tools/lexer/jflex-1.4/src/JFlex/NFA.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/Options.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/Out.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/PackEmitter.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/RegExp.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/RegExp1.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/RegExp2.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/RegExps.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/ScannerException.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/SemCheck.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/SilentExit.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/Skeleton.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/StatePairList.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/StateSet.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/StateSetEnumerator.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/StdOutWriter.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/Timer.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/anttask/JFlexTask.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/gui/GeneratorThread.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/gui/GridPanel.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/gui/GridPanelConstraint.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/gui/Handles.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/gui/MainFrame.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/gui/OptionsDialog.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/skeleton.default [deleted file]
tools/lexer/jflex-1.4/src/JFlex/sym.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/tests/AllTests.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/tests/AntTaskTests.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/tests/CharClassesTest.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/tests/EmitterTest.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/tests/PackEmitterTest.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/tests/RegExpTests.java [deleted file]
tools/lexer/jflex-1.4/src/JFlex/tests/SkeletonTest.java [deleted file]
tools/lexer/jflex-1.4/src/README [deleted file]
tools/lexer/jflex-1.4/src/build.xml [deleted file]
tools/lexer/jflex-1.4/src/changelog [deleted file]
tools/lexer/jflex-1.4/src/java_cup/runtime/ComplexSymbolFactory.java [deleted file]
tools/lexer/jflex-1.4/src/java_cup/runtime/DefaultSymbolFactory.java [deleted file]
tools/lexer/jflex-1.4/src/java_cup/runtime/Scanner.java [deleted file]
tools/lexer/jflex-1.4/src/java_cup/runtime/Symbol.java [deleted file]
tools/lexer/jflex-1.4/src/java_cup/runtime/SymbolFactory.java [deleted file]
tools/lexer/jflex-1.4/src/java_cup/runtime/lr_parser.java [deleted file]
tools/lexer/jflex-1.4/src/java_cup/runtime/virtual_parse_stack.java [deleted file]
tools/lexer/jflex-1.4/src/manifest [deleted file]
tools/lexer/jflex-1.4/src/skeleton.default [deleted file]
tools/lexer/jflex-1.4/src/skeleton.nested [deleted file]
tools/lexer/jflex-1.7.0-SNAPSHOT.jar [new file with mode: 0644]
updater/testSrc/com/intellij/updater/DigesterTest.java
updater/testSrc/com/intellij/updater/PatchTest.java
updater/testSrc/com/intellij/updater/PatchTestCase.java
updater/testSrc/com/intellij/updater/UpdaterTestCase.java
updater/updater.iml
xml/xml-psi-impl/gen/com/intellij/lexer/_DtdLexer.java
xml/xml-psi-impl/gen/com/intellij/lexer/_HtmlLexer.java
xml/xml-psi-impl/gen/com/intellij/lexer/__XmlLexer.java

index 72796ffe3c304a916de1d6843dce5f7c55bf08d7..9723acb37a33e88309554e9e52d6a9f1ce486295 100644 (file)
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.4.3 on 11/1/14 12:37 PM */
+/* The following code was generated by JFlex 1.7.0-SNAPSHOT tweaked for IntelliJ platform */
 
 /* It's an automatically generated code. Do not modify it. */
 package org.intellij.lang.regexp;
@@ -14,29 +14,32 @@ import java.util.EnumSet;
 
 /**
  * This class is a scanner generated by 
- * <a href="http://www.jflex.de/">JFlex</a> 1.4.3
- * on 11/1/14 12:37 PM from the specification file
- * <tt>/Users/bas/Projects/IntelliJ IDEA Ultimate/tools/lexer/../../community/RegExpSupport/src/org/intellij/lang/regexp/regexp-lexer.flex</tt>
+ * <a href="http://www.jflex.de/">JFlex</a> 1.7.0-SNAPSHOT
+ * from the specification file <tt>regexp-lexer.flex</tt>
  */
 class _RegExLexer implements FlexLexer {
+
+  /** This character denotes the end of file */
+  public static final int YYEOF = -1;
+
   /** initial size of the lookahead buffer */
   private static final int ZZ_BUFFERSIZE = 16384;
 
   /** lexical states */
+  public static final int YYINITIAL = 0;
+  public static final int QUOTED = 2;
   public static final int EMBRACED = 4;
+  public static final int CLASS1 = 6;
   public static final int NEGATE_CLASS1 = 8;
-  public static final int PY_NAMED_GROUP_REF = 22;
-  public static final int QUOTED = 2;
-  public static final int OPTIONS = 14;
-  public static final int BRACKET_EXPRESSION = 26;
-  public static final int PY_COND_REF = 24;
-  public static final int YYINITIAL = 0;
-  public static final int NAMED_GROUP = 18;
   public static final int CLASS2 = 10;
-  public static final int CLASS1 = 6;
+  public static final int PROP = 12;
+  public static final int OPTIONS = 14;
   public static final int COMMENT = 16;
+  public static final int NAMED_GROUP = 18;
   public static final int QUOTED_NAMED_GROUP = 20;
-  public static final int PROP = 12;
+  public static final int PY_NAMED_GROUP_REF = 22;
+  public static final int PY_COND_REF = 24;
+  public static final int BRACKET_EXPRESSION = 26;
 
   /**
    * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
@@ -53,74 +56,135 @@ class _RegExLexer implements FlexLexer {
    * Translates characters to character classes
    */
   private static final String ZZ_CMAP_PACKED = 
-    "\10\0\2\62\1\16\1\0\1\62\1\67\22\0\1\55\1\65\1\0"+
-    "\1\66\1\20\1\0\1\61\1\54\1\4\1\5\1\22\1\23\1\57"+
-    "\1\50\1\3\1\0\1\2\7\47\2\1\1\60\1\0\1\53\1\64"+
-    "\1\63\1\21\1\0\1\27\1\27\1\35\1\34\1\44\1\42\1\30"+
-    "\1\51\1\37\2\13\1\56\1\56\1\56\1\13\1\41\1\43\1\13"+
-    "\1\33\2\13\1\32\1\32\1\32\1\13\1\31\1\10\1\12\1\11"+
-    "\1\17\1\14\1\0\1\26\1\27\1\36\1\34\1\26\1\26\1\13"+
-    "\1\51\1\37\1\13\1\52\2\13\1\25\1\13\1\40\1\13\1\25"+
-    "\1\32\1\25\1\46\1\32\1\32\1\45\1\13\1\30\1\6\1\24"+
-    "\1\7\54\0\1\13\12\0\1\13\4\0\1\13\5\0\27\13\1\0"+
-    "\37\13\1\0\u013f\13\31\0\162\13\4\0\14\13\16\0\5\13\11\0"+
-    "\1\13\213\0\1\13\13\0\1\13\1\0\3\13\1\0\1\13\1\0"+
-    "\24\13\1\0\54\13\1\0\46\13\1\0\5\13\4\0\202\13\10\0"+
-    "\105\13\1\0\46\13\2\0\2\13\6\0\20\13\41\0\46\13\2\0"+
-    "\1\13\7\0\47\13\110\0\33\13\5\0\3\13\56\0\32\13\5\0"+
-    "\13\13\25\0\12\15\4\0\2\13\1\0\143\13\1\0\1\13\17\0"+
-    "\2\13\7\0\2\13\12\15\3\13\2\0\1\13\20\0\1\13\1\0"+
-    "\36\13\35\0\3\13\60\0\46\13\13\0\1\13\u0152\0\66\13\3\0"+
-    "\1\13\22\0\1\13\7\0\12\13\4\0\12\15\25\0\10\13\2\0"+
-    "\2\13\2\0\26\13\1\0\7\13\1\0\1\13\3\0\4\13\3\0"+
-    "\1\13\36\0\2\13\1\0\3\13\4\0\12\15\2\13\23\0\6\13"+
-    "\4\0\2\13\2\0\26\13\1\0\7\13\1\0\2\13\1\0\2\13"+
-    "\1\0\2\13\37\0\4\13\1\0\1\13\7\0\12\15\2\0\3\13"+
-    "\20\0\11\13\1\0\3\13\1\0\26\13\1\0\7\13\1\0\2\13"+
-    "\1\0\5\13\3\0\1\13\22\0\1\13\17\0\2\13\4\0\12\15"+
-    "\25\0\10\13\2\0\2\13\2\0\26\13\1\0\7\13\1\0\2\13"+
-    "\1\0\5\13\3\0\1\13\36\0\2\13\1\0\3\13\4\0\12\15"+
-    "\1\0\1\13\21\0\1\13\1\0\6\13\3\0\3\13\1\0\4\13"+
-    "\3\0\2\13\1\0\1\13\1\0\2\13\3\0\2\13\3\0\3\13"+
-    "\3\0\10\13\1\0\3\13\55\0\11\15\25\0\10\13\1\0\3\13"+
-    "\1\0\27\13\1\0\12\13\1\0\5\13\46\0\2\13\4\0\12\15"+
-    "\25\0\10\13\1\0\3\13\1\0\27\13\1\0\12\13\1\0\5\13"+
-    "\3\0\1\13\40\0\1\13\1\0\2\13\4\0\12\15\25\0\10\13"+
-    "\1\0\3\13\1\0\27\13\1\0\20\13\46\0\2\13\4\0\12\15"+
-    "\25\0\22\13\3\0\30\13\1\0\11\13\1\0\1\13\2\0\7\13"+
-    "\72\0\60\13\1\0\2\13\14\0\7\13\11\0\12\15\47\0\2\13"+
-    "\1\0\1\13\2\0\2\13\1\0\1\13\2\0\1\13\6\0\4\13"+
-    "\1\0\7\13\1\0\3\13\1\0\1\13\1\0\1\13\2\0\2\13"+
-    "\1\0\4\13\1\0\2\13\11\0\1\13\2\0\5\13\1\0\1\13"+
-    "\11\0\12\15\2\0\2\13\42\0\1\13\37\0\12\15\26\0\10\13"+
-    "\1\0\42\13\35\0\4\13\164\0\42\13\1\0\5\13\1\0\2\13"+
-    "\25\0\12\15\6\0\6\13\112\0\46\13\12\0\51\13\7\0\132\13"+
-    "\5\0\104\13\5\0\122\13\6\0\7\13\1\0\77\13\1\0\1\13"+
-    "\1\0\4\13\2\0\7\13\1\0\1\13\1\0\4\13\2\0\47\13"+
-    "\1\0\1\13\1\0\4\13\2\0\37\13\1\0\1\13\1\0\4\13"+
-    "\2\0\7\13\1\0\1\13\1\0\4\13\2\0\7\13\1\0\7\13"+
-    "\1\0\27\13\1\0\37\13\1\0\1\13\1\0\4\13\2\0\7\13"+
-    "\1\0\47\13\1\0\23\13\16\0\11\15\56\0\125\13\14\0\u026c\13"+
-    "\2\0\10\13\12\0\32\13\5\0\113\13\25\0\15\13\1\0\4\13"+
-    "\16\0\22\13\16\0\22\13\16\0\15\13\1\0\3\13\17\0\64\13"+
-    "\43\0\1\13\4\0\1\13\3\0\12\15\46\0\12\15\6\0\130\13"+
-    "\10\0\51\13\127\0\35\13\51\0\12\15\36\13\2\0\5\13\u038b\0"+
-    "\154\13\224\0\234\13\4\0\132\13\6\0\26\13\2\0\6\13\2\0"+
-    "\46\13\2\0\6\13\2\0\10\13\1\0\1\13\1\0\1\13\1\0"+
-    "\1\13\1\0\37\13\2\0\65\13\1\0\7\13\1\0\1\13\3\0"+
-    "\3\13\1\0\7\13\3\0\4\13\2\0\6\13\4\0\15\13\5\0"+
-    "\3\13\1\0\7\13\164\0\1\13\15\0\1\13\202\0\1\13\4\0"+
-    "\1\13\2\0\12\13\1\0\1\13\3\0\5\13\6\0\1\13\1\0"+
-    "\1\13\1\0\1\13\1\0\4\13\1\0\3\13\1\0\7\13\3\0"+
-    "\3\13\5\0\5\13\u0ebb\0\2\13\52\0\5\13\5\0\2\13\4\0"+
-    "\126\13\6\0\3\13\1\0\132\13\1\0\4\13\5\0\50\13\4\0"+
-    "\136\13\21\0\30\13\70\0\20\13\u0200\0\u19b6\13\112\0\u51a6\13\132\0"+
-    "\u048d\13\u0773\0\u2ba4\13\u215c\0\u012e\13\2\0\73\13\225\0\7\13\14\0"+
-    "\5\13\5\0\1\13\1\0\12\13\1\0\15\13\1\0\5\13\1\0"+
-    "\1\13\1\0\2\13\1\0\2\13\1\0\154\13\41\0\u016b\13\22\0"+
-    "\100\13\2\0\66\13\50\0\14\13\164\0\5\13\1\0\207\13\23\0"+
-    "\12\15\7\0\32\13\6\0\32\13\13\0\131\13\3\0\6\13\2\0"+
-    "\6\13\2\0\6\13\2\0\3\13\43\0";
+    "\10\0\2\65\1\16\1\20\1\21\1\17\22\0\1\60\1\70\1\0"+
+    "\1\71\1\23\1\0\1\64\1\57\1\4\1\5\1\25\1\26\1\62"+
+    "\1\53\1\3\1\0\1\2\7\52\2\1\1\63\1\0\1\56\1\67"+
+    "\1\66\1\24\1\0\1\32\1\32\1\40\1\37\1\47\1\45\1\33"+
+    "\1\54\1\42\2\13\1\61\1\61\1\61\1\13\1\44\1\46\1\13"+
+    "\1\36\2\13\1\35\1\35\1\35\1\13\1\34\1\10\1\12\1\11"+
+    "\1\22\1\14\1\0\1\31\1\32\1\41\1\37\1\31\1\31\1\13"+
+    "\1\54\1\42\1\13\1\55\2\13\1\30\1\13\1\43\1\13\1\30"+
+    "\1\35\1\30\1\51\1\35\1\35\1\50\1\13\1\33\1\6\1\27"+
+    "\1\7\7\0\1\20\44\0\1\13\12\0\1\13\4\0\1\13\5\0"+
+    "\27\13\1\0\37\13\1\0\u01ca\13\4\0\14\13\16\0\5\13\7\0"+
+    "\1\13\1\0\1\13\201\0\5\13\1\0\2\13\2\0\4\13\1\0"+
+    "\1\13\6\0\1\13\1\0\3\13\1\0\1\13\1\0\24\13\1\0"+
+    "\123\13\1\0\213\13\10\0\246\13\1\0\46\13\2\0\1\13\7\0"+
+    "\47\13\110\0\33\13\5\0\3\13\55\0\53\13\25\0\12\15\4\0"+
+    "\2\13\1\0\143\13\1\0\1\13\17\0\2\13\7\0\2\13\12\15"+
+    "\3\13\2\0\1\13\20\0\1\13\1\0\36\13\35\0\131\13\13\0"+
+    "\1\13\16\0\12\15\41\13\11\0\2\13\4\0\1\13\5\0\26\13"+
+    "\4\0\1\13\11\0\1\13\3\0\1\13\27\0\31\13\107\0\25\13"+
+    "\117\0\66\13\3\0\1\13\22\0\1\13\7\0\12\13\4\0\12\15"+
+    "\1\0\20\13\4\0\10\13\2\0\2\13\2\0\26\13\1\0\7\13"+
+    "\1\0\1\13\3\0\4\13\3\0\1\13\20\0\1\13\15\0\2\13"+
+    "\1\0\3\13\4\0\12\15\2\13\23\0\6\13\4\0\2\13\2\0"+
+    "\26\13\1\0\7\13\1\0\2\13\1\0\2\13\1\0\2\13\37\0"+
+    "\4\13\1\0\1\13\7\0\12\15\2\0\3\13\20\0\11\13\1\0"+
+    "\3\13\1\0\26\13\1\0\7\13\1\0\2\13\1\0\5\13\3\0"+
+    "\1\13\22\0\1\13\17\0\2\13\4\0\12\15\11\0\1\13\13\0"+
+    "\10\13\2\0\2\13\2\0\26\13\1\0\7\13\1\0\2\13\1\0"+
+    "\5\13\3\0\1\13\36\0\2\13\1\0\3\13\4\0\12\15\1\0"+
+    "\1\13\21\0\1\13\1\0\6\13\3\0\3\13\1\0\4\13\3\0"+
+    "\2\13\1\0\1\13\1\0\2\13\3\0\2\13\3\0\3\13\3\0"+
+    "\14\13\26\0\1\13\25\0\12\15\25\0\10\13\1\0\3\13\1\0"+
+    "\27\13\1\0\20\13\3\0\1\13\32\0\3\13\5\0\2\13\4\0"+
+    "\12\15\25\0\10\13\1\0\3\13\1\0\27\13\1\0\12\13\1\0"+
+    "\5\13\3\0\1\13\40\0\1\13\1\0\2\13\4\0\12\15\1\0"+
+    "\2\13\22\0\10\13\1\0\3\13\1\0\51\13\2\0\1\13\20\0"+
+    "\1\13\20\0\3\13\4\0\12\15\12\0\6\13\5\0\22\13\3\0"+
+    "\30\13\1\0\11\13\1\0\1\13\2\0\7\13\37\0\12\15\21\0"+
+    "\60\13\1\0\2\13\14\0\7\13\11\0\12\15\47\0\2\13\1\0"+
+    "\1\13\2\0\2\13\1\0\1\13\2\0\1\13\6\0\4\13\1\0"+
+    "\7\13\1\0\3\13\1\0\1\13\1\0\1\13\2\0\2\13\1\0"+
+    "\4\13\1\0\2\13\11\0\1\13\2\0\5\13\1\0\1\13\11\0"+
+    "\12\15\2\0\4\13\40\0\1\13\37\0\12\15\26\0\10\13\1\0"+
+    "\44\13\33\0\5\13\163\0\53\13\24\0\1\13\12\15\6\0\6\13"+
+    "\4\0\4\13\3\0\1\13\3\0\2\13\7\0\3\13\4\0\15\13"+
+    "\14\0\1\13\1\0\12\15\6\0\46\13\1\0\1\13\5\0\1\13"+
+    "\2\0\53\13\1\0\u014d\13\1\0\4\13\2\0\7\13\1\0\1\13"+
+    "\1\0\4\13\2\0\51\13\1\0\4\13\2\0\41\13\1\0\4\13"+
+    "\2\0\7\13\1\0\1\13\1\0\4\13\2\0\17\13\1\0\71\13"+
+    "\1\0\4\13\2\0\103\13\45\0\20\13\20\0\126\13\2\0\6\13"+
+    "\3\0\u026c\13\2\0\21\13\1\0\32\13\5\0\113\13\6\0\10\13"+
+    "\7\0\15\13\1\0\4\13\16\0\22\13\16\0\22\13\16\0\15\13"+
+    "\1\0\3\13\17\0\64\13\43\0\1\13\4\0\1\13\3\0\12\15"+
+    "\46\0\12\15\6\0\130\13\10\0\51\13\1\0\1\13\5\0\106\13"+
+    "\12\0\37\13\47\0\12\15\36\13\2\0\5\13\13\0\54\13\4\0"+
+    "\32\13\6\0\12\15\46\0\27\13\11\0\65\13\53\0\12\15\6\0"+
+    "\12\15\15\0\1\13\135\0\57\13\21\0\7\13\4\0\12\15\51\0"+
+    "\36\13\15\0\2\13\12\15\54\13\32\0\44\13\34\0\12\15\3\0"+
+    "\3\13\12\15\44\13\153\0\4\13\1\0\4\13\3\0\2\13\11\0"+
+    "\300\13\100\0\u0116\13\2\0\6\13\2\0\46\13\2\0\6\13\2\0"+
+    "\10\13\1\0\1\13\1\0\1\13\1\0\1\13\1\0\37\13\2\0"+
+    "\65\13\1\0\7\13\1\0\1\13\3\0\3\13\1\0\7\13\3\0"+
+    "\4\13\2\0\6\13\4\0\15\13\5\0\3\13\1\0\7\13\53\0"+
+    "\1\20\1\20\107\0\1\13\15\0\1\13\20\0\15\13\145\0\1\13"+
+    "\4\0\1\13\2\0\12\13\1\0\1\13\3\0\5\13\6\0\1\13"+
+    "\1\0\1\13\1\0\1\13\1\0\4\13\1\0\13\13\2\0\4\13"+
+    "\5\0\5\13\4\0\1\13\64\0\2\13\u0a7b\0\57\13\1\0\57\13"+
+    "\1\0\205\13\6\0\4\13\3\0\2\13\14\0\46\13\1\0\1\13"+
+    "\5\0\1\13\2\0\70\13\7\0\1\13\20\0\27\13\11\0\7\13"+
+    "\1\0\7\13\1\0\7\13\1\0\7\13\1\0\7\13\1\0\7\13"+
+    "\1\0\7\13\1\0\7\13\120\0\1\13\u01d5\0\2\13\52\0\5\13"+
+    "\5\0\2\13\4\0\126\13\6\0\3\13\1\0\132\13\1\0\4\13"+
+    "\5\0\51\13\3\0\136\13\21\0\33\13\65\0\20\13\u0200\0\u19b6\13"+
+    "\112\0\u51d6\13\52\0\u048d\13\103\0\56\13\2\0\u010d\13\3\0\20\13"+
+    "\12\15\2\13\24\0\57\13\20\0\37\13\2\0\106\13\61\0\11\13"+
+    "\2\0\147\13\2\0\43\13\2\0\10\13\77\0\13\13\1\0\3\13"+
+    "\1\0\4\13\1\0\27\13\35\0\64\13\16\0\62\13\34\0\12\15"+
+    "\30\0\6\13\3\0\1\13\1\0\1\13\2\0\12\15\34\13\12\0"+
+    "\27\13\31\0\35\13\7\0\57\13\34\0\1\13\12\15\6\0\5\13"+
+    "\1\0\12\13\12\15\5\13\1\0\51\13\27\0\3\13\1\0\10\13"+
+    "\4\0\12\15\6\0\27\13\3\0\1\13\3\0\62\13\1\0\1\13"+
+    "\3\0\2\13\2\0\5\13\2\0\1\13\1\0\1\13\30\0\3\13"+
+    "\2\0\13\13\7\0\3\13\14\0\6\13\2\0\6\13\2\0\6\13"+
+    "\11\0\7\13\1\0\7\13\1\0\53\13\1\0\12\13\12\0\163\13"+
+    "\15\0\12\15\6\0\u2ba4\13\14\0\27\13\4\0\61\13\u2104\0\u016e\13"+
+    "\2\0\152\13\46\0\7\13\14\0\5\13\5\0\1\13\1\0\12\13"+
+    "\1\0\15\13\1\0\5\13\1\0\1\13\1\0\2\13\1\0\2\13"+
+    "\1\0\154\13\41\0\u016b\13\22\0\100\13\2\0\66\13\50\0\14\13"+
+    "\164\0\5\13\1\0\207\13\23\0\12\15\7\0\32\13\6\0\32\13"+
+    "\13\0\131\13\3\0\6\13\2\0\6\13\2\0\6\13\2\0\3\13"+
+    "\43\0\14\13\1\0\32\13\1\0\23\13\1\0\2\13\1\0\17\13"+
+    "\2\0\16\13\42\0\173\13\u0185\0\35\13\3\0\61\13\57\0\40\13"+
+    "\20\0\21\13\1\0\10\13\6\0\46\13\12\0\36\13\2\0\44\13"+
+    "\4\0\10\13\60\0\236\13\2\0\12\15\126\0\50\13\10\0\64\13"+
+    "\234\0\u0137\13\11\0\26\13\12\0\10\13\230\0\6\13\2\0\1\13"+
+    "\1\0\54\13\1\0\2\13\3\0\1\13\2\0\27\13\12\0\27\13"+
+    "\11\0\37\13\101\0\23\13\1\0\2\13\12\0\26\13\12\0\32\13"+
+    "\106\0\70\13\6\0\2\13\100\0\1\13\17\0\4\13\1\0\3\13"+
+    "\1\0\33\13\54\0\35\13\3\0\35\13\43\0\10\13\1\0\34\13"+
+    "\33\0\66\13\12\0\26\13\12\0\23\13\15\0\22\13\156\0\111\13"+
+    "\67\0\63\13\15\0\63\13\u0310\0\65\13\56\0\12\15\23\0\55\13"+
+    "\40\0\31\13\7\0\12\15\11\0\44\13\17\0\12\15\20\0\43\13"+
+    "\3\0\1\13\14\0\60\13\16\0\4\13\13\0\12\15\1\13\1\0"+
+    "\1\13\43\0\22\13\1\0\31\13\124\0\7\13\1\0\1\13\1\0"+
+    "\4\13\1\0\17\13\1\0\12\13\7\0\57\13\21\0\12\15\13\0"+
+    "\10\13\2\0\2\13\2\0\26\13\1\0\7\13\1\0\2\13\1\0"+
+    "\5\13\3\0\1\13\22\0\1\13\14\0\5\13\u011e\0\60\13\24\0"+
+    "\2\13\1\0\1\13\10\0\12\15\246\0\57\13\51\0\4\13\44\0"+
+    "\60\13\24\0\1\13\13\0\12\15\46\0\53\13\25\0\12\15\66\0"+
+    "\32\13\26\0\12\15\u0166\0\100\13\12\15\25\0\1\13\u01c0\0\71\13"+
+    "\u0507\0\u039a\13\346\0\304\13\u0abc\0\u042f\13\u0fd1\0\u0247\13\u21b9\0\u0239\13"+
+    "\7\0\37\13\1\0\12\15\146\0\36\13\22\0\60\13\20\0\4\13"+
+    "\14\0\12\15\11\0\25\13\5\0\23\13\u0370\0\105\13\13\0\1\13"+
+    "\102\0\15\13\u4060\0\2\13\u0bfe\0\153\13\5\0\15\13\3\0\11\13"+
+    "\7\0\12\13\u1766\0\125\13\1\0\107\13\1\0\2\13\2\0\1\13"+
+    "\2\0\2\13\2\0\4\13\1\0\14\13\1\0\1\13\1\0\7\13"+
+    "\1\0\101\13\1\0\4\13\2\0\10\13\1\0\7\13\1\0\34\13"+
+    "\1\0\4\13\1\0\5\13\1\0\1\13\3\0\7\13\1\0\u0154\13"+
+    "\2\0\31\13\1\0\31\13\1\0\37\13\1\0\31\13\1\0\37\13"+
+    "\1\0\31\13\1\0\37\13\1\0\31\13\1\0\37\13\1\0\31\13"+
+    "\1\0\10\13\2\0\62\15\u1000\0\305\13\u053b\0\4\13\1\0\33\13"+
+    "\1\0\2\13\1\0\1\13\2\0\1\13\1\0\12\13\1\0\4\13"+
+    "\1\0\1\13\1\0\1\13\6\0\1\13\4\0\1\13\1\0\1\13"+
+    "\1\0\1\13\1\0\3\13\1\0\2\13\1\0\1\13\2\0\1\13"+
+    "\1\0\1\13\1\0\1\13\1\0\1\13\1\0\1\13\1\0\2\13"+
+    "\1\0\1\13\2\0\4\13\1\0\7\13\1\0\4\13\1\0\4\13"+
+    "\1\0\1\13\1\0\12\13\1\0\21\13\5\0\3\13\1\0\5\13"+
+    "\1\0\21\13\u1144\0\ua6d7\13\51\0\u1035\13\13\0\336\13\2\0\u1682\13"+
+    "\u295e\0\u021e\13\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\u05f0\0";
 
   /** 
    * Translates characters to character classes
@@ -174,22 +238,22 @@ class _RegExLexer implements FlexLexer {
   private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
 
   private static final String ZZ_ROWMAP_PACKED_0 =
-    "\0\0\0\70\0\160\0\250\0\340\0\u0118\0\u0150\0\u0188"+
-    "\0\u01c0\0\u01f8\0\u0230\0\u0268\0\u02a0\0\u02d8\0\u0310\0\u0310"+
-    "\0\u0348\0\u0310\0\u0310\0\u0380\0\u03b8\0\u0310\0\u0310\0\u0310"+
-    "\0\u0310\0\u0310\0\u0310\0\u0310\0\u0310\0\u0310\0\u0310\0\u03f0"+
-    "\0\u0310\0\u0428\0\u0310\0\u0460\0\u0310\0\u0310\0\u0310\0\u0310"+
-    "\0\u0498\0\u0310\0\u04d0\0\u0310\0\u0508\0\u0310\0\u0310\0\u0380"+
-    "\0\u0310\0\u0310\0\u0310\0\u0540\0\u0578\0\u0310\0\u0310\0\u0310"+
-    "\0\u0310\0\u0310\0\u05b0\0\u05e8\0\u0310\0\u0620\0\u0310\0\u0658"+
-    "\0\u0690\0\u0310\0\u0310\0\u0310\0\u0310\0\u0310\0\u0310\0\u0310"+
-    "\0\u06c8\0\u0310\0\u0310\0\u0700\0\u0738\0\u0770\0\u0310\0\u07a8"+
-    "\0\u0310\0\u0310\0\u0310\0\u0310\0\u0310\0\u0310\0\u0310\0\u07e0"+
-    "\0\u0818\0\u0310\0\u0310\0\u0310\0\u0310\0\u0850\0\u0310\0\u0888"+
-    "\0\u0310\0\u08c0\0\u08f8\0\u0930\0\u0968\0\u0310\0\u0310\0\u0310"+
-    "\0\u0310\0\u0310\0\u0310\0\u09a0\0\u09d8\0\u0310\0\u0a10\0\u0310"+
-    "\0\u0a48\0\u0658\0\u0310\0\u0310\0\u0a80\0\u0ab8\0\u0af0\0\u0310"+
-    "\0\u0b28\0\u0b60\0\u0b98\0\u0bd0";
+    "\0\0\0\72\0\164\0\256\0\350\0\u0122\0\u015c\0\u0196"+
+    "\0\u01d0\0\u020a\0\u0244\0\u027e\0\u02b8\0\u02f2\0\u032c\0\u032c"+
+    "\0\u0366\0\u032c\0\u032c\0\u03a0\0\u03da\0\u032c\0\u032c\0\u032c"+
+    "\0\u032c\0\u032c\0\u032c\0\u032c\0\u032c\0\u032c\0\u032c\0\u0414"+
+    "\0\u032c\0\u044e\0\u032c\0\u0488\0\u032c\0\u032c\0\u032c\0\u032c"+
+    "\0\u04c2\0\u032c\0\u04fc\0\u032c\0\u0536\0\u032c\0\u032c\0\u03a0"+
+    "\0\u032c\0\u032c\0\u032c\0\u0570\0\u05aa\0\u032c\0\u032c\0\u032c"+
+    "\0\u032c\0\u032c\0\u05e4\0\u061e\0\u032c\0\u0658\0\u032c\0\u0692"+
+    "\0\u06cc\0\u032c\0\u032c\0\u032c\0\u032c\0\u032c\0\u032c\0\u032c"+
+    "\0\u0706\0\u032c\0\u032c\0\u0740\0\u077a\0\u07b4\0\u032c\0\u07ee"+
+    "\0\u032c\0\u032c\0\u032c\0\u032c\0\u032c\0\u032c\0\u032c\0\u0828"+
+    "\0\u0862\0\u032c\0\u032c\0\u032c\0\u032c\0\u089c\0\u032c\0\u08d6"+
+    "\0\u032c\0\u0910\0\u094a\0\u0984\0\u09be\0\u032c\0\u032c\0\u032c"+
+    "\0\u032c\0\u032c\0\u032c\0\u09f8\0\u0a32\0\u032c\0\u0a6c\0\u032c"+
+    "\0\u0aa6\0\u0692\0\u032c\0\u032c\0\u0ae0\0\u0b1a\0\u0b54\0\u032c"+
+    "\0\u0b8e\0\u0bc8\0\u0c02\0\u0c3c";
 
   private static int [] zzUnpackRowMap() {
     int [] result = new int[124];
@@ -216,75 +280,78 @@ class _RegExLexer implements FlexLexer {
 
   private static final String ZZ_TRANS_PACKED_0 =
     "\3\17\1\20\1\21\1\22\1\23\1\17\1\24\1\17"+
-    "\1\25\3\17\1\26\1\27\1\30\1\31\1\32\1\33"+
-    "\1\34\23\17\1\35\4\17\1\36\4\17\1\26\3\17"+
-    "\1\37\1\26\12\17\1\40\55\17\1\41\2\42\4\41"+
-    "\1\43\3\41\1\44\1\41\1\42\7\41\22\44\1\42"+
-    "\1\41\2\44\3\41\1\44\1\45\10\41\11\46\1\47"+
-    "\4\46\1\0\67\46\1\0\1\50\50\46\6\17\1\23"+
-    "\1\17\1\51\1\52\1\53\3\17\1\54\1\27\30\17"+
-    "\1\35\10\17\1\55\1\54\4\17\1\54\6\56\1\57"+
-    "\1\56\1\60\1\56\1\25\16\56\1\61\1\56\1\61"+
-    "\1\56\1\61\3\56\1\61\14\56\1\61\11\56\5\62"+
-    "\1\63\5\62\1\64\11\62\22\64\1\62\1\65\2\64"+
-    "\3\62\1\64\1\62\1\66\7\62\16\11\1\67\50\11"+
-    "\1\67\13\62\1\44\11\62\22\44\2\62\2\44\3\62"+
-    "\1\44\4\62\1\70\17\62\1\44\11\62\22\44\2\62"+
-    "\2\44\1\62\1\71\1\62\1\44\16\62\1\63\5\62"+
-    "\1\44\11\62\22\44\2\62\2\44\3\62\1\44\12\62"+
-    "\2\42\2\62\1\63\5\62\1\44\1\62\1\42\7\62"+
-    "\22\44\1\42\1\62\2\44\3\62\1\44\11\62\13\72"+
-    "\1\44\11\72\22\44\2\72\2\44\3\72\1\44\1\72"+
-    "\1\73\7\72\111\0\1\74\57\0\1\75\5\0\1\76"+
-    "\50\0\1\77\1\100\1\101\4\102\1\77\1\102\1\77"+
-    "\1\102\1\103\2\77\1\104\6\102\2\105\3\106\3\107"+
-    "\1\110\1\111\1\110\2\112\1\103\1\113\1\103\1\114"+
-    "\1\115\1\116\1\102\1\117\1\120\2\77\1\104\1\103"+
-    "\3\77\1\104\4\77\1\104\44\0\1\121\24\0\2\42"+
-    "\12\0\1\42\31\0\1\42\21\0\2\44\10\0\3\44"+
-    "\7\0\23\44\1\0\2\44\3\0\1\44\22\0\1\122"+
-    "\5\0\1\76\40\0\1\123\7\0\1\77\1\100\1\101"+
-    "\4\102\1\77\1\102\1\124\1\102\1\103\2\77\1\104"+
+    "\1\25\3\17\2\26\1\0\1\26\1\27\1\30\1\31"+
+    "\1\32\1\33\1\34\23\17\1\35\4\17\1\36\4\17"+
+    "\1\26\3\17\1\37\12\17\1\40\4\17\3\0\50\17"+
+    "\1\41\2\42\4\41\1\43\3\41\1\44\1\41\1\42"+
+    "\1\41\3\0\6\41\22\44\1\42\1\41\2\44\3\41"+
+    "\1\44\1\45\7\41\11\46\1\47\4\46\4\0\66\46"+
+    "\4\0\1\50\47\46\6\17\1\23\1\17\1\51\1\52"+
+    "\1\53\3\17\2\54\1\0\1\54\1\27\30\17\1\35"+
+    "\10\17\1\55\1\54\4\17\6\56\1\57\1\56\1\60"+
+    "\1\56\1\25\4\56\1\26\1\0\1\26\12\56\1\61"+
+    "\1\56\1\61\1\56\1\61\3\56\1\61\14\56\1\61"+
+    "\10\56\5\62\1\63\5\62\1\64\3\62\3\0\6\62"+
+    "\22\64\1\62\1\65\2\64\3\62\1\64\1\62\1\66"+
+    "\6\62\16\11\2\67\52\11\13\62\1\44\3\62\3\0"+
+    "\6\62\22\44\2\62\2\44\3\62\1\44\4\62\1\70"+
+    "\16\62\1\44\3\62\3\0\6\62\22\44\2\62\2\44"+
+    "\1\62\1\71\1\62\1\44\15\62\1\63\5\62\1\44"+
+    "\3\62\3\0\6\62\22\44\2\62\2\44\3\62\1\44"+
+    "\11\62\2\42\2\62\1\63\5\62\1\44\1\62\1\42"+
+    "\1\62\3\0\6\62\22\44\1\42\1\62\2\44\3\62"+
+    "\1\44\10\62\13\72\1\44\3\72\3\0\6\72\22\44"+
+    "\2\72\2\44\3\72\1\44\1\72\1\73\6\72\116\0"+
+    "\1\74\56\0\1\75\10\0\1\76\47\0\1\77\1\100"+
+    "\1\101\4\102\1\77\1\102\1\77\1\102\1\103\2\77"+
+    "\2\104\1\0\1\104\6\102\2\105\3\106\3\107\1\110"+
+    "\1\111\1\110\2\112\1\103\1\113\1\103\1\114\1\115"+
+    "\1\116\1\102\1\117\1\120\2\77\1\104\1\103\3\77"+
+    "\1\104\4\77\47\0\1\121\23\0\2\42\12\0\1\42"+
+    "\34\0\1\42\20\0\2\44\10\0\3\44\12\0\23\44"+
+    "\1\0\2\44\3\0\1\44\21\0\1\122\10\0\1\76"+
+    "\40\0\1\123\6\0\1\77\1\100\1\101\4\102\1\77"+
+    "\1\102\1\124\1\102\1\103\2\77\2\104\1\0\1\104"+
     "\6\102\2\105\3\106\3\107\1\110\1\111\1\110\2\112"+
     "\1\103\1\113\1\103\1\114\1\115\1\116\1\102\1\117"+
-    "\1\120\2\77\1\104\1\103\3\77\1\104\4\77\1\104"+
-    "\61\0\1\125\21\0\1\64\11\0\22\64\2\0\2\64"+
-    "\3\0\1\64\24\0\1\65\11\0\22\65\2\0\2\65"+
-    "\3\0\1\65\22\0\1\126\62\0\1\127\34\0\1\130"+
-    "\11\0\1\131\1\132\3\0\1\133\2\0\1\133\1\134"+
-    "\1\135\1\136\12\0\1\137\57\0\2\100\44\0\1\100"+
-    "\22\0\1\140\44\0\1\140\20\0\70\141\1\0\2\142"+
-    "\3\0\1\143\17\0\2\142\4\0\3\142\3\0\1\142"+
-    "\1\0\1\142\2\0\1\142\21\0\2\144\23\0\2\144"+
-    "\4\0\3\144\3\0\1\144\1\0\1\144\2\0\1\144"+
-    "\21\0\1\100\1\145\44\0\1\145\73\0\1\146\1\147"+
-    "\66\0\1\150\10\0\1\151\67\0\1\152\1\153\2\0"+
-    "\5\154\1\0\62\154\2\0\1\155\44\0\1\155\21\0"+
-    "\2\156\23\0\2\156\4\0\3\156\3\0\1\156\1\0"+
-    "\1\156\2\0\1\156\21\0\2\157\4\0\1\160\16\0"+
-    "\2\157\4\0\3\157\3\0\1\157\1\0\1\157\2\0"+
-    "\1\157\21\0\2\161\23\0\2\161\4\0\3\161\3\0"+
-    "\1\161\1\0\1\161\2\0\1\161\21\0\1\100\1\162"+
-    "\44\0\1\162\20\0\5\154\1\163\62\154\2\0\1\164"+
-    "\44\0\1\164\21\0\2\165\4\0\1\156\16\0\2\165"+
-    "\4\0\3\165\3\0\1\165\1\0\1\165\2\0\1\165"+
-    "\21\0\2\166\23\0\2\166\4\0\3\166\3\0\1\166"+
-    "\1\0\1\166\2\0\1\166\21\0\2\167\4\0\1\156"+
-    "\16\0\2\167\4\0\3\167\3\0\1\167\1\0\1\167"+
-    "\2\0\1\167\21\0\2\170\23\0\2\170\4\0\3\170"+
-    "\3\0\1\170\1\0\1\170\2\0\1\170\21\0\2\171"+
-    "\4\0\1\156\16\0\2\171\4\0\3\171\3\0\1\171"+
-    "\1\0\1\171\2\0\1\171\21\0\2\172\4\0\1\156"+
-    "\16\0\2\172\4\0\3\172\3\0\1\172\1\0\1\172"+
-    "\2\0\1\172\21\0\2\173\4\0\1\156\16\0\2\173"+
-    "\4\0\3\173\3\0\1\173\1\0\1\173\2\0\1\173"+
-    "\21\0\2\174\4\0\1\156\16\0\2\174\4\0\3\174"+
-    "\3\0\1\174\1\0\1\174\2\0\1\174\21\0\2\174"+
-    "\4\0\1\160\16\0\2\174\4\0\3\174\3\0\1\174"+
-    "\1\0\1\174\2\0\1\174\20\0";
+    "\1\120\2\77\1\104\1\103\3\77\1\104\4\77\64\0"+
+    "\1\125\20\0\1\64\14\0\22\64\2\0\2\64\3\0"+
+    "\1\64\23\0\1\65\14\0\22\65\2\0\2\65\3\0"+
+    "\1\65\21\0\1\126\64\0\1\127\37\0\1\130\11\0"+
+    "\1\131\1\132\3\0\1\133\2\0\1\133\1\134\1\135"+
+    "\1\136\11\0\1\137\61\0\2\100\47\0\1\100\21\0"+
+    "\1\140\47\0\1\140\17\0\17\141\3\0\50\141\1\0"+
+    "\2\142\3\0\1\143\22\0\2\142\4\0\3\142\3\0"+
+    "\1\142\1\0\1\142\2\0\1\142\20\0\2\144\26\0"+
+    "\2\144\4\0\3\144\3\0\1\144\1\0\1\144\2\0"+
+    "\1\144\20\0\1\100\1\145\47\0\1\145\75\0\1\146"+
+    "\1\147\70\0\1\150\10\0\1\151\71\0\1\152\1\153"+
+    "\1\0\5\154\1\0\64\154\2\0\1\155\47\0\1\155"+
+    "\20\0\2\156\26\0\2\156\4\0\3\156\3\0\1\156"+
+    "\1\0\1\156\2\0\1\156\20\0\2\157\4\0\1\160"+
+    "\21\0\2\157\4\0\3\157\3\0\1\157\1\0\1\157"+
+    "\2\0\1\157\20\0\2\161\26\0\2\161\4\0\3\161"+
+    "\3\0\1\161\1\0\1\161\2\0\1\161\20\0\1\100"+
+    "\1\162\47\0\1\162\17\0\5\154\1\163\64\154\2\0"+
+    "\1\164\47\0\1\164\20\0\2\165\4\0\1\156\21\0"+
+    "\2\165\4\0\3\165\3\0\1\165\1\0\1\165\2\0"+
+    "\1\165\20\0\2\166\26\0\2\166\4\0\3\166\3\0"+
+    "\1\166\1\0\1\166\2\0\1\166\20\0\2\167\4\0"+
+    "\1\156\21\0\2\167\4\0\3\167\3\0\1\167\1\0"+
+    "\1\167\2\0\1\167\20\0\2\170\26\0\2\170\4\0"+
+    "\3\170\3\0\1\170\1\0\1\170\2\0\1\170\20\0"+
+    "\2\171\4\0\1\156\21\0\2\171\4\0\3\171\3\0"+
+    "\1\171\1\0\1\171\2\0\1\171\20\0\2\172\4\0"+
+    "\1\156\21\0\2\172\4\0\3\172\3\0\1\172\1\0"+
+    "\1\172\2\0\1\172\20\0\2\173\4\0\1\156\21\0"+
+    "\2\173\4\0\3\173\3\0\1\173\1\0\1\173\2\0"+
+    "\1\173\20\0\2\174\4\0\1\156\21\0\2\174\4\0"+
+    "\3\174\3\0\1\174\1\0\1\174\2\0\1\174\20\0"+
+    "\2\174\4\0\1\160\21\0\2\174\4\0\3\174\3\0"+
+    "\1\174\1\0\1\174\2\0\1\174\17\0";
 
   private static int [] zzUnpackTrans() {
-    int [] result = new int[3080];
+    int [] result = new int[3190];
     int offset = 0;
     offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
     return result;
@@ -308,13 +375,10 @@ class _RegExLexer implements FlexLexer {
   private static final int ZZ_UNKNOWN_ERROR = 0;
   private static final int ZZ_NO_MATCH = 1;
   private static final int ZZ_PUSHBACK_2BIG = 2;
-  private static final char[] EMPTY_BUFFER = new char[0];
-  private static final int YYEOF = -1;
-  private static java.io.Reader zzReader = null; // Fake
 
   /* error messages for the codes above */
-  private static final String ZZ_ERROR_MSG[] = {
-    "Unkown internal scanner error",
+  private static final String[] ZZ_ERROR_MSG = {
+    "Unknown internal scanner error",
     "Error: could not match input",
     "Error: pushback value was too large"
   };
@@ -352,6 +416,9 @@ class _RegExLexer implements FlexLexer {
     return j;
   }
 
+  /** the input device */
+  private java.io.Reader zzReader;
+
   /** the current state of the DFA */
   private int zzState;
 
@@ -362,15 +429,9 @@ class _RegExLexer implements FlexLexer {
       the source of the yytext() string */
   private CharSequence zzBuffer = "";
 
-  /** this buffer may contains the current text array to be matched when it is cheap to acquire it */
-  private char[] zzBufferArray;
-
   /** the textposition at the last accepting state */
   private int zzMarkedPos;
 
-  /** the textposition at the last state to be included in yytext */
-  private int zzPushbackPos;
-
   /** the current text position in the buffer */
   private int zzCurrentPos;
 
@@ -447,20 +508,16 @@ class _RegExLexer implements FlexLexer {
     boolean commentMode = false;
 
 
-  _RegExLexer(java.io.Reader in) {
-    this.zzReader = in;
-  }
-
   /**
-   * Creates a new scanner.
-   * There is also java.io.Reader version of this constructor.
+   * Creates a new scanner
    *
-   * @param   in  the java.io.Inputstream to read input from.
+   * @param   in  the java.io.Reader to read input from.
    */
-  _RegExLexer(java.io.InputStream in) {
-    this(new java.io.InputStreamReader(in));
+  _RegExLexer(java.io.Reader in) {
+    this.zzReader = in;
   }
 
+
   /** 
    * Unpacks the compressed character translation table.
    *
@@ -468,10 +525,10 @@ class _RegExLexer implements FlexLexer {
    * @return         the unpacked character translation table
    */
   private static char [] zzUnpackCMap(String packed) {
-    char [] map = new char[0x10000];
+    char [] map = new char[0x110000];
     int i = 0;  /* index in packed string  */
     int j = 0;  /* index in unpacked array */
-    while (i < 1352) {
+    while (i < 2594) {
       int  count = packed.charAt(i++);
       char value = packed.charAt(i++);
       do map[j++] = value; while (--count > 0);
@@ -479,19 +536,17 @@ class _RegExLexer implements FlexLexer {
     return map;
   }
 
-  public final int getTokenStart(){
+  public final int getTokenStart() {
     return zzStartRead;
   }
 
-  public final int getTokenEnd(){
+  public final int getTokenEnd() {
     return getTokenStart() + yylength();
   }
 
-  public void reset(CharSequence buffer, int start, int end,int initialState){
+  public void reset(CharSequence buffer, int start, int end, int initialState) {
     zzBuffer = buffer;
-    zzBufferArray = com.intellij.util.text.CharArrayUtil.fromSequenceWithoutCopying(buffer);
     zzCurrentPos = zzMarkedPos = zzStartRead = start;
-    zzPushbackPos = 0;
     zzAtEOF  = false;
     zzAtBOL = true;
     zzEndRead = end;
@@ -548,7 +603,7 @@ class _RegExLexer implements FlexLexer {
    * @return the character at position pos
    */
   public final char yycharat(int pos) {
-    return zzBufferArray != null ? zzBufferArray[zzStartRead+pos]:zzBuffer.charAt(zzStartRead+pos);
+    return zzBuffer.charAt(zzStartRead+pos);
   }
 
 
@@ -631,7 +686,6 @@ class _RegExLexer implements FlexLexer {
     int zzMarkedPosL;
     int zzEndReadL = zzEndRead;
     CharSequence zzBufferL = zzBuffer;
-    char[] zzBufferArrayL = zzBufferArray;
     char [] zzCMapL = ZZ_CMAP;
 
     int [] zzTransL = ZZ_TRANS;
@@ -647,12 +701,20 @@ class _RegExLexer implements FlexLexer {
 
       zzState = ZZ_LEXSTATE[zzLexicalState];
 
+      // set up zzAction for empty match case:
+      int zzAttributes = zzAttrL[zzState];
+      if ( (zzAttributes & 1) == 1 ) {
+        zzAction = zzState;
+      }
+
 
       zzForAction: {
         while (true) {
 
-          if (zzCurrentPosL < zzEndReadL)
-            zzInput = (zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++] : zzBufferL.charAt(zzCurrentPosL++));
+          if (zzCurrentPosL < zzEndReadL) {
+            zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL/*, zzEndReadL*/);
+            zzCurrentPosL += Character.charCount(zzInput);
+          }
           else if (zzAtEOF) {
             zzInput = YYEOF;
             break zzForAction;
@@ -672,14 +734,15 @@ class _RegExLexer implements FlexLexer {
               break zzForAction;
             }
             else {
-              zzInput = (zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++] : zzBufferL.charAt(zzCurrentPosL++));
+              zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL/*, zzEndReadL*/);
+              zzCurrentPosL += Character.charCount(zzInput);
             }
           }
           int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
           if (zzNext == -1) break zzForAction;
           zzState = zzNext;
 
-          int zzAttributes = zzAttrL[zzState];
+          zzAttributes = zzAttrL[zzState];
           if ( (zzAttributes & 1) == 1 ) {
             zzAction = zzState;
             zzMarkedPosL = zzCurrentPosL;
@@ -692,375 +755,378 @@ class _RegExLexer implements FlexLexer {
       // store back cached position
       zzMarkedPos = zzMarkedPosL;
 
-      switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
-        case 81: 
-          { return RegExpTT.UNICODE_CHAR;
-          }
-        case 82: break;
-        case 7: 
-          { if (yystate() != CLASS2) yypushstate(EMBRACED); return RegExpTT.LBRACE;
-          }
-        case 83: break;
-        case 24: 
-          { return RegExpTT.COMMA;
-          }
-        case 84: break;
-        case 67: 
-          { return RegExpTT.POS_LOOKAHEAD;
-          }
-        case 85: break;
-        case 65: 
-          { yybegin(QUOTED_NAMED_GROUP); capturingGroupCount++; return RegExpTT.RUBY_QUOTED_NAMED_GROUP;
-          }
-        case 86: break;
-        case 80: 
-          { return RegExpTT.COMMENT;
-          }
-        case 87: break;
-        case 14: 
-          { return RegExpTT.STAR;
-          }
-        case 88: break;
-        case 63: 
-          { yybegin(PY_COND_REF); return RegExpTT.PYTHON_COND_REF;
-          }
-        case 89: break;
-        case 50: 
-          { return RegExpTT.CHAR_CLASS;
-          }
-        case 90: break;
-        case 36: 
-          { handleOptions(); return RegExpTT.OPTIONS_OFF;
-          }
-        case 91: break;
-        case 57: 
-          { yypopstate(); return RegExpTT.QUOTE_END;
-          }
-        case 92: break;
-        case 35: 
-          { yybegin(YYINITIAL); return RegExpTT.GROUP_END;
-          }
-        case 93: break;
-        case 42: 
-          // lookahead expression with fixed base length
-          zzMarkedPos = zzStartRead + 1;
-          { if (allowEmptyCharacterClass) yypushstate(CLASS2); else yypushstate(CLASS1);
+      if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
+        zzAtEOF = true;
+        zzDoEOF();
+        return null;
+      }
+      else {
+        switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
+          case 1: 
+            { handleOptions(); return RegExpTT.OPTIONS_ON;
+            }
+          case 82: break;
+          case 2: 
+            { yypopstate(); return RegExpTT.COMMENT;
+            }
+          case 83: break;
+          case 3: 
+            { return RegExpTT.CHARACTER;
+            }
+          case 84: break;
+          case 4: 
+            { return RegExpTT.DOT;
+            }
+          case 85: break;
+          case 5: 
+            { capturingGroupCount++; return RegExpTT.GROUP_BEGIN;
+            }
+          case 86: break;
+          case 6: 
+            { return RegExpTT.GROUP_END;
+            }
+          case 87: break;
+          case 7: 
+            { if (yystate() != CLASS2) yypushstate(EMBRACED); return RegExpTT.LBRACE;
+            }
+          case 88: break;
+          case 8: 
+            { yypushstate(CLASS2);
                             return RegExpTT.CLASS_BEGIN;
-          }
-        case 94: break;
-        case 37
-          { yybegin(YYINITIAL); return RegExpTT.COLON;
-          }
-        case 95: break;
-        case 6
-          { return RegExpTT.GROUP_END;
-          }
-        case 96: break;
-        case 25
-          { assert false : yytext();
-          }
-        case 97: break;
-        case 18
-          { return commentMode ? com.intellij.psi.TokenType.WHITE_SPACE : RegExpTT.CHARACTER;
-          }
-        case 98: break;
-        case 47
-          { return commentMode ? RegExpTT.CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
-          }
-        case 99: break;
-        case 23
-          { return RegExpTT.NAME;
-          }
-        case 100: break;
-        case 29
-          { yypopstate(); return RegExpTT.CLASS_END;
-          }
-        case 101: break;
-        case 72
-          { yybegin(NAMED_GROUP); return RegExpTT.RUBY_NAMED_GROUP_REF;
-          }
-        case 102: break;
-        case 34
-          { yybegin(YYINITIAL); return RegExpTT.BAD_CHARACTER;
-          }
-        case 103: break;
-        case 53
-          { yypushstate(QUOTED); return RegExpTT.QUOTE_BEGIN;
-          }
-        case 104: break;
-        case 40
-          { return RegExpTT.BAD_CHARACTER;
-          }
-        case 105: break;
-        case 21
-          { return RegExpTT.NUMBER;
-          }
-        case 106: break;
-        case 4: 
-          { return RegExpTT.DOT;
-          }
-        case 107: break;
-        case 77
-          { return RegExpTT.NEG_LOOKBEHIND;
-          }
-        case 108: break;
-        case 33
-          { yypopstate(); if (allowCategoryShorthand) return RegExpTT.CATEGORY_SHORT_HAND; else yypushback(1);
-          }
-        case 109: break;
-        case 45
-          { return (allowOctalNoLeadingZero ? RegExpTT.OCT_CHAR : RegExpTT.BAD_OCT_VALUE);
-          }
-        case 110: break;
-        case 68
-          { return RegExpTT.NEG_LOOKAHEAD;
-          }
-        case 111: break;
-        case 10
-          { return commentMode ? com.intellij.psi.TokenType.WHITE_SPACE : RegExpTT.CTRL_CHARACTER;
-          }
-        case 112: break;
-        case 66: 
-          { return RegExpTT.NON_CAPT_GROUP;
-          }
-        case 113: break;
-        case 73
-          { yybegin(QUOTED_NAMED_GROUP); return RegExpTT.RUBY_QUOTED_NAMED_GROUP_REF;
-          }
-        case 114: break;
-        case 28: 
-          { if (allowNestedCharacterClasses) {
+            }
+          case 89: break;
+          case 9
+            { return StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN;
+            }
+          case 90: break;
+          case 10
+            { return commentMode ? com.intellij.psi.TokenType.WHITE_SPACE : RegExpTT.CTRL_CHARACTER;
+            }
+          case 91: break;
+          case 11
+            { return RegExpTT.CARET;
+            }
+          case 92: break;
+          case 12
+            { return RegExpTT.DOLLAR;
+            }
+          case 93: break;
+          case 13
+            { return RegExpTT.QUEST;
+            }
+          case 94: break;
+          case 14
+            { return RegExpTT.STAR;
+            }
+          case 95: break;
+          case 15
+            { return RegExpTT.PLUS;
+            }
+          case 96: break;
+          case 16
+            { return RegExpTT.UNION;
+            }
+          case 97: break;
+          case 17
+            { return RegExpTT.MINUS;
+            }
+          case 98: break;
+          case 18
+            { return commentMode ? com.intellij.psi.TokenType.WHITE_SPACE : RegExpTT.CHARACTER;
+            }
+          case 99: break;
+          case 19
+            { if (commentMode) { yypushstate(COMMENT); return RegExpTT.COMMENT; } else return RegExpTT.CHARACTER;
+            }
+          case 100: break;
+          case 20
+            { if (allowDanglingMetacharacters) {
+                          yypopstate(); yypushback(1);
+                        } else {
+                          return RegExpTT.BAD_CHARACTER;
+                        }
+            }
+          case 101: break;
+          case 21
+            { return RegExpTT.NUMBER;
+            }
+          case 102: break;
+          case 22
+            { yypopstate(); return RegExpTT.RBRACE;
+            }
+          case 103: break;
+          case 23
+            { return RegExpTT.NAME;
+            }
+          case 104: break;
+          case 24
+            { return RegExpTT.COMMA;
+            }
+          case 105: break;
+          case 25
+            { assert false : yytext();
+            }
+          case 106: break;
+          case 26: 
+            { yybegin(CLASS2); return RegExpTT.CHARACTER;
+            }
+          case 107: break;
+          case 27
+            { yybegin(CLASS1); return RegExpTT.CARET;
+            }
+          case 108: break;
+          case 28: 
+            { if (allowNestedCharacterClasses) {
                            yypushstate(CLASS2);
                            return RegExpTT.CLASS_BEGIN;
                         }
                         return RegExpTT.CHARACTER;
-          }
-        case 115: break;
-        case 19: 
-          { if (commentMode) { yypushstate(COMMENT); return RegExpTT.COMMENT; } else return RegExpTT.CHARACTER;
-          }
-        case 116: break;
-        case 52: 
-          { yypushstate(PROP); return RegExpTT.PROPERTY;
-          }
-        case 117: break;
-        case 8: 
-          { yypushstate(CLASS2);
+            }
+          case 109: break;
+          case 29: 
+            { yypopstate(); return RegExpTT.CLASS_END;
+            }
+          case 110: break;
+          case 30: 
+            { return commentMode ? com.intellij.psi.TokenType.WHITE_SPACE : RegExpTT.ESC_CHARACTER;
+            }
+          case 111: break;
+          case 31: 
+            { yypopstate(); yypushback(1);
+            }
+          case 112: break;
+          case 32: 
+            { yypopstate(); yypushstate(EMBRACED); return RegExpTT.LBRACE;
+            }
+          case 113: break;
+          case 33: 
+            { yypopstate(); if (allowCategoryShorthand) return RegExpTT.CATEGORY_SHORT_HAND; else yypushback(1);
+            }
+          case 114: break;
+          case 34: 
+            { yybegin(YYINITIAL); return RegExpTT.BAD_CHARACTER;
+            }
+          case 115: break;
+          case 35: 
+            { yybegin(YYINITIAL); return RegExpTT.GROUP_END;
+            }
+          case 116: break;
+          case 36: 
+            { handleOptions(); return RegExpTT.OPTIONS_OFF;
+            }
+          case 117: break;
+          case 37: 
+            { yybegin(YYINITIAL); return RegExpTT.COLON;
+            }
+          case 118: break;
+          case 38: 
+            { yybegin(YYINITIAL); return RegExpTT.GT;
+            }
+          case 119: break;
+          case 39: 
+            { yybegin(YYINITIAL); return RegExpTT.QUOTE;
+            }
+          case 120: break;
+          case 40: 
+            { return RegExpTT.BAD_CHARACTER;
+            }
+          case 121: break;
+          case 41: 
+            { yybegin(OPTIONS); return RegExpTT.SET_OPTIONS;
+            }
+          case 122: break;
+          case 42: 
+            // lookahead expression with fixed base length
+            zzMarkedPos = Character.offsetByCodePoints
+                (zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1);
+            { if (allowEmptyCharacterClass) yypushstate(CLASS2); else yypushstate(CLASS1);
                             return RegExpTT.CLASS_BEGIN;
-          }
-        case 118: break;
-        case 76: 
-          { return RegExpTT.POS_LOOKBEHIND;
-          }
-        case 119: break;
-        case 20: 
-          { if (allowDanglingMetacharacters) {
-                          yypopstate(); yypushback(1);
-                        } else {
-                          return RegExpTT.BAD_CHARACTER;
-                        }
-          }
-        case 120: break;
-        case 78: 
-          { return RegExpTT.HEX_CHAR;
-          }
-        case 121: break;
-        case 1: 
-          { handleOptions(); return RegExpTT.OPTIONS_ON;
-          }
-        case 122: break;
-        case 44: 
-          { if (yystate() == CLASS2) return RegExpTT.ESC_CHARACTER;
+            }
+          case 123: break;
+          case 43: 
+            { return RegExpTT.REDUNDANT_ESCAPE;
+            }
+          case 124: break;
+          case 44: 
+            { if (yystate() == CLASS2) return RegExpTT.ESC_CHARACTER;
                                 while (yylength() > 2 && Integer.parseInt(yytext().toString().substring(1)) > capturingGroupCount) {
                                   yypushback(1);
                                 }
                                 return RegExpTT.BACKREF;
-          }
-        case 123: break;
-        case 62: 
-          { yybegin(CLASS2); return RegExpTT.BRACKET_EXPRESSION_END;
-          }
-        case 124: break;
-        case 2: 
-          { yypopstate(); return RegExpTT.COMMENT;
-          }
-        case 125: break;
-        case 17: 
-          { return RegExpTT.MINUS;
-          }
-        case 126: break;
-        case 48: 
-          { return RegExpTT.ESC_CTRL_CHARACTER;
-          }
-        case 127: break;
-        case 32: 
-          { yypopstate(); yypushstate(EMBRACED); return RegExpTT.LBRACE;
-          }
-        case 128: break;
-        case 13: 
-          { return RegExpTT.QUEST;
-          }
-        case 129: break;
-        case 74: 
-          { yybegin(NAMED_GROUP); capturingGroupCount++; return RegExpTT.PYTHON_NAMED_GROUP;
-          }
-        case 130: break;
-        case 5: 
-          { capturingGroupCount++; return RegExpTT.GROUP_BEGIN;
-          }
-        case 131: break;
-        case 15: 
-          { return RegExpTT.PLUS;
-          }
-        case 132: break;
-        case 70: 
-          { return RegExpTT.OCT_CHAR;
-          }
-        case 133: break;
-        case 39: 
-          { yybegin(YYINITIAL); return RegExpTT.QUOTE;
-          }
-        case 134: break;
-        case 31: 
-          { yypopstate(); yypushback(1);
-          }
-        case 135: break;
-        case 27: 
-          { yybegin(CLASS1); return RegExpTT.CARET;
-          }
-        case 136: break;
-        case 58: 
-          // lookahead expression with fixed base length
-          zzMarkedPos = zzStartRead + 1;
-          { if (allowNestedCharacterClasses) {
+            }
+          case 125: break;
+          case 45: 
+            { return (allowOctalNoLeadingZero ? RegExpTT.OCT_CHAR : RegExpTT.BAD_OCT_VALUE);
+            }
+          case 126: break;
+          case 46: 
+            { return RegExpTT.ESC_CHARACTER;
+            }
+          case 127: break;
+          case 47: 
+            { return commentMode ? RegExpTT.CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
+            }
+          case 128: break;
+          case 48: 
+            { return RegExpTT.ESC_CTRL_CHARACTER;
+            }
+          case 129: break;
+          case 49: 
+            { return yystate() != CLASS2 ? RegExpTT.BOUNDARY : RegExpTT.ESC_CHARACTER;
+            }
+          case 130: break;
+          case 50: 
+            { return RegExpTT.CHAR_CLASS;
+            }
+          case 131: break;
+          case 51: 
+            { if (xmlSchemaMode) return RegExpTT.CHAR_CLASS; else return StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN;
+            }
+          case 132: break;
+          case 52: 
+            { yypushstate(PROP); return RegExpTT.PROPERTY;
+            }
+          case 133: break;
+          case 53: 
+            { yypushstate(QUOTED); return RegExpTT.QUOTE_BEGIN;
+            }
+          case 134: break;
+          case 54: 
+            { return RegExpTT.BAD_HEX_VALUE;
+            }
+          case 135: break;
+          case 55: 
+            { return StringEscapesTokenTypes.INVALID_UNICODE_ESCAPE_TOKEN;
+            }
+          case 136: break;
+          case 56: 
+            { return (allowHexDigitClass || allowHorizontalWhitespaceClass ? RegExpTT.CHAR_CLASS : StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN);
+            }
+          case 137: break;
+          case 57: 
+            { yypopstate(); return RegExpTT.QUOTE_END;
+            }
+          case 138: break;
+          case 58: 
+            // lookahead expression with fixed base length
+            zzMarkedPos = Character.offsetByCodePoints
+                (zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1);
+            { if (allowNestedCharacterClasses) {
                               yypushstate(CLASS1);
                               return RegExpTT.CLASS_BEGIN;
                             }
                             return RegExpTT.CHARACTER;
-          }
-        case 137: break;
-        case 59: 
-          { if (allowPosixBracketExpressions) {
+            }
+          case 139: break;
+          case 59: 
+            { if (allowPosixBracketExpressions) {
                             yybegin(BRACKET_EXPRESSION);
                             return RegExpTT.BRACKET_EXPRESSION_BEGIN;
                           } else {
                             yypushback(1);
                             return RegExpTT.CHARACTER;
                           }
-          }
-        case 138: break;
-        case 60: 
-          { if (!allowNestedCharacterClasses) return RegExpTT.CHARACTER;
+            }
+          case 140: break;
+          case 60: 
+            { if (!allowNestedCharacterClasses) return RegExpTT.CHARACTER;
                                 return RegExpTT.REDUNDANT_ESCAPE;
-          }
-        case 139: break;
-        case 38: 
-          { yybegin(YYINITIAL); return RegExpTT.GT;
-          }
-        case 140: break;
-        case 75: 
-          { yybegin(PY_NAMED_GROUP_REF); return RegExpTT.PYTHON_NAMED_GROUP_REF;
-          }
-        case 141: break;
-        case 16: 
-          { return RegExpTT.UNION;
-          }
-        case 142: break;
-        case 3: 
-          { return RegExpTT.CHARACTER;
-          }
-        case 143: break;
-        case 41: 
-          { yybegin(OPTIONS); return RegExpTT.SET_OPTIONS;
-          }
-        case 144: break;
-        case 26: 
-          { yybegin(CLASS2); return RegExpTT.CHARACTER;
-          }
-        case 145: break;
-        case 71: 
-          { if (xmlSchemaMode) { yypushback(1); return RegExpTT.CHAR_CLASS; } else return RegExpTT.CTRL;
-          }
-        case 146: break;
-        case 30: 
-          { return commentMode ? com.intellij.psi.TokenType.WHITE_SPACE : RegExpTT.ESC_CHARACTER;
-          }
-        case 147: break;
-        case 12: 
-          { return RegExpTT.DOLLAR;
-          }
-        case 148: break;
-        case 61: 
-          { if (allowNestedCharacterClasses) return RegExpTT.ANDAND; else yypushback(1); return RegExpTT.CHARACTER;
-          }
-        case 149: break;
-        case 51: 
-          { if (xmlSchemaMode) return RegExpTT.CHAR_CLASS; else return StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN;
-          }
-        case 150: break;
-        case 43: 
-          { return RegExpTT.REDUNDANT_ESCAPE;
-          }
-        case 151: break;
-        case 56: 
-          { return (allowHexDigitClass || allowHorizontalWhitespaceClass ? RegExpTT.CHAR_CLASS : StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN);
-          }
-        case 152: break;
-        case 49: 
-          { return yystate() != CLASS2 ? RegExpTT.BOUNDARY : RegExpTT.ESC_CHARACTER;
-          }
-        case 153: break;
-        case 22: 
-          { yypopstate(); return RegExpTT.RBRACE;
-          }
-        case 154: break;
-        case 69: 
-          // lookahead expression with fixed base length
-          zzMarkedPos = zzStartRead + 1;
-          { if (allowEmptyCharacterClass) yypushstate(CLASS2); else yypushstate(NEGATE_CLASS1);
+            }
+          case 141: break;
+          case 61: 
+            { if (allowNestedCharacterClasses) return RegExpTT.ANDAND; else yypushback(1); return RegExpTT.CHARACTER;
+            }
+          case 142: break;
+          case 62: 
+            { yybegin(CLASS2); return RegExpTT.BRACKET_EXPRESSION_END;
+            }
+          case 143: break;
+          case 63: 
+            { yybegin(PY_COND_REF); return RegExpTT.PYTHON_COND_REF;
+            }
+          case 144: break;
+          case 64: 
+            { yybegin(NAMED_GROUP); capturingGroupCount++; return RegExpTT.RUBY_NAMED_GROUP;
+            }
+          case 145: break;
+          case 65: 
+            { yybegin(QUOTED_NAMED_GROUP); capturingGroupCount++; return RegExpTT.RUBY_QUOTED_NAMED_GROUP;
+            }
+          case 146: break;
+          case 66: 
+            { return RegExpTT.NON_CAPT_GROUP;
+            }
+          case 147: break;
+          case 67: 
+            { return RegExpTT.POS_LOOKAHEAD;
+            }
+          case 148: break;
+          case 68: 
+            { return RegExpTT.NEG_LOOKAHEAD;
+            }
+          case 149: break;
+          case 69: 
+            // lookahead expression with fixed base length
+            zzMarkedPos = Character.offsetByCodePoints
+                (zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1);
+            { if (allowEmptyCharacterClass) yypushstate(CLASS2); else yypushstate(NEGATE_CLASS1);
                               return RegExpTT.CLASS_BEGIN;
-          }
-        case 155: break;
-        case 64: 
-          { yybegin(NAMED_GROUP); capturingGroupCount++; return RegExpTT.RUBY_NAMED_GROUP;
-          }
-        case 156: break;
-        case 55: 
-          { return StringEscapesTokenTypes.INVALID_UNICODE_ESCAPE_TOKEN;
-          }
-        case 157: break;
-        case 54: 
-          { return RegExpTT.BAD_HEX_VALUE;
-          }
-        case 158: break;
-        case 9: 
-          { return StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN;
-          }
-        case 159: break;
-        case 11: 
-          { return RegExpTT.CARET;
-          }
-        case 160: break;
-        case 46: 
-          { return RegExpTT.ESC_CHARACTER;
-          }
-        case 161: break;
-        case 79: 
-          { if (allowOctalNoLeadingZero) return RegExpTT.OCT_CHAR;
+            }
+          case 150: break;
+          case 70: 
+            { return RegExpTT.OCT_CHAR;
+            }
+          case 151: break;
+          case 71: 
+            { if (xmlSchemaMode) { yypushback(1); return RegExpTT.CHAR_CLASS; } else return RegExpTT.CTRL;
+            }
+          case 152: break;
+          case 72: 
+            { yybegin(NAMED_GROUP); return RegExpTT.RUBY_NAMED_GROUP_REF;
+            }
+          case 153: break;
+          case 73: 
+            { yybegin(QUOTED_NAMED_GROUP); return RegExpTT.RUBY_QUOTED_NAMED_GROUP_REF;
+            }
+          case 154: break;
+          case 74: 
+            { yybegin(NAMED_GROUP); capturingGroupCount++; return RegExpTT.PYTHON_NAMED_GROUP;
+            }
+          case 155: break;
+          case 75: 
+            { yybegin(PY_NAMED_GROUP_REF); return RegExpTT.PYTHON_NAMED_GROUP_REF;
+            }
+          case 156: break;
+          case 76: 
+            { return RegExpTT.POS_LOOKBEHIND;
+            }
+          case 157: break;
+          case 77: 
+            { return RegExpTT.NEG_LOOKBEHIND;
+            }
+          case 158: break;
+          case 78: 
+            { return RegExpTT.HEX_CHAR;
+            }
+          case 159: break;
+          case 79: 
+            { if (allowOctalNoLeadingZero) return RegExpTT.OCT_CHAR;
                                 if (yystate() == CLASS2) return RegExpTT.ESC_CHARACTER;
                                 while (yylength() > 2 && Integer.parseInt(yytext().toString().substring(1)) > capturingGroupCount) {
                                   yypushback(1);
                                 }
                                 return RegExpTT.BACKREF;
-          }
-        case 162: break;
-        default:
-          if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
-            zzAtEOF = true;
-            zzDoEOF();
-            return null;
-          }
-          else {
+            }
+          case 160: break;
+          case 80: 
+            { return RegExpTT.COMMENT;
+            }
+          case 161: break;
+          case 81: 
+            { return RegExpTT.UNICODE_CHAR;
+            }
+          case 162: break;
+          default:
             zzScanError(ZZ_NO_MATCH);
           }
       }
index 3de7994c5368a110bb4bfb1b2281628edae2833d..863055658d37a96180383d8604fc33af230328b4 100644 (file)
@@ -241,9 +241,9 @@ private layoutWin(Map args, String home, Paths paths) {
 
   List resourcePaths = ["$home/${appInfoModulePath}/src", "$home/platform/icons/src"]
   buildWinLauncher(home, "$home/bin/WinLauncher/WinLauncher.exe", "$target/bin/${name}.exe", appInfoFile(),
-                   productProperties.exe_launcher_properties, productProperties.systemSelector(), resourcePaths)
+                   productProperties.exe_launcher_properties, args.system_selector, resourcePaths)
   buildWinLauncher(home, "$home/bin/WinLauncher/WinLauncher64.exe", "$target/bin/${name}64.exe", appInfoFile(),
-                   productProperties.exe64_launcher_properties, productProperties.systemSelector(), resourcePaths)
+                   productProperties.exe64_launcher_properties, args.system_selector, resourcePaths)
 
   productProperties.customWinLayout(target)
 }
diff --git a/build/scripts/download_jre.gant b/build/scripts/download_jre.gant
new file mode 100644 (file)
index 0000000..ed196fc
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2000-2016 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.regex.Pattern
+
+target('default': 'Downloads custom JRE build from Teamcity server') {
+  def buildId = new URL("$jreTeamcityUrl/buildTypes/id:$jreBuildTypeId/builds/tags:$jreBuildTag/id").text
+  def buildNumber = new URL("$jreTeamcityUrl/builds/id:$buildId/number").text
+  java(jvm: "$workIdeaHome/jre/jre/bin/java", fork: "true", classname: "dummy", outputproperty: "jvmVersionOutput") {
+    jvmarg(value: "-version")
+  }
+  if (hasProperty("jvmVersionOutput") &&
+      jvmVersionOutput =~ /\(build .*release-b${Pattern.quote(buildNumber)}\)/ &&
+      jvmVersionOutput =~ (jreArchitecture == "64" ? /OpenJDK 64-Bit Server VM/ : /OpenJDK Server VM/)) {
+    echo "Latest version of custom JRE is installed, no update is required"
+    return
+  }
+  def files = new XmlSlurper().parse("$jreTeamcityUrl/builds/id:$buildId/artifacts/children/$jreArtifactPlatform")
+  def artifact = files.children().collect { it.@name.text() }.find {
+    it.startsWith(jreArtifactPrefix) && it.endsWith(jreArchitecture == "64" ? "_x64.tar.gz" : "_x86.tar.gz")
+  }
+  get src: "$jreTeamcityUrl/builds/id:$buildId/artifacts/content/$jreArtifactPlatform/$artifact", dest: deployDir
+  mkdir dir: "$deployDir/jre"
+  untar src: "$deployDir/$artifact", dest: "$deployDir/jre", compression: "gzip"
+  delete file: "$deployDir/$artifact"
+}
\ No newline at end of file
index 0f2731489601d28c558f1cac73959de7ee3c4acb..f195049859dd175594a01a85bf14e6759d6c9ad5 100644 (file)
@@ -81,7 +81,7 @@ binding.setVariable("common_vmoptions", "-XX:+UseConcMarkSweepGC -XX:SoftRefLRUP
                                         "-Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true " +
                                         "-XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow")
 
-binding.setVariable("vmOptions", { "$common_vmoptions".trim() })
+binding.setVariable("vmOptions", { "$common_vmoptions ${isEap() ? '-XX:MaxJavaStackTraceDepth=-1' : ''}".trim() })
 binding.setVariable("vmOptions32", { "$mem32 ${vmOptions()}".trim() })
 binding.setVariable("vmOptions64", { "$mem64 ${vmOptions()}".trim() })
 
index b621ca577143cdef3a90d6d1d35b5558c0a84c93..d9f5b6ac56bb4986710b4a3d02eb83237f5ef211 100644 (file)
Binary files a/community-resources/src/idea_community_about.png and b/community-resources/src/idea_community_about.png differ
index 1187f3f789a183d41adf7312cb9f6605638cf202..c096de59c13ed482abdda4916733c524d3e3b600 100644 (file)
Binary files a/community-resources/src/idea_community_about@2x.png and b/community-resources/src/idea_community_about@2x.png differ
index ca17f37e923ba89eb0364a07b61f41ef44387d23..a25784c312d726a7f28b6ce4bed1c522e1719a49 100644 (file)
Binary files a/community-resources/src/idea_community_logo.png and b/community-resources/src/idea_community_logo.png differ
index 755089b513667be7220f993d1bf6985e80e21c11..87c7636f4e65330db16a7c3f14dd6c2c5260dd81 100644 (file)
Binary files a/community-resources/src/idea_community_logo@2x.png and b/community-resources/src/idea_community_logo@2x.png differ
index d776410599f156b4e8cbc9e6753e3abac8644066..0266101ca0a86420d7288b7e7b36fc40019b5080 100644 (file)
@@ -69,8 +69,11 @@ public class LibraryPackagingElement extends ComplexPackagingElement<LibraryPack
       final VirtualFile[] files = library.getFiles(OrderRootType.CLASSES);
       final List<PackagingElement<?>> elements = new ArrayList<PackagingElement<?>>();
       for (VirtualFile file : files) {
-        final String path = FileUtil.toSystemIndependentName(PathUtil.getLocalPath(file));
-        elements.add(file.isDirectory() && file.isInLocalFileSystem() ? new DirectoryCopyPackagingElement(path) : new FileCopyPackagingElement(path));
+        String localPath = PathUtil.getLocalPath(file);
+        if (localPath != null) {
+          final String path = FileUtil.toSystemIndependentName(localPath);
+          elements.add(file.isDirectory() && file.isInLocalFileSystem() ? new DirectoryCopyPackagingElement(path) : new FileCopyPackagingElement(path));
+        }
       }
       return elements;
     }
index 05286725aac12aac9942b1122c7cff05ebe67640..d5047d5005abd8d16c72e48b2fdea0f7de9ca6e9 100644 (file)
@@ -274,7 +274,9 @@ public abstract class DebugProcessImpl extends UserDataHolderBase implements Deb
       LOG.error("State is invalid " + myState.get());
     }
     DebuggerManagerThreadImpl.assertIsManagerThread();
-    myPositionManager = createPositionManager();
+    if (myPositionManager == null) { // no need to reset on reattach
+      myPositionManager = createPositionManager();
+    }
     LOG.debug("*******************VM attached******************");
     checkVirtualMachineVersion(vm);
 
index a96eaa1b317b7b3372a3feb3a5cdb47191346daa..798b2d11611b8a7f9ac886c17658ed7bdd3dd8b7 100644 (file)
@@ -54,15 +54,11 @@ public class DescriptorTree {
   public void addChild(NodeDescriptor parent, NodeDescriptor child) {
     List<NodeDescriptor> children;
 
-    if(parent == null) {
+    if (parent == null) {
       children = myRootChildren;
     }
     else {
-      children = myChildrenMap.get(parent);
-      if(children == null) {
-        children = new ArrayList<>();
-        myChildrenMap.put(parent, children);
-      }
+      children = myChildrenMap.computeIfAbsent(parent, c -> new ArrayList<>());
     }
     children.add(child);
     if (myInitial && child instanceof LocalVariableDescriptorImpl) {
index 361d0486e20aec66cb2a592402f38421d76e26fa..1e09661717e0aaa51813e457a1e663152edc6925 100644 (file)
@@ -35,6 +35,7 @@ import com.intellij.openapi.application.ApplicationManager;
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.util.registry.Registry;
 import com.intellij.openapi.util.text.StringUtil;
+import com.intellij.psi.CommonClassNames;
 import com.intellij.psi.PsiElement;
 import com.intellij.psi.PsiExpression;
 import com.intellij.util.StringBuilderSpinAllocator;
@@ -356,7 +357,12 @@ public abstract class ValueDescriptorImpl extends NodeDescriptorImpl implements
                      lastRenderer.getIdLabel(value, evalContext.getDebugProcess()) : null;
     String rawLabelId = value instanceof ObjectReference ? value.type().name() : labelId;
 
-    if (rawLabelId != null) {
+    if (rawLabelId != null &&
+        label.length() > rawLabelId.length() && label.startsWith(rawLabelId) &&
+        "@[".indexOf(label.charAt(rawLabelId.length())) > -1 &&
+        !CommonClassNames.JAVA_LANG_STRING.equals(rawLabelId) &&
+        !CommonClassNames.JAVA_LANG_STRING_BUILDER.equals(rawLabelId) &&
+        !CommonClassNames.JAVA_LANG_STRING_BUFFER.equals(rawLabelId)) {
       // strip common prefix to avoid class names repetition
       // esp. if idLabel is explicitly hidden to our likings
       label = StringUtil.trimStart(label, rawLabelId);
index 687c19bc55a843bcef027fe1f096c7a1923d5166..06b102b36457247b982cb1e5cf93f5e9d458782e 100644 (file)
@@ -46,9 +46,11 @@ public abstract class DebuggerManager implements ProjectComponent {
   public abstract String getVMClassQualifiedName(PsiClass aClass);
 
   /**
-   * @deprecated use PositionManagerFactory extension point instead
+   * @deprecated use {@link PositionManagerFactory} extension point instead
    */
+  @Deprecated
   public abstract void registerPositionManagerFactory(Function<DebugProcess, PositionManager> factory);
 
+  @Deprecated
   public abstract void unregisterPositionManagerFactory(Function<DebugProcess, PositionManager> factory);
 }
index 5cd70d89a2634175f973754e0cab55d430ad6327..bbbc45e574057cfc11ab294e09c9b5f9da84989f 100644 (file)
@@ -62,11 +62,11 @@ public abstract class SearchForTestsTask extends Task.Backgroundable {
     if (ApplicationManager.getApplication().isUnitTestMode()) {
       try {
         search();
-        onFound();
       }
       catch (Throwable e) {
         LOG.error(e);
       }
+      onFound();
     }
     else {
       myProcessIndicator = new BackgroundableProcessIndicator(this);
index 74908efb2e9fb54a3033d26802128825d867ee1b..053a3aeebf3624aabdc29b09aafc88bf12d40d6e 100644 (file)
@@ -293,6 +293,11 @@ public abstract class AbstractProjectWizard extends AbstractWizard<ModuleWizardS
     super.doPreviousAction();
   }
 
+  @Override
+  protected boolean canGoNext() {
+    return myDelegate != null ? myDelegate.canProceed() : super.canGoNext();
+  }
+
   @Override
   public void doCancelAction() {
     final ModuleWizardStep step = getCurrentStepObject();
index 70766d58fff51158f7ea2f1991794c55a854d4ab..ba20d44dde131a01a5731a2fb84e415f3a4a928a 100644 (file)
@@ -25,4 +25,6 @@ public interface WizardDelegate {
   void doPreviousAction();
 
   void doFinishAction();
+
+  boolean canProceed();
 }
index fc91cf8d5dd0e9733b81f8f48bdc764fa41694fc..91bd277ff7c61c83d795756661627d6192044ea2 100644 (file)
@@ -870,7 +870,12 @@ public class HighlightClassUtil {
                                                    PsiElement elementToHighlight) {
     if (outerClass != null && !PsiTreeUtil.isContextAncestor(outerClass, place, false)) {
       String description = JavaErrorMessages.message("is.not.an.enclosing.class", HighlightUtil.formatClass(outerClass));
-      return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(elementToHighlight).descriptionAndTooltip(description).create();
+      HighlightInfo highlightInfo =
+        HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(elementToHighlight).descriptionAndTooltip(description).create();
+      if (aClass != null) {
+        QuickFixAction.registerQuickFixAction(highlightInfo, QUICK_FIX_FACTORY.createModifierListFix(aClass, PsiModifier.STATIC, true, false));
+      }
+      return highlightInfo;
     }
     PsiModifierListOwner staticParent = PsiUtil.getEnclosingStaticElement(place, outerClass);
     if (staticParent != null) {
index 9af60ae015d8d232bb2e58d1a4b3ca4137b5709c..b2c45b4319871c3166c88300ae4b3ef6b3da21e8 100644 (file)
@@ -1552,7 +1552,11 @@ public class HighlightMethodUtil {
           
           HighlightInfo info = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(infoElement).description(description).escapedToolTip(toolTip).navigationShift(+1).create();
           if (info != null) {
-            registerFixesOnInvalidConstructorCall(constructorCall, classReference, list, aClass, constructors, results, infoElement, info);
+            JavaResolveResult[] methodCandidates = results;
+            if (constructorCall instanceof PsiNewExpression) {
+              methodCandidates = resolveHelper.getReferencedMethodCandidates((PsiCallExpression)constructorCall, true);
+            }
+            registerFixesOnInvalidConstructorCall(constructorCall, classReference, list, aClass, constructors, methodCandidates, infoElement, info);
             registerMethodReturnFixAction(info, result, constructorCall);
             holder.add(info);
           }
index c557381d851771c37283e785dc068246e00497ad..1683e9b837aee8e9bf8b573c80bd83d68b0921bb 100644 (file)
@@ -52,8 +52,11 @@ public class HighlightNamesUtil {
     return highlightMethodName(method, elementToHighlight, elementToHighlight.getTextRange(), colorsScheme, isDeclaration);
   }
 
+  /**
+   * @param methodOrClass method to highlight; class is passed instead of implicit constructor
+   */
   @Nullable
-  static HighlightInfo highlightMethodName(@NotNull PsiMethod method,
+  static HighlightInfo highlightMethodName(@NotNull PsiMember methodOrClass,
                                            @NotNull PsiElement elementToHighlight,
                                            @NotNull TextRange range,
                                            @NotNull TextAttributesScheme colorsScheme,
@@ -62,7 +65,7 @@ public class HighlightNamesUtil {
 
     if (!isDeclaration) {
       if (isCalledOnThis(elementToHighlight)) {
-        final PsiClass containingClass = method.getContainingClass();
+        final PsiClass containingClass = methodOrClass instanceof PsiMethod ? methodOrClass.getContainingClass() : null;
         PsiClass enclosingClass = containingClass == null ? null : PsiTreeUtil.getParentOfType(elementToHighlight, PsiClass.class);
         while (enclosingClass != null) {
           isInherited = enclosingClass.isInheritor(containingClass, true);
@@ -72,9 +75,11 @@ public class HighlightNamesUtil {
       }
     }
 
-    HighlightInfoType type = getMethodNameHighlightType(method, isDeclaration, isInherited);
+    LOG.assertTrue(methodOrClass instanceof PsiMethod || !isDeclaration);
+    HighlightInfoType type = methodOrClass instanceof PsiMethod ? getMethodNameHighlightType((PsiMethod)methodOrClass, isDeclaration, isInherited)
+                                                                : JavaHighlightInfoTypes.CONSTRUCTOR_CALL;
     if (type != null) {
-      TextAttributes attributes = mergeWithScopeAttributes(method, type, colorsScheme);
+      TextAttributes attributes = mergeWithScopeAttributes(methodOrClass, type, colorsScheme);
       HighlightInfo.Builder builder = HighlightInfo.newHighlightInfo(type).range(range);
       if (attributes != null) {
         builder.textAttributes(attributes);
index 673598bde8fc4d65479552c2bb880688f3ee0fa6..1f49302a68197c51176c71ab157affc120462a9d 100644 (file)
@@ -830,17 +830,13 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
     else if (parent instanceof PsiConstructorCall) {
       try {
         PsiMethod method = ((PsiConstructorCall)parent).resolveConstructor();
-        if (method == null) {
-          if (resolved instanceof PsiClass) {
-            myHolder.add(HighlightNamesUtil.highlightClassName((PsiClass)resolved, element, colorsScheme));
-          }
-        }
-        else {
+        PsiMember methodOrClass = method != null ? method : resolved instanceof PsiClass ? (PsiClass)resolved : null;
+        if (methodOrClass != null) {
           final PsiElement referenceNameElement = element.getReferenceNameElement();
           if(referenceNameElement != null) {
             // exclude type parameters from the highlighted text range
             TextRange range = new TextRange(element.getTextRange().getStartOffset(), referenceNameElement.getTextRange().getEndOffset());
-            myHolder.add(HighlightNamesUtil.highlightMethodName(method, referenceNameElement, range, colorsScheme, false));
+            myHolder.add(HighlightNamesUtil.highlightMethodName(methodOrClass, referenceNameElement, range, colorsScheme, false));
           }
         }
       }
index 7c6067ca278e92331f81a09bb8a42d824f577928..4b9ec4c1a6df3a9dcd77a1113f0eda3599c8104b 100644 (file)
@@ -207,8 +207,8 @@ public class AnonymousCanBeLambdaInspection extends BaseJavaBatchLocalInspection
       final PsiClassType baseClassType = aClass.getBaseClassType();
       final PsiClassType.ClassResolveResult resolveResult = baseClassType.resolveGenerics();
       final PsiClass baseClass = resolveResult.getElement();
-      if (baseClass == null || 
-          !reportNotAnnotatedInterfaces && !AnnotationUtil.isAnnotated(baseClass, CommonClassNames.JAVA_LANG_FUNCTIONAL_INTERFACE, false)) {
+      if (baseClass == null ||
+          !reportNotAnnotatedInterfaces && !AnnotationUtil.isAnnotated(baseClass, CommonClassNames.JAVA_LANG_FUNCTIONAL_INTERFACE, false, false)) {
         return false;
       }
       final PsiMethod interfaceMethod = LambdaUtil.getFunctionalInterfaceMethod(resolveResult);
index a31c7587e0b0a5d6201d2deed8d1c7b17d996657..9a964a2178fd443acf0c3a0772805eeb6fd046c8 100644 (file)
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.4.3 on 4/26/14 2:08 PM */
+/* The following code was generated by JFlex 1.7.0-SNAPSHOT tweaked for IntelliJ platform */
 
 /*
  * Copyright 2000-2013 JetBrains s.r.o.
@@ -26,11 +26,14 @@ import com.intellij.lexer.FlexLexer;
 
 /**
  * This class is a scanner generated by 
- * <a href="http://www.jflex.de/">JFlex</a> 1.4.3
- * on 4/26/14 2:08 PM from the specification file
- * <tt>/Users/ignatov/src/ultimate/tools/lexer/../../community/java/java-impl/src/com/intellij/spi/parsing/_SPILexer.flex</tt>
+ * <a href="http://www.jflex.de/">JFlex</a> 1.7.0-SNAPSHOT
+ * from the specification file <tt>_SPILexer.flex</tt>
  */
 class _SPILexer implements FlexLexer {
+
+  /** This character denotes the end of file */
+  public static final int YYEOF = -1;
+
   /** initial size of the lookahead buffer */
   private static final int ZZ_BUFFERSIZE = 16384;
 
@@ -51,67 +54,128 @@ class _SPILexer implements FlexLexer {
    * Translates characters to character classes
    */
   private static final String ZZ_CMAP_PACKED = 
-    "\11\0\1\1\1\5\1\0\1\1\1\5\22\0\1\1\2\0\1\4"+
+    "\11\0\1\1\1\5\1\10\1\1\1\5\22\0\1\1\2\0\1\4"+
     "\1\6\11\0\1\7\1\0\12\3\7\0\32\2\4\0\1\2\1\0"+
-    "\32\2\57\0\1\2\12\0\1\2\4\0\1\2\5\0\27\2\1\0"+
-    "\37\2\1\0\u013f\2\31\0\162\2\4\0\14\2\16\0\5\2\11\0"+
-    "\1\2\213\0\1\2\13\0\1\2\1\0\3\2\1\0\1\2\1\0"+
-    "\24\2\1\0\54\2\1\0\46\2\1\0\5\2\4\0\202\2\10\0"+
-    "\105\2\1\0\46\2\2\0\2\2\6\0\20\2\41\0\46\2\2\0"+
-    "\1\2\7\0\47\2\110\0\33\2\5\0\3\2\56\0\32\2\5\0"+
-    "\13\2\25\0\12\3\4\0\2\2\1\0\143\2\1\0\1\2\17\0"+
-    "\2\2\7\0\2\2\12\3\3\2\2\0\1\2\20\0\1\2\1\0"+
-    "\36\2\35\0\3\2\60\0\46\2\13\0\1\2\u0152\0\66\2\3\0"+
-    "\1\2\22\0\1\2\7\0\12\2\4\0\12\3\25\0\10\2\2\0"+
-    "\2\2\2\0\26\2\1\0\7\2\1\0\1\2\3\0\4\2\3\0"+
-    "\1\2\36\0\2\2\1\0\3\2\4\0\12\3\2\2\23\0\6\2"+
-    "\4\0\2\2\2\0\26\2\1\0\7\2\1\0\2\2\1\0\2\2"+
-    "\1\0\2\2\37\0\4\2\1\0\1\2\7\0\12\3\2\0\3\2"+
-    "\20\0\11\2\1\0\3\2\1\0\26\2\1\0\7\2\1\0\2\2"+
-    "\1\0\5\2\3\0\1\2\22\0\1\2\17\0\2\2\4\0\12\3"+
-    "\25\0\10\2\2\0\2\2\2\0\26\2\1\0\7\2\1\0\2\2"+
-    "\1\0\5\2\3\0\1\2\36\0\2\2\1\0\3\2\4\0\12\3"+
-    "\1\0\1\2\21\0\1\2\1\0\6\2\3\0\3\2\1\0\4\2"+
-    "\3\0\2\2\1\0\1\2\1\0\2\2\3\0\2\2\3\0\3\2"+
-    "\3\0\10\2\1\0\3\2\55\0\11\3\25\0\10\2\1\0\3\2"+
-    "\1\0\27\2\1\0\12\2\1\0\5\2\46\0\2\2\4\0\12\3"+
-    "\25\0\10\2\1\0\3\2\1\0\27\2\1\0\12\2\1\0\5\2"+
-    "\3\0\1\2\40\0\1\2\1\0\2\2\4\0\12\3\25\0\10\2"+
-    "\1\0\3\2\1\0\27\2\1\0\20\2\46\0\2\2\4\0\12\3"+
-    "\25\0\22\2\3\0\30\2\1\0\11\2\1\0\1\2\2\0\7\2"+
-    "\72\0\60\2\1\0\2\2\14\0\7\2\11\0\12\3\47\0\2\2"+
-    "\1\0\1\2\2\0\2\2\1\0\1\2\2\0\1\2\6\0\4\2"+
-    "\1\0\7\2\1\0\3\2\1\0\1\2\1\0\1\2\2\0\2\2"+
-    "\1\0\4\2\1\0\2\2\11\0\1\2\2\0\5\2\1\0\1\2"+
-    "\11\0\12\3\2\0\2\2\42\0\1\2\37\0\12\3\26\0\10\2"+
-    "\1\0\42\2\35\0\4\2\164\0\42\2\1\0\5\2\1\0\2\2"+
-    "\25\0\12\3\6\0\6\2\112\0\46\2\12\0\51\2\7\0\132\2"+
-    "\5\0\104\2\5\0\122\2\6\0\7\2\1\0\77\2\1\0\1\2"+
-    "\1\0\4\2\2\0\7\2\1\0\1\2\1\0\4\2\2\0\47\2"+
-    "\1\0\1\2\1\0\4\2\2\0\37\2\1\0\1\2\1\0\4\2"+
-    "\2\0\7\2\1\0\1\2\1\0\4\2\2\0\7\2\1\0\7\2"+
-    "\1\0\27\2\1\0\37\2\1\0\1\2\1\0\4\2\2\0\7\2"+
-    "\1\0\47\2\1\0\23\2\16\0\11\3\56\0\125\2\14\0\u026c\2"+
-    "\2\0\10\2\12\0\32\2\5\0\113\2\25\0\15\2\1\0\4\2"+
-    "\16\0\22\2\16\0\22\2\16\0\15\2\1\0\3\2\17\0\64\2"+
-    "\43\0\1\2\4\0\1\2\3\0\12\3\46\0\12\3\6\0\130\2"+
-    "\10\0\51\2\127\0\35\2\51\0\12\3\36\2\2\0\5\2\u038b\0"+
-    "\154\2\224\0\234\2\4\0\132\2\6\0\26\2\2\0\6\2\2\0"+
-    "\46\2\2\0\6\2\2\0\10\2\1\0\1\2\1\0\1\2\1\0"+
-    "\1\2\1\0\37\2\2\0\65\2\1\0\7\2\1\0\1\2\3\0"+
-    "\3\2\1\0\7\2\3\0\4\2\2\0\6\2\4\0\15\2\5\0"+
-    "\3\2\1\0\7\2\164\0\1\2\15\0\1\2\202\0\1\2\4\0"+
-    "\1\2\2\0\12\2\1\0\1\2\3\0\5\2\6\0\1\2\1\0"+
-    "\1\2\1\0\1\2\1\0\4\2\1\0\3\2\1\0\7\2\3\0"+
-    "\3\2\5\0\5\2\u0ebb\0\2\2\52\0\5\2\5\0\2\2\4\0"+
-    "\126\2\6\0\3\2\1\0\132\2\1\0\4\2\5\0\50\2\4\0"+
-    "\136\2\21\0\30\2\70\0\20\2\u0200\0\u19b6\2\112\0\u51a6\2\132\0"+
-    "\u048d\2\u0773\0\u2ba4\2\u215c\0\u012e\2\2\0\73\2\225\0\7\2\14\0"+
-    "\5\2\5\0\1\2\1\0\12\2\1\0\15\2\1\0\5\2\1\0"+
-    "\1\2\1\0\2\2\1\0\2\2\1\0\154\2\41\0\u016b\2\22\0"+
-    "\100\2\2\0\66\2\50\0\14\2\164\0\5\2\1\0\207\2\23\0"+
-    "\12\3\7\0\32\2\6\0\32\2\13\0\131\2\3\0\6\2\2\0"+
-    "\6\2\2\0\6\2\2\0\3\2\43\0";
+    "\32\2\12\0\1\10\44\0\1\2\12\0\1\2\4\0\1\2\5\0"+
+    "\27\2\1\0\37\2\1\0\u01ca\2\4\0\14\2\16\0\5\2\7\0"+
+    "\1\2\1\0\1\2\201\0\5\2\1\0\2\2\2\0\4\2\1\0"+
+    "\1\2\6\0\1\2\1\0\3\2\1\0\1\2\1\0\24\2\1\0"+
+    "\123\2\1\0\213\2\10\0\246\2\1\0\46\2\2\0\1\2\7\0"+
+    "\47\2\110\0\33\2\5\0\3\2\55\0\53\2\25\0\12\3\4\0"+
+    "\2\2\1\0\143\2\1\0\1\2\17\0\2\2\7\0\2\2\12\3"+
+    "\3\2\2\0\1\2\20\0\1\2\1\0\36\2\35\0\131\2\13\0"+
+    "\1\2\16\0\12\3\41\2\11\0\2\2\4\0\1\2\5\0\26\2"+
+    "\4\0\1\2\11\0\1\2\3\0\1\2\27\0\31\2\107\0\25\2"+
+    "\117\0\66\2\3\0\1\2\22\0\1\2\7\0\12\2\4\0\12\3"+
+    "\1\0\20\2\4\0\10\2\2\0\2\2\2\0\26\2\1\0\7\2"+
+    "\1\0\1\2\3\0\4\2\3\0\1\2\20\0\1\2\15\0\2\2"+
+    "\1\0\3\2\4\0\12\3\2\2\23\0\6\2\4\0\2\2\2\0"+
+    "\26\2\1\0\7\2\1\0\2\2\1\0\2\2\1\0\2\2\37\0"+
+    "\4\2\1\0\1\2\7\0\12\3\2\0\3\2\20\0\11\2\1\0"+
+    "\3\2\1\0\26\2\1\0\7\2\1\0\2\2\1\0\5\2\3\0"+
+    "\1\2\22\0\1\2\17\0\2\2\4\0\12\3\11\0\1\2\13\0"+
+    "\10\2\2\0\2\2\2\0\26\2\1\0\7\2\1\0\2\2\1\0"+
+    "\5\2\3\0\1\2\36\0\2\2\1\0\3\2\4\0\12\3\1\0"+
+    "\1\2\21\0\1\2\1\0\6\2\3\0\3\2\1\0\4\2\3\0"+
+    "\2\2\1\0\1\2\1\0\2\2\3\0\2\2\3\0\3\2\3\0"+
+    "\14\2\26\0\1\2\25\0\12\3\25\0\10\2\1\0\3\2\1\0"+
+    "\27\2\1\0\20\2\3\0\1\2\32\0\3\2\5\0\2\2\4\0"+
+    "\12\3\25\0\10\2\1\0\3\2\1\0\27\2\1\0\12\2\1\0"+
+    "\5\2\3\0\1\2\40\0\1\2\1\0\2\2\4\0\12\3\1\0"+
+    "\2\2\22\0\10\2\1\0\3\2\1\0\51\2\2\0\1\2\20\0"+
+    "\1\2\20\0\3\2\4\0\12\3\12\0\6\2\5\0\22\2\3\0"+
+    "\30\2\1\0\11\2\1\0\1\2\2\0\7\2\37\0\12\3\21\0"+
+    "\60\2\1\0\2\2\14\0\7\2\11\0\12\3\47\0\2\2\1\0"+
+    "\1\2\2\0\2\2\1\0\1\2\2\0\1\2\6\0\4\2\1\0"+
+    "\7\2\1\0\3\2\1\0\1\2\1\0\1\2\2\0\2\2\1\0"+
+    "\4\2\1\0\2\2\11\0\1\2\2\0\5\2\1\0\1\2\11\0"+
+    "\12\3\2\0\4\2\40\0\1\2\37\0\12\3\26\0\10\2\1\0"+
+    "\44\2\33\0\5\2\163\0\53\2\24\0\1\2\12\3\6\0\6\2"+
+    "\4\0\4\2\3\0\1\2\3\0\2\2\7\0\3\2\4\0\15\2"+
+    "\14\0\1\2\1\0\12\3\6\0\46\2\1\0\1\2\5\0\1\2"+
+    "\2\0\53\2\1\0\u014d\2\1\0\4\2\2\0\7\2\1\0\1\2"+
+    "\1\0\4\2\2\0\51\2\1\0\4\2\2\0\41\2\1\0\4\2"+
+    "\2\0\7\2\1\0\1\2\1\0\4\2\2\0\17\2\1\0\71\2"+
+    "\1\0\4\2\2\0\103\2\45\0\20\2\20\0\126\2\2\0\6\2"+
+    "\3\0\u026c\2\2\0\21\2\1\0\32\2\5\0\113\2\6\0\10\2"+
+    "\7\0\15\2\1\0\4\2\16\0\22\2\16\0\22\2\16\0\15\2"+
+    "\1\0\3\2\17\0\64\2\43\0\1\2\4\0\1\2\3\0\12\3"+
+    "\46\0\12\3\6\0\130\2\10\0\51\2\1\0\1\2\5\0\106\2"+
+    "\12\0\37\2\47\0\12\3\36\2\2\0\5\2\13\0\54\2\4\0"+
+    "\32\2\6\0\12\3\46\0\27\2\11\0\65\2\53\0\12\3\6\0"+
+    "\12\3\15\0\1\2\135\0\57\2\21\0\7\2\4\0\12\3\51\0"+
+    "\36\2\15\0\2\2\12\3\54\2\32\0\44\2\34\0\12\3\3\0"+
+    "\3\2\12\3\44\2\153\0\4\2\1\0\4\2\3\0\2\2\11\0"+
+    "\300\2\100\0\u0116\2\2\0\6\2\2\0\46\2\2\0\6\2\2\0"+
+    "\10\2\1\0\1\2\1\0\1\2\1\0\1\2\1\0\37\2\2\0"+
+    "\65\2\1\0\7\2\1\0\1\2\3\0\3\2\1\0\7\2\3\0"+
+    "\4\2\2\0\6\2\4\0\15\2\5\0\3\2\1\0\7\2\53\0"+
+    "\1\10\1\10\107\0\1\2\15\0\1\2\20\0\15\2\145\0\1\2"+
+    "\4\0\1\2\2\0\12\2\1\0\1\2\3\0\5\2\6\0\1\2"+
+    "\1\0\1\2\1\0\1\2\1\0\4\2\1\0\13\2\2\0\4\2"+
+    "\5\0\5\2\4\0\1\2\64\0\2\2\u0a7b\0\57\2\1\0\57\2"+
+    "\1\0\205\2\6\0\4\2\3\0\2\2\14\0\46\2\1\0\1\2"+
+    "\5\0\1\2\2\0\70\2\7\0\1\2\20\0\27\2\11\0\7\2"+
+    "\1\0\7\2\1\0\7\2\1\0\7\2\1\0\7\2\1\0\7\2"+
+    "\1\0\7\2\1\0\7\2\120\0\1\2\u01d5\0\2\2\52\0\5\2"+
+    "\5\0\2\2\4\0\126\2\6\0\3\2\1\0\132\2\1\0\4\2"+
+    "\5\0\51\2\3\0\136\2\21\0\33\2\65\0\20\2\u0200\0\u19b6\2"+
+    "\112\0\u51d6\2\52\0\u048d\2\103\0\56\2\2\0\u010d\2\3\0\20\2"+
+    "\12\3\2\2\24\0\57\2\20\0\37\2\2\0\106\2\61\0\11\2"+
+    "\2\0\147\2\2\0\43\2\2\0\10\2\77\0\13\2\1\0\3\2"+
+    "\1\0\4\2\1\0\27\2\35\0\64\2\16\0\62\2\34\0\12\3"+
+    "\30\0\6\2\3\0\1\2\1\0\1\2\2\0\12\3\34\2\12\0"+
+    "\27\2\31\0\35\2\7\0\57\2\34\0\1\2\12\3\6\0\5\2"+
+    "\1\0\12\2\12\3\5\2\1\0\51\2\27\0\3\2\1\0\10\2"+
+    "\4\0\12\3\6\0\27\2\3\0\1\2\3\0\62\2\1\0\1\2"+
+    "\3\0\2\2\2\0\5\2\2\0\1\2\1\0\1\2\30\0\3\2"+
+    "\2\0\13\2\7\0\3\2\14\0\6\2\2\0\6\2\2\0\6\2"+
+    "\11\0\7\2\1\0\7\2\1\0\53\2\1\0\12\2\12\0\163\2"+
+    "\15\0\12\3\6\0\u2ba4\2\14\0\27\2\4\0\61\2\u2104\0\u016e\2"+
+    "\2\0\152\2\46\0\7\2\14\0\5\2\5\0\1\2\1\0\12\2"+
+    "\1\0\15\2\1\0\5\2\1\0\1\2\1\0\2\2\1\0\2\2"+
+    "\1\0\154\2\41\0\u016b\2\22\0\100\2\2\0\66\2\50\0\14\2"+
+    "\164\0\5\2\1\0\207\2\23\0\12\3\7\0\32\2\6\0\32\2"+
+    "\13\0\131\2\3\0\6\2\2\0\6\2\2\0\6\2\2\0\3\2"+
+    "\43\0\14\2\1\0\32\2\1\0\23\2\1\0\2\2\1\0\17\2"+
+    "\2\0\16\2\42\0\173\2\u0185\0\35\2\3\0\61\2\57\0\40\2"+
+    "\20\0\21\2\1\0\10\2\6\0\46\2\12\0\36\2\2\0\44\2"+
+    "\4\0\10\2\60\0\236\2\2\0\12\3\126\0\50\2\10\0\64\2"+
+    "\234\0\u0137\2\11\0\26\2\12\0\10\2\230\0\6\2\2\0\1\2"+
+    "\1\0\54\2\1\0\2\2\3\0\1\2\2\0\27\2\12\0\27\2"+
+    "\11\0\37\2\101\0\23\2\1\0\2\2\12\0\26\2\12\0\32\2"+
+    "\106\0\70\2\6\0\2\2\100\0\1\2\17\0\4\2\1\0\3\2"+
+    "\1\0\33\2\54\0\35\2\3\0\35\2\43\0\10\2\1\0\34\2"+
+    "\33\0\66\2\12\0\26\2\12\0\23\2\15\0\22\2\156\0\111\2"+
+    "\67\0\63\2\15\0\63\2\u0310\0\65\2\56\0\12\3\23\0\55\2"+
+    "\40\0\31\2\7\0\12\3\11\0\44\2\17\0\12\3\20\0\43\2"+
+    "\3\0\1\2\14\0\60\2\16\0\4\2\13\0\12\3\1\2\1\0"+
+    "\1\2\43\0\22\2\1\0\31\2\124\0\7\2\1\0\1\2\1\0"+
+    "\4\2\1\0\17\2\1\0\12\2\7\0\57\2\21\0\12\3\13\0"+
+    "\10\2\2\0\2\2\2\0\26\2\1\0\7\2\1\0\2\2\1\0"+
+    "\5\2\3\0\1\2\22\0\1\2\14\0\5\2\u011e\0\60\2\24\0"+
+    "\2\2\1\0\1\2\10\0\12\3\246\0\57\2\51\0\4\2\44\0"+
+    "\60\2\24\0\1\2\13\0\12\3\46\0\53\2\25\0\12\3\66\0"+
+    "\32\2\26\0\12\3\u0166\0\100\2\12\3\25\0\1\2\u01c0\0\71\2"+
+    "\u0507\0\u039a\2\346\0\304\2\u0abc\0\u042f\2\u0fd1\0\u0247\2\u21b9\0\u0239\2"+
+    "\7\0\37\2\1\0\12\3\146\0\36\2\22\0\60\2\20\0\4\2"+
+    "\14\0\12\3\11\0\25\2\5\0\23\2\u0370\0\105\2\13\0\1\2"+
+    "\102\0\15\2\u4060\0\2\2\u0bfe\0\153\2\5\0\15\2\3\0\11\2"+
+    "\7\0\12\2\u1766\0\125\2\1\0\107\2\1\0\2\2\2\0\1\2"+
+    "\2\0\2\2\2\0\4\2\1\0\14\2\1\0\1\2\1\0\7\2"+
+    "\1\0\101\2\1\0\4\2\2\0\10\2\1\0\7\2\1\0\34\2"+
+    "\1\0\4\2\1\0\5\2\1\0\1\2\3\0\7\2\1\0\u0154\2"+
+    "\2\0\31\2\1\0\31\2\1\0\37\2\1\0\31\2\1\0\37\2"+
+    "\1\0\31\2\1\0\37\2\1\0\31\2\1\0\37\2\1\0\31\2"+
+    "\1\0\10\2\2\0\62\3\u1000\0\305\2\u053b\0\4\2\1\0\33\2"+
+    "\1\0\2\2\1\0\1\2\2\0\1\2\1\0\12\2\1\0\4\2"+
+    "\1\0\1\2\1\0\1\2\6\0\1\2\4\0\1\2\1\0\1\2"+
+    "\1\0\1\2\1\0\3\2\1\0\2\2\1\0\1\2\2\0\1\2"+
+    "\1\0\1\2\1\0\1\2\1\0\1\2\1\0\1\2\1\0\2\2"+
+    "\1\0\1\2\2\0\4\2\1\0\7\2\1\0\4\2\1\0\4\2"+
+    "\1\0\1\2\1\0\12\2\1\0\21\2\5\0\3\2\1\0\5\2"+
+    "\1\0\21\2\u1144\0\ua6d7\2\51\0\u1035\2\13\0\336\2\2\0\u1682\2"+
+    "\u295e\0\u021e\2\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\u05f0\0";
 
   /** 
    * Translates characters to character classes
@@ -152,7 +216,7 @@ class _SPILexer implements FlexLexer {
   private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
 
   private static final String ZZ_ROWMAP_PACKED_0 =
-    "\0\0\0\10\0\20\0\30\0\40\0\10\0\10";
+    "\0\0\0\11\0\22\0\33\0\44\0\11\0\11";
 
   private static int [] zzUnpackRowMap() {
     int [] result = new int[7];
@@ -179,11 +243,11 @@ class _SPILexer implements FlexLexer {
 
   private static final String ZZ_TRANS_PACKED_0 =
     "\1\2\1\3\1\4\1\2\1\5\1\3\1\6\1\7"+
-    "\11\0\1\3\3\0\1\3\4\0\2\4\4\0\5\5"+
-    "\1\0\2\5";
+    "\13\0\1\3\3\0\1\3\5\0\2\4\5\0\5\5"+
+    "\1\0\3\5";
 
   private static int [] zzUnpackTrans() {
-    int [] result = new int[40];
+    int [] result = new int[45];
     int offset = 0;
     offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
     return result;
@@ -207,13 +271,10 @@ class _SPILexer implements FlexLexer {
   private static final int ZZ_UNKNOWN_ERROR = 0;
   private static final int ZZ_NO_MATCH = 1;
   private static final int ZZ_PUSHBACK_2BIG = 2;
-  private static final char[] EMPTY_BUFFER = new char[0];
-  private static final int YYEOF = -1;
-  private static java.io.Reader zzReader = null; // Fake
 
   /* error messages for the codes above */
-  private static final String ZZ_ERROR_MSG[] = {
-    "Unkown internal scanner error",
+  private static final String[] ZZ_ERROR_MSG = {
+    "Unknown internal scanner error",
     "Error: could not match input",
     "Error: pushback value was too large"
   };
@@ -245,6 +306,9 @@ class _SPILexer implements FlexLexer {
     return j;
   }
 
+  /** the input device */
+  private java.io.Reader zzReader;
+
   /** the current state of the DFA */
   private int zzState;
 
@@ -255,15 +319,9 @@ class _SPILexer implements FlexLexer {
       the source of the yytext() string */
   private CharSequence zzBuffer = "";
 
-  /** this buffer may contains the current text array to be matched when it is cheap to acquire it */
-  private char[] zzBufferArray;
-
   /** the textposition at the last accepting state */
   private int zzMarkedPos;
 
-  /** the textposition at the last state to be included in yytext */
-  private int zzPushbackPos;
-
   /** the current text position in the buffer */
   private int zzCurrentPos;
 
@@ -290,27 +348,17 @@ class _SPILexer implements FlexLexer {
     this((java.io.Reader)null);
   }
 
-  public void goTo(int offset) {
-    zzCurrentPos = zzMarkedPos = zzStartRead = offset;
-    zzPushbackPos = 0;
-    zzAtEOF = offset < zzEndRead;
-  }
-
-
-  _SPILexer(java.io.Reader in) {
-    this.zzReader = in;
-  }
 
   /**
-   * Creates a new scanner.
-   * There is also java.io.Reader version of this constructor.
+   * Creates a new scanner
    *
-   * @param   in  the java.io.Inputstream to read input from.
+   * @param   in  the java.io.Reader to read input from.
    */
-  _SPILexer(java.io.InputStream in) {
-    this(new java.io.InputStreamReader(in));
+  _SPILexer(java.io.Reader in) {
+    this.zzReader = in;
   }
 
+
   /** 
    * Unpacks the compressed character translation table.
    *
@@ -318,10 +366,10 @@ class _SPILexer implements FlexLexer {
    * @return         the unpacked character translation table
    */
   private static char [] zzUnpackCMap(String packed) {
-    char [] map = new char[0x10000];
+    char [] map = new char[0x110000];
     int i = 0;  /* index in packed string  */
     int j = 0;  /* index in unpacked array */
-    while (i < 1212) {
+    while (i < 2454) {
       int  count = packed.charAt(i++);
       char value = packed.charAt(i++);
       do map[j++] = value; while (--count > 0);
@@ -329,19 +377,17 @@ class _SPILexer implements FlexLexer {
     return map;
   }
 
-  public final int getTokenStart(){
+  public final int getTokenStart() {
     return zzStartRead;
   }
 
-  public final int getTokenEnd(){
+  public final int getTokenEnd() {
     return getTokenStart() + yylength();
   }
 
-  public void reset(CharSequence buffer, int start, int end,int initialState){
+  public void reset(CharSequence buffer, int start, int end, int initialState) {
     zzBuffer = buffer;
-    zzBufferArray = com.intellij.util.text.CharArrayUtil.fromSequenceWithoutCopying(buffer);
     zzCurrentPos = zzMarkedPos = zzStartRead = start;
-    zzPushbackPos = 0;
     zzAtEOF  = false;
     zzAtBOL = true;
     zzEndRead = end;
@@ -398,7 +444,7 @@ class _SPILexer implements FlexLexer {
    * @return the character at position pos
    */
   public final char yycharat(int pos) {
-    return zzBufferArray != null ? zzBufferArray[zzStartRead+pos]:zzBuffer.charAt(zzStartRead+pos);
+    return zzBuffer.charAt(zzStartRead+pos);
   }
 
 
@@ -481,7 +527,6 @@ class _SPILexer implements FlexLexer {
     int zzMarkedPosL;
     int zzEndReadL = zzEndRead;
     CharSequence zzBufferL = zzBuffer;
-    char[] zzBufferArrayL = zzBufferArray;
     char [] zzCMapL = ZZ_CMAP;
 
     int [] zzTransL = ZZ_TRANS;
@@ -497,12 +542,20 @@ class _SPILexer implements FlexLexer {
 
       zzState = ZZ_LEXSTATE[zzLexicalState];
 
+      // set up zzAction for empty match case:
+      int zzAttributes = zzAttrL[zzState];
+      if ( (zzAttributes & 1) == 1 ) {
+        zzAction = zzState;
+      }
+
 
       zzForAction: {
         while (true) {
 
-          if (zzCurrentPosL < zzEndReadL)
-            zzInput = (zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++] : zzBufferL.charAt(zzCurrentPosL++));
+          if (zzCurrentPosL < zzEndReadL) {
+            zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL/*, zzEndReadL*/);
+            zzCurrentPosL += Character.charCount(zzInput);
+          }
           else if (zzAtEOF) {
             zzInput = YYEOF;
             break zzForAction;
@@ -522,14 +575,15 @@ class _SPILexer implements FlexLexer {
               break zzForAction;
             }
             else {
-              zzInput = (zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++] : zzBufferL.charAt(zzCurrentPosL++));
+              zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL/*, zzEndReadL*/);
+              zzCurrentPosL += Character.charCount(zzInput);
             }
           }
           int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
           if (zzNext == -1) break zzForAction;
           zzState = zzNext;
 
-          int zzAttributes = zzAttrL[zzState];
+          zzAttributes = zzAttrL[zzState];
           if ( (zzAttributes & 1) == 1 ) {
             zzAction = zzState;
             zzMarkedPosL = zzCurrentPosL;
@@ -542,38 +596,38 @@ class _SPILexer implements FlexLexer {
       // store back cached position
       zzMarkedPos = zzMarkedPosL;
 
-      switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
-        case 2: 
-          { return JavaTokenType.WHITE_SPACE;
-          }
-        case 7: break;
-        case 3: 
-          { return SPITokenType.IDENTIFIER;
-          }
-        case 8: break;
-        case 6: 
-          { return JavaTokenType.DOT;
-          }
-        case 9: break;
-        case 5: 
-          { return SPITokenType.DOLLAR;
-          }
-        case 10: break;
-        case 4: 
-          { return JavaTokenType.END_OF_LINE_COMMENT;
-          }
-        case 11: break;
-        case 1: 
-          { return JavaTokenType.BAD_CHARACTER;
-          }
-        case 12: break;
-        default:
-          if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
-            zzAtEOF = true;
-            zzDoEOF();
-            return null;
-          }
-          else {
+      if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
+        zzAtEOF = true;
+        zzDoEOF();
+        return null;
+      }
+      else {
+        switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
+          case 1: 
+            { return JavaTokenType.BAD_CHARACTER;
+            }
+          case 7: break;
+          case 2: 
+            { return JavaTokenType.WHITE_SPACE;
+            }
+          case 8: break;
+          case 3: 
+            { return SPITokenType.IDENTIFIER;
+            }
+          case 9: break;
+          case 4: 
+            { return JavaTokenType.END_OF_LINE_COMMENT;
+            }
+          case 10: break;
+          case 5: 
+            { return SPITokenType.DOLLAR;
+            }
+          case 11: break;
+          case 6: 
+            { return JavaTokenType.DOT;
+            }
+          case 12: break;
+          default:
             zzScanError(ZZ_NO_MATCH);
           }
       }
index a970b8371f0d531d392603dcb395afc93f7dfb6d..a1b709b8b6c3ee229c5519482139fd7b43083fad 100644 (file)
@@ -454,60 +454,67 @@ public class ExternalAnnotationsManagerImpl extends ReadableExternalAnnotationsM
     if (!element.isPhysical()) return AnnotationPlace.IN_CODE; //element just created
     if (!element.getManager().isInProject(element)) return AnnotationPlace.EXTERNAL;
     final Project project = myPsiManager.getProject();
-    final PsiFile containingFile = element.getContainingFile();
-    final VirtualFile virtualFile = containingFile.getVirtualFile();
-    LOG.assertTrue(virtualFile != null);
-    final List<OrderEntry> entries = ProjectRootManager.getInstance(project).getFileIndex().getOrderEntriesForFile(virtualFile);
-    if (!entries.isEmpty()) {
-      for (OrderEntry entry : entries) {
-        if (!(entry instanceof ModuleOrderEntry)) {
-          if (AnnotationOrderRootType.getUrls(entry).length > 0) {
-            return AnnotationPlace.EXTERNAL;
+
+    //choose external place iff USE_EXTERNAL_ANNOTATIONS option is on,
+    //otherwise external annotations should be read-only
+    if (CodeStyleSettingsManager.getSettings(project).USE_EXTERNAL_ANNOTATIONS) {
+      final PsiFile containingFile = element.getContainingFile();
+      final VirtualFile virtualFile = containingFile.getVirtualFile();
+      LOG.assertTrue(virtualFile != null);
+      final List<OrderEntry> entries = ProjectRootManager.getInstance(project).getFileIndex().getOrderEntriesForFile(virtualFile);
+      if (!entries.isEmpty()) {
+        for (OrderEntry entry : entries) {
+          if (!(entry instanceof ModuleOrderEntry)) {
+            if (AnnotationOrderRootType.getUrls(entry).length > 0) {
+              return AnnotationPlace.EXTERNAL;
+            }
+            break;
           }
-          break;
         }
       }
-    }
-    final MyExternalPromptDialog dialog = ApplicationManager.getApplication().isUnitTestMode() || ApplicationManager.getApplication().isHeadlessEnvironment() ? null : new MyExternalPromptDialog(project);
-    if (dialog != null && dialog.isToBeShown()) {
-      final PsiElement highlightElement = element instanceof PsiNameIdentifierOwner
-                                           ? ((PsiNameIdentifierOwner)element).getNameIdentifier()
-                                           : element.getNavigationElement();
-      LOG.assertTrue(highlightElement != null);
-      final Editor editor = FileEditorManager.getInstance(project).getSelectedTextEditor();
-      final List<RangeHighlighter> highlighters = new ArrayList<RangeHighlighter>();
-      final boolean highlight =
+
+      final MyExternalPromptDialog dialog = ApplicationManager.getApplication().isUnitTestMode() ||
+                                            ApplicationManager.getApplication().isHeadlessEnvironment() ? null : new MyExternalPromptDialog(project);
+      if (dialog != null && dialog.isToBeShown()) {
+        final PsiElement highlightElement = element instanceof PsiNameIdentifierOwner
+                                            ? ((PsiNameIdentifierOwner)element).getNameIdentifier()
+                                            : element.getNavigationElement();
+        LOG.assertTrue(highlightElement != null);
+        final Editor editor = FileEditorManager.getInstance(project).getSelectedTextEditor();
+        final List<RangeHighlighter> highlighters = new ArrayList<RangeHighlighter>();
+        final boolean highlight =
           editor != null && editor.getDocument() == PsiDocumentManager.getInstance(project).getDocument(containingFile);
-      try {
-        if (highlight) { //do not highlight for batch inspections
-          final EditorColorsManager colorsManager = EditorColorsManager.getInstance();
-          final TextAttributes attributes = colorsManager.getGlobalScheme().getAttributes(EditorColors.SEARCH_RESULT_ATTRIBUTES);
-          final TextRange textRange = highlightElement.getTextRange();
-          HighlightManager.getInstance(project).addRangeHighlight(editor,
-                                                                textRange.getStartOffset(), textRange.getEndOffset(),
-                                                                attributes, true, highlighters);
-          final LogicalPosition logicalPosition = editor.offsetToLogicalPosition(textRange.getStartOffset());
-          editor.getScrollingModel().scrollTo(logicalPosition, ScrollType.CENTER);
-        }
+        try {
+          if (highlight) { //do not highlight for batch inspections
+            final EditorColorsManager colorsManager = EditorColorsManager.getInstance();
+            final TextAttributes attributes = colorsManager.getGlobalScheme().getAttributes(EditorColors.SEARCH_RESULT_ATTRIBUTES);
+            final TextRange textRange = highlightElement.getTextRange();
+            HighlightManager.getInstance(project).addRangeHighlight(editor,
+                                                                    textRange.getStartOffset(), textRange.getEndOffset(),
+                                                                    attributes, true, highlighters);
+            final LogicalPosition logicalPosition = editor.offsetToLogicalPosition(textRange.getStartOffset());
+            editor.getScrollingModel().scrollTo(logicalPosition, ScrollType.CENTER);
+          }
+
+          dialog.show();
+          if (dialog.getExitCode() == 2) {
+            return AnnotationPlace.EXTERNAL;
+          }
+          else if (dialog.getExitCode() == 1) {
+            return AnnotationPlace.NOWHERE;
+          }
 
-        dialog.show();
-        if (dialog.getExitCode() == 2) {
-          return AnnotationPlace.EXTERNAL;
         }
-        else if (dialog.getExitCode() == 1) {
-          return AnnotationPlace.NOWHERE;
+        finally {
+          if (highlight) {
+            HighlightManager.getInstance(project).removeSegmentHighlighter(editor, highlighters.get(0));
+          }
         }
-
       }
-      finally {
-        if (highlight) {
-          HighlightManager.getInstance(project).removeSegmentHighlighter(editor, highlighters.get(0));
-        }
+      else if (dialog != null) {
+        dialog.close(DialogWrapper.OK_EXIT_CODE);
       }
     }
-    else if (dialog != null) {
-      dialog.close(DialogWrapper.OK_EXIT_CODE);
-    }
     return AnnotationPlace.IN_CODE;
   }
 
index 383bbc77754fd0ae5d147ab26cd8b291ac8be9b6..1b03c54db43ee5b292460d20b99188e80809750e 100644 (file)
@@ -57,7 +57,7 @@ public class FileHeaderChecker {
       return null;
     }
 
-    LocalQuickFix[] fixes = createQuickFix(matcher, offsetToProperty, file.getProject());
+    LocalQuickFix[] fixes = createQuickFix(matcher, offsetToProperty, file.getProject(), onTheFly);
     String description = InspectionsBundle.message("default.file.template.description");
     return manager.createProblemDescriptor(element, description, onTheFly, fixes, ProblemHighlightType.GENERIC_ERROR_OR_WARNING);
   }
@@ -79,7 +79,10 @@ public class FileHeaderChecker {
     return properties;
   }
 
-  private static LocalQuickFix[] createQuickFix(final Matcher matcher, final TIntObjectHashMap<String> offsetToProperty, Project project) {
+  private static LocalQuickFix[] createQuickFix(final Matcher matcher,
+                                                final TIntObjectHashMap<String> offsetToProperty,
+                                                Project project,
+                                                boolean onTheFly) {
     final FileTemplate template = FileTemplateManager.getInstance(project).getPattern(FileTemplateManager.FILE_HEADER_TEMPLATE_NAME);
 
     ReplaceWithFileTemplateFix replaceTemplateFix = new ReplaceWithFileTemplateFix() {
@@ -112,7 +115,10 @@ public class FileHeaderChecker {
       }
     };
 
-    LocalQuickFix editFileTemplateFix = DefaultFileTemplateUsageInspection.createEditFileTemplateFix(template, replaceTemplateFix);
-    return template.isDefault() ? new LocalQuickFix[]{editFileTemplateFix} : new LocalQuickFix[]{replaceTemplateFix, editFileTemplateFix};
+    if (onTheFly) {
+      LocalQuickFix editFileTemplateFix = DefaultFileTemplateUsageInspection.createEditFileTemplateFix(template, replaceTemplateFix);
+      return template.isDefault() ? new LocalQuickFix[]{editFileTemplateFix} : new LocalQuickFix[]{replaceTemplateFix, editFileTemplateFix};
+    }
+    return template.isDefault() ? null : new LocalQuickFix[] {replaceTemplateFix};
   }
 }
index 5f0023a7d7edcc5774c9c7ff6e11e6596d4fd188..649418bf1b7d79e69945757c84277555251755e1 100644 (file)
@@ -28,8 +28,18 @@ public class JavaLineWrapPositionStrategy extends DefaultLineWrapPositionStrateg
     char charAtOffset = chars.charAt(offset);
 
     if (charAtOffset == '.') {
-      if (offset > 0 && chars.charAt(offset - 1) == '.' || offset + 1 < chars.length() && chars.charAt(offset + 1) == '.') {
-        return false;
+      if (offset > 0) {
+        char charBefore = chars.charAt(offset - 1);
+        if (charBefore == '.' || Character.isDigit(charBefore)) {
+          return false;
+        }
+      }
+
+      if (offset + 1 < chars.length()) {
+        char charAfter = chars.charAt(offset + 1);
+        if (charAfter == '.' || Character.isDigit(charAfter)) {
+          return false;
+        }
       }
     }
 
index 0bb10aa527a80cc9598d2c3b025d1a867da6afcd..ab6e361dcce1be78abb7ed1b427b23e5b06f2400 100644 (file)
@@ -31,6 +31,7 @@ import com.intellij.psi.impl.source.resolve.DefaultParameterTypeInferencePolicy;
 import com.intellij.psi.javadoc.PsiDocTag;
 import com.intellij.psi.util.PsiTreeUtil;
 import com.intellij.psi.util.PsiUtil;
+import com.intellij.psi.util.TypeConversionUtil;
 import com.intellij.refactoring.RefactoringBundle;
 import com.intellij.refactoring.util.FieldConflictsResolver;
 import com.intellij.refactoring.util.LambdaRefactoringUtil;
@@ -216,7 +217,11 @@ public class JavaIntroduceParameterMethodUsagesProcessor implements IntroducePar
     final MethodJavaDocHelper javaDocHelper = new MethodJavaDocHelper(method);
     PsiElementFactory factory = JavaPsiFacade.getInstance(data.getProject()).getElementFactory();
 
-    PsiParameter parameter = factory.createParameter(data.getParameterName(), data.getForcedType());
+    final PsiClass superClass = data.getMethodToSearchFor().getContainingClass();
+    final PsiClass containingClass = method.getContainingClass();
+    final PsiSubstitutor substitutor = superClass != null && containingClass != null ? TypeConversionUtil.getSuperClassSubstitutor(superClass, containingClass, PsiSubstitutor.EMPTY)
+                                                                                     : PsiSubstitutor.EMPTY;
+    PsiParameter parameter = factory.createParameter(data.getParameterName(), substitutor.substitute(data.getForcedType()));
     PsiUtil.setModifierProperty(parameter, PsiModifier.FINAL, data.isDeclareFinal());
 
     final PsiParameterList parameterList = method.getParameterList();
index f103485b083ee856d5ea90dc021b853a756da600..33d1146ee4298256db8c3a9b90fbc9326fe46f78 100644 (file)
@@ -24,6 +24,7 @@ import com.intellij.lang.java.JavaLanguage;
 import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.ui.Messages;
 import com.intellij.openapi.util.Key;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.*;
 import com.intellij.psi.codeStyle.JavaCodeStyleManager;
 import com.intellij.psi.javadoc.PsiDocComment;
@@ -111,8 +112,11 @@ public class JavaPushDownDelegate extends PushDownDelegate<MemberInfo, PsiMember
   @Override
   public NewSubClassData preprocessNoInheritorsFound(PsiElement sourceClass, String conflictDialogTitle) {
     final PsiClass aClass = (PsiClass)sourceClass;
-    if (aClass.isEnum() || aClass.hasModifierProperty(PsiModifier.FINAL)) {
-      if (Messages.showOkCancelDialog((aClass.isEnum() ? "Enum " + aClass.getQualifiedName() + " doesn't have constants to inline to. " : "Final class " + aClass.getQualifiedName() + "does not have inheritors. ") +
+    final PsiFile containingFile = aClass.getContainingFile();
+    final boolean defaultPackage = StringUtil.isEmptyOrSpaces(containingFile instanceof PsiClassOwner ? ((PsiClassOwner)containingFile).getPackageName() : "");
+    if (aClass.isEnum() || aClass.hasModifierProperty(PsiModifier.FINAL) || defaultPackage) {
+      if (Messages.showOkCancelDialog((aClass.isEnum() ? "Enum " + aClass.getQualifiedName() + " doesn't have constants to inline to. "
+                                                       : (defaultPackage ? "Class " : "Final class ") + aClass.getQualifiedName() + "does not have inheritors. ") +
                                       "Pushing members down will result in them being deleted. " +
                                       "Would you like to proceed?", conflictDialogTitle, Messages.getWarningIcon()) != Messages.OK) {
         return NewSubClassData.ABORT_REFACTORING;
index af6b408e30c864b6ffdc616d5674edc719b2b917..d841d31a1fc1581256202e45597030a80c0f340c 100644 (file)
@@ -17,14 +17,16 @@ package com.intellij.refactoring.memberPushDown;
 
 import com.intellij.openapi.project.Project;
 import com.intellij.psi.PsiClass;
+import com.intellij.psi.PsiElement;
 import com.intellij.psi.PsiMember;
+import com.intellij.psi.PsiMethod;
 import com.intellij.refactoring.HelpID;
 import com.intellij.refactoring.JavaRefactoringSettings;
 import com.intellij.refactoring.RefactoringBundle;
-import com.intellij.refactoring.classMembers.MemberInfoModel;
-import com.intellij.refactoring.classMembers.UsedByDependencyMemberInfoModel;
+import com.intellij.refactoring.classMembers.*;
 import com.intellij.refactoring.ui.MemberSelectionPanel;
-import com.intellij.refactoring.util.classMembers.MemberInfo;
+import com.intellij.refactoring.util.classMembers.*;
+import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
 public class PushDownDialog extends AbstractPushDownDialog<MemberInfo, PsiMember, PsiClass> {
@@ -62,9 +64,12 @@ public class PushDownDialog extends AbstractPushDownDialog<MemberInfo, PsiMember
     return HelpID.MEMBERS_PUSH_DOWN;
   }
 
-  private class MyMemberInfoModel extends UsedByDependencyMemberInfoModel<PsiMember, PsiClass, MemberInfo> {
+  private class MyMemberInfoModel extends DelegatingMemberInfoModel<PsiMember,MemberInfo> {
     public MyMemberInfoModel() {
-      super(getSourceClass());
+      super(new ANDCombinedMemberInfoModel<PsiMember, MemberInfo>(
+              new UsesDependencyMemberInfoModel<PsiMember, PsiClass, MemberInfo>(getSourceClass(), null, false),
+              new UsedByDependencyMemberInfoModel<PsiMember, PsiClass, MemberInfo>(getSourceClass()))
+      );
     }
   }
 }
index 1e41e7188ba30fff8d880eb4e0da095ae4220522..16a4d5e04387bf590206b512856104f0c5aab31e 100644 (file)
@@ -212,13 +212,15 @@ public class MoveInnerDialog extends MoveDialogBase {
         final PackageWrapper newPackage = new PackageWrapper(PsiManager.getInstance(myProject), targetName);
         final VirtualFile targetSourceRoot;
         if (contentSourceRoots.size() > 1) {
+          PsiPackage targetPackage = JavaPsiFacade.getInstance(myProject).findPackage(targetName);
           PsiDirectory initialDir = null;
-          if (oldPackage != null) {
-            final PsiDirectory[] directories = oldPackage.getDirectories();
-            final VirtualFile root = projectRootManager.getFileIndex().getContentRootForFile(psiDirectory.getVirtualFile());
+          if (targetPackage != null) {
+            final PsiDirectory[] directories = targetPackage.getDirectories();
+            final VirtualFile root = projectRootManager.getFileIndex().getSourceRootForFile(psiDirectory.getVirtualFile());
             for(PsiDirectory dir: directories) {
-              if (Comparing.equal(projectRootManager.getFileIndex().getContentRootForFile(dir.getVirtualFile()), root)) {
+              if (Comparing.equal(projectRootManager.getFileIndex().getSourceRootForFile(dir.getVirtualFile()), root)) {
                 initialDir = dir;
+                break;
               }
             }
           }
index 9a407038660dc257113370578a80d88b5a06593a..18ce275ed5e8ed02c1a854e41bc2aa5554e3cd7b 100644 (file)
@@ -27,12 +27,6 @@ import com.intellij.lexer.FlexLexer;
   public _SPILexer() {
     this((java.io.Reader)null);
   }
-
-  public void goTo(int offset) {
-    zzCurrentPos = zzMarkedPos = zzStartRead = offset;
-    zzPushbackPos = 0;
-    zzAtEOF = offset < zzEndRead;
-  }
 %}
 
 %unicode
index 63c6a2800172a9a4d055696a131cfa5a63f94ac7..1b73af8d347e60878dc832328d67e28ad814c70b 100644 (file)
@@ -109,8 +109,11 @@ public class JavaClassInheritorsSearcher extends QueryExecutorBase<PsiClass, Cla
     Iterable<PsiClass> cached = CACHE.get(baseClass);
     if (cached == null) {
       cached = computeAllSubClasses(project, baseClass); // it's almost empty now, no big deal
-      // make sure concurrent calls of this method always return the same collection to avoid expensive duplicate work
-      cached = ConcurrencyUtil.cacheOrGet(CACHE, baseClass, cached);
+      // for non-physical elements ignore the cache completely because non-physical elements created so often/unpredictably so I can't figure out when to clear caches in this case
+      if (ApplicationManager.getApplication().runReadAction((Computable<Boolean>)baseClass::isPhysical)) {
+        // make sure concurrent calls of this method always return the same collection to avoid expensive duplicate work
+        cached = ConcurrencyUtil.cacheOrGet(CACHE, baseClass, cached);
+      }
     }
     return cached;
   }
index 4988123a3dbfaf7f6598b0a7f853d4ddfcf6ef6b..3090700ee3e8122393b9bd61ade3725ec8b5962f 100644 (file)
@@ -164,7 +164,10 @@ public class JavaDirectInheritorsSearcher implements QueryExecutor<PsiClass, Dir
       return Pair.create(Collections.emptyList(), new AtomicIntegerArray(0));
     }
     Pair<List<PsiClass>, AtomicIntegerArray> pair = calculateDirectSubClasses(project, baseClass, baseClassName);
-    HighlightingCaches.getInstance(project).DIRECT_SUB_CLASSES.put(baseClass, pair);
+    // for non-physical elements ignore the cache completely because non-physical elements created so often/unpredictably so I can't figure out when to clear caches in this case
+    if (ApplicationManager.getApplication().runReadAction((Computable<Boolean>)baseClass::isPhysical)) {
+      HighlightingCaches.getInstance(project).DIRECT_SUB_CLASSES.put(baseClass, pair);
+    }
     return pair;
   }
 
index c8dd2eb2483f9b160123ae6089e0a533e071ce88..7455360e36e7ef5196be4264a936ab556d3dfc77 100644 (file)
@@ -57,7 +57,10 @@ public class JavaOverridingMethodsSearcher implements QueryExecutor<PsiMethod, O
     Iterable<PsiMethod> cached = HighlightingCaches.getInstance(project).OVERRIDING_METHODS.get(method);
     if (cached == null) {
       cached = compute(method, project);
-      HighlightingCaches.getInstance(project).OVERRIDING_METHODS.put(method, cached);
+      // for non-physical elements ignore the cache completely because non-physical elements created so often/unpredictably so I can't figure out when to clear caches in this case
+      if (ApplicationManager.getApplication().runReadAction((Computable<Boolean>)method::isPhysical)) {
+        HighlightingCaches.getInstance(project).OVERRIDING_METHODS.put(method, cached);
+      }
     }
 
     for (final PsiMethod subMethod : cached) {
index bc914f1a8cdd73d9401ceb598246c0e2bcbc470c..6986cb09a2ec91229fb980e7a3a2aec62dfb8406 100644 (file)
@@ -1,20 +1,4 @@
-/*
- * Copyright 2000-2015 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* The following code was generated by JFlex 1.4.3 on 5/15/15 11:22 AM */
+/* The following code was generated by JFlex 1.7.0-SNAPSHOT tweaked for IntelliJ platform */
 
   /* It's an automatically generated code. Do not modify it. */
 package com.intellij.lang.java.lexer;
@@ -27,26 +11,29 @@ import com.intellij.psi.tree.IElementType;
 
 /**
  * This class is a scanner generated by 
- * <a href="http://www.jflex.de/">JFlex</a> 1.4.3
- * on 5/15/15 11:22 AM from the specification file
- * <tt>C:/ws/IDEA/tools/lexer/../../community/java/java-psi-impl/src/com/intellij/lang/java/lexer/_JavaDocLexer.flex</tt>
+ * <a href="http://www.jflex.de/">JFlex</a> 1.7.0-SNAPSHOT
+ * from the specification file <tt>_JavaDocLexer.flex</tt>
  */
 class _JavaDocLexer implements FlexLexer {
+
+  /** This character denotes the end of file */
+  public static final int YYEOF = -1;
+
   /** initial size of the lookahead buffer */
   private static final int ZZ_BUFFERSIZE = 16384;
 
   /** lexical states */
-  public static final int CODE_TAG = 18;
-  public static final int INLINE_TAG_NAME = 16;
-  public static final int PARAM_TAG_SPACE = 8;
-  public static final int COMMENT_DATA = 4;
-  public static final int DOC_TAG_VALUE = 10;
-  public static final int CODE_TAG_SPACE = 20;
+  public static final int YYINITIAL = 0;
   public static final int COMMENT_DATA_START = 2;
+  public static final int COMMENT_DATA = 4;
   public static final int TAG_DOC_SPACE = 6;
-  public static final int YYINITIAL = 0;
+  public static final int PARAM_TAG_SPACE = 8;
+  public static final int DOC_TAG_VALUE = 10;
   public static final int DOC_TAG_VALUE_IN_PAREN = 12;
   public static final int DOC_TAG_VALUE_IN_LTGT = 14;
+  public static final int INLINE_TAG_NAME = 16;
+  public static final int CODE_TAG = 18;
+  public static final int CODE_TAG_SPACE = 20;
 
   /**
    * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
@@ -63,90 +50,114 @@ class _JavaDocLexer implements FlexLexer {
    * Translates characters to character classes
    */
   private static final String ZZ_CMAP_PACKED = 
-    "\11\0\1\2\1\35\1\0\1\2\1\1\22\0\1\2\2\0\1\14"+
+    "\11\0\1\2\1\1\1\35\1\36\1\1\22\0\1\2\2\0\1\14"+
     "\1\4\3\0\1\12\1\13\1\10\1\0\1\15\1\5\1\3\1\7"+
     "\12\3\1\5\1\0\1\23\1\0\1\24\1\0\1\16\32\4\1\11"+
     "\1\0\1\11\1\0\1\4\1\0\1\20\1\4\1\26\1\30\1\31"+
     "\3\4\1\33\2\4\1\32\1\22\1\4\1\27\1\17\1\4\1\21"+
-    "\1\4\1\34\6\4\1\25\1\0\1\6\44\0\4\4\4\0\1\4"+
-    "\12\0\1\4\4\0\1\4\5\0\27\4\1\0\37\4\1\0\u01ca\4"+
-    "\4\0\14\4\16\0\5\4\7\0\1\4\1\0\1\4\201\0\5\4"+
-    "\1\0\2\4\2\0\4\4\10\0\1\4\1\0\3\4\1\0\1\4"+
-    "\1\0\24\4\1\0\123\4\1\0\213\4\10\0\236\4\11\0\46\4"+
-    "\2\0\1\4\7\0\47\4\7\0\1\4\100\0\33\4\5\0\3\4"+
-    "\30\0\1\4\24\0\53\4\43\0\2\4\1\0\143\4\1\0\1\4"+
-    "\17\0\2\4\7\0\2\4\12\0\3\4\2\0\1\4\20\0\1\4"+
-    "\1\0\36\4\35\0\131\4\13\0\1\4\30\0\41\4\11\0\2\4"+
-    "\4\0\1\4\5\0\26\4\4\0\1\4\11\0\1\4\3\0\1\4"+
-    "\27\0\31\4\107\0\1\4\1\0\13\4\127\0\66\4\3\0\1\4"+
-    "\22\0\1\4\7\0\12\4\17\0\7\4\1\0\7\4\5\0\10\4"+
-    "\2\0\2\4\2\0\26\4\1\0\7\4\1\0\1\4\3\0\4\4"+
-    "\3\0\1\4\20\0\1\4\15\0\2\4\1\0\3\4\16\0\4\4"+
-    "\7\0\1\4\11\0\6\4\4\0\2\4\2\0\26\4\1\0\7\4"+
-    "\1\0\2\4\1\0\2\4\1\0\2\4\37\0\4\4\1\0\1\4"+
-    "\23\0\3\4\20\0\11\4\1\0\3\4\1\0\26\4\1\0\7\4"+
-    "\1\0\2\4\1\0\5\4\3\0\1\4\22\0\1\4\17\0\2\4"+
-    "\17\0\1\4\23\0\10\4\2\0\2\4\2\0\26\4\1\0\7\4"+
-    "\1\0\2\4\1\0\5\4\3\0\1\4\36\0\2\4\1\0\3\4"+
-    "\17\0\1\4\21\0\1\4\1\0\6\4\3\0\3\4\1\0\4\4"+
-    "\3\0\2\4\1\0\1\4\1\0\2\4\3\0\2\4\3\0\3\4"+
-    "\3\0\14\4\26\0\1\4\50\0\1\4\13\0\10\4\1\0\3\4"+
-    "\1\0\27\4\1\0\12\4\1\0\5\4\3\0\1\4\32\0\2\4"+
-    "\6\0\2\4\43\0\10\4\1\0\3\4\1\0\27\4\1\0\12\4"+
-    "\1\0\5\4\3\0\1\4\40\0\1\4\1\0\2\4\17\0\2\4"+
-    "\22\0\10\4\1\0\3\4\1\0\51\4\2\0\1\4\20\0\1\4"+
-    "\21\0\2\4\30\0\6\4\5\0\22\4\3\0\30\4\1\0\11\4"+
-    "\1\0\1\4\2\0\7\4\72\0\60\4\1\0\2\4\13\0\10\4"+
-    "\72\0\2\4\1\0\1\4\2\0\2\4\1\0\1\4\2\0\1\4"+
-    "\6\0\4\4\1\0\7\4\1\0\3\4\1\0\1\4\1\0\1\4"+
-    "\2\0\2\4\1\0\4\4\1\0\2\4\11\0\1\4\2\0\5\4"+
-    "\1\0\1\4\25\0\4\4\40\0\1\4\77\0\10\4\1\0\44\4"+
-    "\33\0\5\4\163\0\53\4\24\0\1\4\20\0\6\4\4\0\4\4"+
-    "\3\0\1\4\3\0\2\4\7\0\3\4\4\0\15\4\14\0\1\4"+
-    "\21\0\46\4\1\0\1\4\5\0\1\4\2\0\53\4\1\0\u014d\4"+
-    "\1\0\4\4\2\0\7\4\1\0\1\4\1\0\4\4\2\0\51\4"+
-    "\1\0\4\4\2\0\41\4\1\0\4\4\2\0\7\4\1\0\1\4"+
-    "\1\0\4\4\2\0\17\4\1\0\71\4\1\0\4\4\2\0\103\4"+
-    "\45\0\20\4\20\0\125\4\14\0\u026c\4\2\0\21\4\1\0\32\4"+
-    "\5\0\113\4\3\0\3\4\17\0\15\4\1\0\4\4\16\0\22\4"+
-    "\16\0\22\4\16\0\15\4\1\0\3\4\17\0\64\4\43\0\1\4"+
-    "\3\0\2\4\103\0\130\4\10\0\51\4\1\0\1\4\5\0\106\4"+
-    "\12\0\35\4\63\0\36\4\2\0\5\4\13\0\54\4\25\0\7\4"+
-    "\70\0\27\4\11\0\65\4\122\0\1\4\135\0\57\4\21\0\7\4"+
-    "\67\0\36\4\15\0\2\4\12\0\54\4\32\0\44\4\51\0\3\4"+
-    "\12\0\44\4\153\0\4\4\1\0\4\4\3\0\2\4\11\0\300\4"+
-    "\100\0\u0116\4\2\0\6\4\2\0\46\4\2\0\6\4\2\0\10\4"+
-    "\1\0\1\4\1\0\1\4\1\0\1\4\1\0\37\4\2\0\65\4"+
-    "\1\0\7\4\1\0\1\4\3\0\3\4\1\0\7\4\3\0\4\4"+
-    "\2\0\6\4\4\0\15\4\5\0\3\4\1\0\7\4\102\0\2\4"+
-    "\23\0\1\4\34\0\1\4\15\0\1\4\20\0\15\4\3\0\33\4"+
-    "\107\0\1\4\4\0\1\4\2\0\12\4\1\0\1\4\3\0\5\4"+
-    "\6\0\1\4\1\0\1\4\1\0\1\4\1\0\4\4\1\0\13\4"+
-    "\2\0\4\4\5\0\5\4\4\0\1\4\21\0\51\4\u0a77\0\57\4"+
-    "\1\0\57\4\1\0\205\4\6\0\4\4\3\0\2\4\14\0\46\4"+
-    "\1\0\1\4\5\0\1\4\2\0\70\4\7\0\1\4\20\0\27\4"+
-    "\11\0\7\4\1\0\7\4\1\0\7\4\1\0\7\4\1\0\7\4"+
-    "\1\0\7\4\1\0\7\4\1\0\7\4\120\0\1\4\u01d5\0\3\4"+
-    "\31\0\11\4\7\0\5\4\2\0\5\4\4\0\126\4\6\0\3\4"+
-    "\1\0\132\4\1\0\4\4\5\0\51\4\3\0\136\4\21\0\33\4"+
-    "\65\0\20\4\u0200\0\u19b6\4\112\0\u51cd\4\63\0\u048d\4\103\0\56\4"+
-    "\2\0\u010d\4\3\0\20\4\12\0\2\4\24\0\57\4\20\0\31\4"+
-    "\10\0\120\4\47\0\11\4\2\0\147\4\2\0\4\4\1\0\4\4"+
-    "\14\0\13\4\115\0\12\4\1\0\3\4\1\0\4\4\1\0\27\4"+
-    "\25\0\1\4\7\0\64\4\16\0\62\4\76\0\6\4\3\0\1\4"+
-    "\16\0\34\4\12\0\27\4\31\0\35\4\7\0\57\4\34\0\1\4"+
-    "\60\0\51\4\27\0\3\4\1\0\10\4\24\0\27\4\3\0\1\4"+
-    "\5\0\60\4\1\0\1\4\3\0\2\4\2\0\5\4\2\0\1\4"+
-    "\1\0\1\4\30\0\3\4\2\0\13\4\7\0\3\4\14\0\6\4"+
-    "\2\0\6\4\2\0\6\4\11\0\7\4\1\0\7\4\221\0\43\4"+
-    "\35\0\u2ba4\4\14\0\27\4\4\0\61\4\u2104\0\u016e\4\2\0\152\4"+
-    "\46\0\7\4\14\0\5\4\5\0\1\4\1\0\12\4\1\0\15\4"+
-    "\1\0\5\4\1\0\1\4\1\0\2\4\1\0\2\4\1\0\154\4"+
-    "\41\0\u016b\4\22\0\100\4\2\0\66\4\50\0\15\4\66\0\2\4"+
-    "\30\0\3\4\31\0\1\4\6\0\5\4\1\0\207\4\7\0\1\4"+
-    "\34\0\32\4\4\0\1\4\1\0\32\4\13\0\131\4\3\0\6\4"+
-    "\2\0\6\4\2\0\6\4\2\0\3\4\3\0\2\4\3\0\2\4"+
-    "\31\0";
+    "\1\4\1\34\6\4\1\25\1\0\1\6\7\0\1\35\34\0\4\4"+
+    "\4\0\1\4\12\0\1\4\4\0\1\4\5\0\27\4\1\0\37\4"+
+    "\1\0\u01ca\4\4\0\14\4\16\0\5\4\7\0\1\4\1\0\1\4"+
+    "\201\0\5\4\1\0\2\4\2\0\4\4\10\0\1\4\1\0\3\4"+
+    "\1\0\1\4\1\0\24\4\1\0\123\4\1\0\213\4\10\0\236\4"+
+    "\11\0\46\4\2\0\1\4\7\0\47\4\7\0\1\4\100\0\33\4"+
+    "\5\0\3\4\30\0\1\4\24\0\53\4\43\0\2\4\1\0\143\4"+
+    "\1\0\1\4\17\0\2\4\7\0\2\4\12\0\3\4\2\0\1\4"+
+    "\20\0\1\4\1\0\36\4\35\0\131\4\13\0\1\4\30\0\41\4"+
+    "\11\0\2\4\4\0\1\4\5\0\26\4\4\0\1\4\11\0\1\4"+
+    "\3\0\1\4\27\0\31\4\107\0\1\4\1\0\13\4\127\0\66\4"+
+    "\3\0\1\4\22\0\1\4\7\0\12\4\17\0\7\4\1\0\7\4"+
+    "\5\0\10\4\2\0\2\4\2\0\26\4\1\0\7\4\1\0\1\4"+
+    "\3\0\4\4\3\0\1\4\20\0\1\4\15\0\2\4\1\0\3\4"+
+    "\16\0\4\4\7\0\1\4\11\0\6\4\4\0\2\4\2\0\26\4"+
+    "\1\0\7\4\1\0\2\4\1\0\2\4\1\0\2\4\37\0\4\4"+
+    "\1\0\1\4\23\0\3\4\20\0\11\4\1\0\3\4\1\0\26\4"+
+    "\1\0\7\4\1\0\2\4\1\0\5\4\3\0\1\4\22\0\1\4"+
+    "\17\0\2\4\17\0\1\4\23\0\10\4\2\0\2\4\2\0\26\4"+
+    "\1\0\7\4\1\0\2\4\1\0\5\4\3\0\1\4\36\0\2\4"+
+    "\1\0\3\4\17\0\1\4\21\0\1\4\1\0\6\4\3\0\3\4"+
+    "\1\0\4\4\3\0\2\4\1\0\1\4\1\0\2\4\3\0\2\4"+
+    "\3\0\3\4\3\0\14\4\26\0\1\4\50\0\1\4\13\0\10\4"+
+    "\1\0\3\4\1\0\27\4\1\0\12\4\1\0\5\4\3\0\1\4"+
+    "\32\0\2\4\6\0\2\4\43\0\10\4\1\0\3\4\1\0\27\4"+
+    "\1\0\12\4\1\0\5\4\3\0\1\4\40\0\1\4\1\0\2\4"+
+    "\17\0\2\4\22\0\10\4\1\0\3\4\1\0\51\4\2\0\1\4"+
+    "\20\0\1\4\21\0\2\4\30\0\6\4\5\0\22\4\3\0\30\4"+
+    "\1\0\11\4\1\0\1\4\2\0\7\4\72\0\60\4\1\0\2\4"+
+    "\13\0\10\4\72\0\2\4\1\0\1\4\2\0\2\4\1\0\1\4"+
+    "\2\0\1\4\6\0\4\4\1\0\7\4\1\0\3\4\1\0\1\4"+
+    "\1\0\1\4\2\0\2\4\1\0\4\4\1\0\2\4\11\0\1\4"+
+    "\2\0\5\4\1\0\1\4\25\0\4\4\40\0\1\4\77\0\10\4"+
+    "\1\0\44\4\33\0\5\4\163\0\53\4\24\0\1\4\20\0\6\4"+
+    "\4\0\4\4\3\0\1\4\3\0\2\4\7\0\3\4\4\0\15\4"+
+    "\14\0\1\4\21\0\46\4\1\0\1\4\5\0\1\4\2\0\53\4"+
+    "\1\0\u014d\4\1\0\4\4\2\0\7\4\1\0\1\4\1\0\4\4"+
+    "\2\0\51\4\1\0\4\4\2\0\41\4\1\0\4\4\2\0\7\4"+
+    "\1\0\1\4\1\0\4\4\2\0\17\4\1\0\71\4\1\0\4\4"+
+    "\2\0\103\4\45\0\20\4\20\0\125\4\14\0\u026c\4\2\0\21\4"+
+    "\1\0\32\4\5\0\113\4\3\0\3\4\17\0\15\4\1\0\4\4"+
+    "\16\0\22\4\16\0\22\4\16\0\15\4\1\0\3\4\17\0\64\4"+
+    "\43\0\1\4\3\0\2\4\103\0\130\4\10\0\51\4\1\0\1\4"+
+    "\5\0\106\4\12\0\35\4\63\0\36\4\2\0\5\4\13\0\54\4"+
+    "\25\0\7\4\70\0\27\4\11\0\65\4\122\0\1\4\135\0\57\4"+
+    "\21\0\7\4\67\0\36\4\15\0\2\4\12\0\54\4\32\0\44\4"+
+    "\51\0\3\4\12\0\44\4\153\0\4\4\1\0\4\4\3\0\2\4"+
+    "\11\0\300\4\100\0\u0116\4\2\0\6\4\2\0\46\4\2\0\6\4"+
+    "\2\0\10\4\1\0\1\4\1\0\1\4\1\0\1\4\1\0\37\4"+
+    "\2\0\65\4\1\0\7\4\1\0\1\4\3\0\3\4\1\0\7\4"+
+    "\3\0\4\4\2\0\6\4\4\0\15\4\5\0\3\4\1\0\7\4"+
+    "\53\0\1\35\1\35\25\0\2\4\23\0\1\4\34\0\1\4\15\0"+
+    "\1\4\20\0\15\4\3\0\33\4\107\0\1\4\4\0\1\4\2\0"+
+    "\12\4\1\0\1\4\3\0\5\4\6\0\1\4\1\0\1\4\1\0"+
+    "\1\4\1\0\4\4\1\0\13\4\2\0\4\4\5\0\5\4\4\0"+
+    "\1\4\21\0\51\4\u0a77\0\57\4\1\0\57\4\1\0\205\4\6\0"+
+    "\4\4\3\0\2\4\14\0\46\4\1\0\1\4\5\0\1\4\2\0"+
+    "\70\4\7\0\1\4\20\0\27\4\11\0\7\4\1\0\7\4\1\0"+
+    "\7\4\1\0\7\4\1\0\7\4\1\0\7\4\1\0\7\4\1\0"+
+    "\7\4\120\0\1\4\u01d5\0\3\4\31\0\11\4\7\0\5\4\2\0"+
+    "\5\4\4\0\126\4\6\0\3\4\1\0\132\4\1\0\4\4\5\0"+
+    "\51\4\3\0\136\4\21\0\33\4\65\0\20\4\u0200\0\u19b6\4\112\0"+
+    "\u51cd\4\63\0\u048d\4\103\0\56\4\2\0\u010d\4\3\0\20\4\12\0"+
+    "\2\4\24\0\57\4\20\0\31\4\10\0\120\4\47\0\11\4\2\0"+
+    "\147\4\2\0\4\4\1\0\4\4\14\0\13\4\115\0\12\4\1\0"+
+    "\3\4\1\0\4\4\1\0\27\4\25\0\1\4\7\0\64\4\16\0"+
+    "\62\4\76\0\6\4\3\0\1\4\16\0\34\4\12\0\27\4\31\0"+
+    "\35\4\7\0\57\4\34\0\1\4\60\0\51\4\27\0\3\4\1\0"+
+    "\10\4\24\0\27\4\3\0\1\4\5\0\60\4\1\0\1\4\3\0"+
+    "\2\4\2\0\5\4\2\0\1\4\1\0\1\4\30\0\3\4\2\0"+
+    "\13\4\7\0\3\4\14\0\6\4\2\0\6\4\2\0\6\4\11\0"+
+    "\7\4\1\0\7\4\221\0\43\4\35\0\u2ba4\4\14\0\27\4\4\0"+
+    "\61\4\u2104\0\u016e\4\2\0\152\4\46\0\7\4\14\0\5\4\5\0"+
+    "\1\4\1\0\12\4\1\0\15\4\1\0\5\4\1\0\1\4\1\0"+
+    "\2\4\1\0\2\4\1\0\154\4\41\0\u016b\4\22\0\100\4\2\0"+
+    "\66\4\50\0\15\4\66\0\2\4\30\0\3\4\31\0\1\4\6\0"+
+    "\5\4\1\0\207\4\7\0\1\4\34\0\32\4\4\0\1\4\1\0"+
+    "\32\4\13\0\131\4\3\0\6\4\2\0\6\4\2\0\6\4\2\0"+
+    "\3\4\3\0\2\4\3\0\2\4\31\0\14\4\1\0\32\4\1\0"+
+    "\23\4\1\0\2\4\1\0\17\4\2\0\16\4\42\0\173\4\105\0"+
+    "\65\4\u010b\0\35\4\3\0\61\4\57\0\37\4\21\0\33\4\65\0"+
+    "\36\4\2\0\44\4\4\0\10\4\1\0\5\4\52\0\236\4\u0362\0"+
+    "\6\4\2\0\1\4\1\0\54\4\1\0\2\4\3\0\1\4\2\0"+
+    "\27\4\252\0\26\4\12\0\32\4\106\0\70\4\6\0\2\4\100\0"+
+    "\1\4\17\0\4\4\1\0\3\4\1\0\33\4\54\0\35\4\203\0"+
+    "\66\4\12\0\26\4\12\0\23\4\215\0\111\4\u03ba\0\65\4\113\0"+
+    "\55\4\40\0\31\4\32\0\44\4\134\0\60\4\16\0\4\4\u04bb\0"+
+    "\53\4\u0955\0\u036f\4\221\0\143\4\u0b9d\0\u042f\4\u33d1\0\u0239\4\u04c7\0"+
+    "\105\4\13\0\1\4\102\0\15\4\u4060\0\2\4\u23fe\0\125\4\1\0"+
+    "\107\4\1\0\2\4\2\0\1\4\2\0\2\4\2\0\4\4\1\0"+
+    "\14\4\1\0\1\4\1\0\7\4\1\0\101\4\1\0\4\4\2\0"+
+    "\10\4\1\0\7\4\1\0\34\4\1\0\4\4\1\0\5\4\1\0"+
+    "\1\4\3\0\7\4\1\0\u0154\4\2\0\31\4\1\0\31\4\1\0"+
+    "\37\4\1\0\31\4\1\0\37\4\1\0\31\4\1\0\37\4\1\0"+
+    "\31\4\1\0\37\4\1\0\31\4\1\0\10\4\u1634\0\4\4\1\0"+
+    "\33\4\1\0\2\4\1\0\1\4\2\0\1\4\1\0\12\4\1\0"+
+    "\4\4\1\0\1\4\1\0\1\4\6\0\1\4\4\0\1\4\1\0"+
+    "\1\4\1\0\1\4\1\0\3\4\1\0\2\4\1\0\1\4\2\0"+
+    "\1\4\1\0\1\4\1\0\1\4\1\0\1\4\1\0\1\4\1\0"+
+    "\2\4\1\0\1\4\2\0\4\4\1\0\7\4\1\0\4\4\1\0"+
+    "\4\4\1\0\1\4\1\0\12\4\1\0\21\4\5\0\3\4\1\0"+
+    "\5\4\1\0\21\4\u1144\0\ua6d7\4\51\0\u1035\4\13\0\336\4\u3fe2\0"+
+    "\u021e\4\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\u05f0\0";
 
   /** 
    * Translates characters to character classes
@@ -161,8 +172,9 @@ class _JavaDocLexer implements FlexLexer {
   private static final String ZZ_ACTION_PACKED_0 =
     "\13\0\3\1\1\2\1\3\1\4\2\2\1\5\1\6"+
     "\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16"+
-    "\1\17\1\12\1\20\1\1\3\21\1\22\1\0\1\23"+
-    "\1\0\6\24\1\25\12\24\1\26\1\24\2\27\2\24";
+    "\1\17\1\12\1\20\1\1\1\21\1\22\2\21\1\0"+
+    "\1\23\1\0\6\24\1\25\12\24\1\26\1\24\2\27"+
+    "\2\24";
 
   private static int [] zzUnpackAction() {
     int [] result = new int[63];
@@ -190,14 +202,14 @@ class _JavaDocLexer implements FlexLexer {
   private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
 
   private static final String ZZ_ROWMAP_PACKED_0 =
-    "\0\0\0\36\0\74\0\132\0\170\0\226\0\264\0\322"+
-    "\0\360\0\u010e\0\u012c\0\u014a\0\u0168\0\u0186\0\u014a\0\u01a4"+
-    "\0\u014a\0\u0186\0\u01c2\0\u014a\0\u01e0\0\u01fe\0\u021c\0\u023a"+
-    "\0\u0258\0\u014a\0\u014a\0\u014a\0\u014a\0\u014a\0\u0276\0\u014a"+
-    "\0\u0294\0\u014a\0\u02b2\0\u0186\0\u02b2\0\u02d0\0\u014a\0\u0186"+
-    "\0\u02ee\0\u030c\0\u032a\0\u0348\0\u0366\0\u0384\0\u014a\0\u03a2"+
-    "\0\u03c0\0\u03de\0\u03fc\0\u041a\0\u0438\0\u0456\0\u0474\0\u0492"+
-    "\0\u04b0\0\u032a\0\u04ce\0\u02ee\0\u032a\0\u04ec\0\u050a";
+    "\0\0\0\37\0\76\0\135\0\174\0\233\0\272\0\331"+
+    "\0\370\0\u0117\0\u0136\0\u0155\0\u0174\0\u0193\0\u0155\0\u01b2"+
+    "\0\u0155\0\u0193\0\u01d1\0\u0155\0\u01f0\0\u020f\0\u022e\0\u024d"+
+    "\0\u026c\0\u0155\0\u0155\0\u0155\0\u0155\0\u0155\0\u028b\0\u0155"+
+    "\0\u02aa\0\u0155\0\u02c9\0\u02c9\0\u0193\0\u02e8\0\u0155\0\u0193"+
+    "\0\u0307\0\u0326\0\u0345\0\u0364\0\u0383\0\u03a2\0\u0155\0\u03c1"+
+    "\0\u03e0\0\u03ff\0\u041e\0\u043d\0\u045c\0\u047b\0\u049a\0\u04b9"+
+    "\0\u04d8\0\u0345\0\u04f7\0\u0307\0\u0345\0\u0516\0\u0535";
 
   private static int [] zzUnpackRowMap() {
     int [] result = new int[63];
@@ -223,48 +235,49 @@ class _JavaDocLexer implements FlexLexer {
   private static final int [] ZZ_TRANS = zzUnpackTrans();
 
   private static final String ZZ_TRANS_PACKED_0 =
-    "\7\14\1\15\1\16\25\14\1\17\2\20\3\17\1\21"+
-    "\1\17\1\22\5\17\1\23\6\17\1\24\7\17\1\20"+
-    "\1\17\1\20\1\25\3\17\1\21\1\17\1\22\14\17"+
-    "\1\24\7\17\1\20\1\14\2\26\3\14\1\21\1\14"+
-    "\1\16\24\14\1\26\1\14\2\27\5\14\1\16\24\14"+
-    "\1\27\1\17\2\30\2\31\1\17\1\21\1\17\1\22"+
-    "\1\31\1\32\1\17\1\33\1\34\1\17\4\31\1\35"+
-    "\2\17\7\31\1\30\1\14\2\20\2\31\3\14\1\16"+
-    "\1\31\1\14\1\36\1\14\1\34\1\14\4\31\3\14"+
-    "\7\31\1\20\4\14\1\37\3\14\1\16\6\14\4\37"+
-    "\1\14\1\40\1\14\7\37\11\14\1\16\5\14\1\41"+
-    "\17\14\1\42\2\43\3\42\1\21\1\42\1\44\14\42"+
-    "\1\24\7\42\1\45\1\42\2\43\3\42\1\21\1\42"+
-    "\1\44\24\42\1\45\46\0\1\46\34\0\1\47\1\50"+
-    "\26\0\2\20\32\0\1\20\1\51\2\0\14\51\1\52"+
-    "\15\51\3\0\1\25\34\0\2\26\32\0\1\26\1\0"+
-    "\2\27\32\0\1\27\1\0\2\30\32\0\1\30\3\0"+
-    "\2\31\4\0\1\31\5\0\4\31\3\0\7\31\4\0"+
-    "\3\37\11\0\4\37\3\0\7\37\1\0\1\53\2\0"+
-    "\3\53\1\0\10\53\1\54\6\53\1\55\3\53\1\56"+
-    "\2\53\2\0\2\45\32\0\1\45\10\0\1\57\25\0"+
-    "\1\51\2\0\32\51\1\0\1\51\2\0\15\51\1\60"+
-    "\14\51\1\0\1\53\2\0\3\53\1\0\26\53\1\0"+
-    "\1\53\2\0\3\53\1\0\11\53\1\61\14\53\1\0"+
-    "\1\53\2\0\3\53\1\0\20\53\1\62\5\53\1\0"+
-    "\1\53\2\0\3\53\1\0\24\53\1\63\1\53\1\0"+
-    "\1\51\2\0\16\51\1\64\13\51\1\0\1\53\2\0"+
-    "\3\53\1\0\12\53\1\65\13\53\1\0\1\53\2\0"+
-    "\3\53\1\0\21\53\1\66\4\53\1\0\1\53\2\0"+
-    "\3\53\1\0\25\53\1\67\1\0\1\51\2\0\15\51"+
-    "\1\70\14\51\1\0\1\53\2\0\3\53\1\0\11\53"+
-    "\1\71\14\53\1\0\1\53\2\0\3\53\1\0\22\53"+
-    "\1\72\3\53\1\0\1\53\2\0\3\53\1\0\22\53"+
-    "\1\73\3\53\1\0\1\51\2\0\17\51\1\74\12\51"+
-    "\1\0\1\53\2\0\3\53\1\0\13\53\1\75\12\53"+
-    "\1\0\1\53\2\0\3\53\1\0\12\53\1\76\13\53"+
-    "\1\0\1\53\2\0\3\53\1\0\11\53\1\77\14\53"+
-    "\1\0\1\53\2\0\3\53\1\0\23\53\1\72\2\53"+
-    "\1\0";
+    "\7\14\1\15\1\16\26\14\1\17\2\20\3\17\1\21"+
+    "\1\17\1\22\5\17\1\23\6\17\1\24\7\17\1\14"+
+    "\1\20\1\17\1\20\1\25\3\17\1\21\1\17\1\22"+
+    "\14\17\1\24\7\17\1\14\1\25\1\14\2\26\3\14"+
+    "\1\21\1\14\1\16\25\14\1\26\1\14\2\27\5\14"+
+    "\1\16\25\14\1\27\1\17\2\30\2\31\1\17\1\21"+
+    "\1\17\1\22\1\31\1\32\1\17\1\33\1\34\1\17"+
+    "\4\31\1\35\2\17\7\31\1\14\1\30\1\14\2\20"+
+    "\2\31\3\14\1\16\1\31\1\14\1\36\1\14\1\34"+
+    "\1\14\4\31\3\14\7\31\1\14\1\20\4\14\1\37"+
+    "\3\14\1\16\6\14\4\37\1\14\1\40\1\14\7\37"+
+    "\12\14\1\16\5\14\1\41\20\14\1\42\1\43\1\44"+
+    "\3\42\1\21\1\42\1\45\14\42\1\24\7\42\1\14"+
+    "\1\43\1\42\1\43\1\44\3\42\1\21\1\42\1\45"+
+    "\24\42\1\14\1\43\47\0\1\46\35\0\1\47\1\50"+
+    "\27\0\2\20\33\0\1\20\1\51\2\0\14\51\1\52"+
+    "\16\51\3\0\1\25\33\0\1\25\1\0\2\26\33\0"+
+    "\1\26\1\0\2\27\33\0\1\27\1\0\2\30\33\0"+
+    "\1\30\3\0\2\31\4\0\1\31\5\0\4\31\3\0"+
+    "\7\31\5\0\3\37\11\0\4\37\3\0\7\37\2\0"+
+    "\1\53\2\0\3\53\1\0\10\53\1\54\6\53\1\55"+
+    "\3\53\1\56\3\53\2\0\2\43\33\0\1\43\10\0"+
+    "\1\57\26\0\1\51\2\0\33\51\1\0\1\51\2\0"+
+    "\15\51\1\60\15\51\1\0\1\53\2\0\3\53\1\0"+
+    "\27\53\1\0\1\53\2\0\3\53\1\0\11\53\1\61"+
+    "\15\53\1\0\1\53\2\0\3\53\1\0\20\53\1\62"+
+    "\6\53\1\0\1\53\2\0\3\53\1\0\24\53\1\63"+
+    "\2\53\1\0\1\51\2\0\16\51\1\64\14\51\1\0"+
+    "\1\53\2\0\3\53\1\0\12\53\1\65\14\53\1\0"+
+    "\1\53\2\0\3\53\1\0\21\53\1\66\5\53\1\0"+
+    "\1\53\2\0\3\53\1\0\25\53\1\67\1\53\1\0"+
+    "\1\51\2\0\15\51\1\70\15\51\1\0\1\53\2\0"+
+    "\3\53\1\0\11\53\1\71\15\53\1\0\1\53\2\0"+
+    "\3\53\1\0\22\53\1\72\4\53\1\0\1\53\2\0"+
+    "\3\53\1\0\22\53\1\73\4\53\1\0\1\51\2\0"+
+    "\17\51\1\74\13\51\1\0\1\53\2\0\3\53\1\0"+
+    "\13\53\1\75\13\53\1\0\1\53\2\0\3\53\1\0"+
+    "\12\53\1\76\14\53\1\0\1\53\2\0\3\53\1\0"+
+    "\11\53\1\77\15\53\1\0\1\53\2\0\3\53\1\0"+
+    "\23\53\1\72\3\53\1\0";
 
   private static int [] zzUnpackTrans() {
-    int [] result = new int[1320];
+    int [] result = new int[1364];
     int offset = 0;
     offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
     return result;
@@ -288,13 +301,10 @@ class _JavaDocLexer implements FlexLexer {
   private static final int ZZ_UNKNOWN_ERROR = 0;
   private static final int ZZ_NO_MATCH = 1;
   private static final int ZZ_PUSHBACK_2BIG = 2;
-  private static final char[] EMPTY_BUFFER = new char[0];
-  private static final int YYEOF = -1;
-  private static java.io.Reader zzReader = null; // Fake
 
   /* error messages for the codes above */
-  private static final String ZZ_ERROR_MSG[] = {
-    "Unkown internal scanner error",
+  private static final String[] ZZ_ERROR_MSG = {
+    "Unknown internal scanner error",
     "Error: could not match input",
     "Error: pushback value was too large"
   };
@@ -328,6 +338,9 @@ class _JavaDocLexer implements FlexLexer {
     return j;
   }
 
+  /** the input device */
+  private java.io.Reader zzReader;
+
   /** the current state of the DFA */
   private int zzState;
 
@@ -338,15 +351,9 @@ class _JavaDocLexer implements FlexLexer {
       the source of the yytext() string */
   private CharSequence zzBuffer = "";
 
-  /** this buffer may contains the current text array to be matched when it is cheap to acquire it */
-  private char[] zzBufferArray;
-
   /** the textposition at the last accepting state */
   private int zzMarkedPos;
 
-  /** the textposition at the last state to be included in yytext */
-  private int zzPushbackPos;
-
   /** the current text position in the buffer */
   private int zzCurrentPos;
 
@@ -385,8 +392,7 @@ class _JavaDocLexer implements FlexLexer {
 
   public void goTo(int offset) {
     zzCurrentPos = zzMarkedPos = zzStartRead = offset;
-    zzPushbackPos = 0;
-    zzAtEOF = offset < zzEndRead;
+    zzAtEOF = false;
   }
 
 
@@ -407,10 +413,10 @@ class _JavaDocLexer implements FlexLexer {
    * @return         the unpacked character translation table
    */
   private static char [] zzUnpackCMap(String packed) {
-    char [] map = new char[0x10000];
+    char [] map = new char[0x110000];
     int i = 0;  /* index in packed string  */
     int j = 0;  /* index in unpacked array */
-    while (i < 1662) {
+    while (i < 2172) {
       int  count = packed.charAt(i++);
       char value = packed.charAt(i++);
       do map[j++] = value; while (--count > 0);
@@ -418,19 +424,17 @@ class _JavaDocLexer implements FlexLexer {
     return map;
   }
 
-  public final int getTokenStart(){
+  public final int getTokenStart() {
     return zzStartRead;
   }
 
-  public final int getTokenEnd(){
+  public final int getTokenEnd() {
     return getTokenStart() + yylength();
   }
 
-  public void reset(CharSequence buffer, int start, int end,int initialState){
+  public void reset(CharSequence buffer, int start, int end, int initialState) {
     zzBuffer = buffer;
-    zzBufferArray = com.intellij.util.text.CharArrayUtil.fromSequenceWithoutCopying(buffer);
     zzCurrentPos = zzMarkedPos = zzStartRead = start;
-    zzPushbackPos = 0;
     zzAtEOF  = false;
     zzAtBOL = true;
     zzEndRead = end;
@@ -487,7 +491,7 @@ class _JavaDocLexer implements FlexLexer {
    * @return the character at position pos
    */
   public final char yycharat(int pos) {
-    return zzBufferArray != null ? zzBufferArray[zzStartRead+pos]:zzBuffer.charAt(zzStartRead+pos);
+    return zzBuffer.charAt(zzStartRead+pos);
   }
 
 
@@ -570,7 +574,6 @@ class _JavaDocLexer implements FlexLexer {
     int zzMarkedPosL;
     int zzEndReadL = zzEndRead;
     CharSequence zzBufferL = zzBuffer;
-    char[] zzBufferArrayL = zzBufferArray;
     char [] zzCMapL = ZZ_CMAP;
 
     int [] zzTransL = ZZ_TRANS;
@@ -586,12 +589,20 @@ class _JavaDocLexer implements FlexLexer {
 
       zzState = ZZ_LEXSTATE[zzLexicalState];
 
+      // set up zzAction for empty match case:
+      int zzAttributes = zzAttrL[zzState];
+      if ( (zzAttributes & 1) == 1 ) {
+        zzAction = zzState;
+      }
+
 
       zzForAction: {
         while (true) {
 
-          if (zzCurrentPosL < zzEndReadL)
-            zzInput = (zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++] : zzBufferL.charAt(zzCurrentPosL++));
+          if (zzCurrentPosL < zzEndReadL) {
+            zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL/*, zzEndReadL*/);
+            zzCurrentPosL += Character.charCount(zzInput);
+          }
           else if (zzAtEOF) {
             zzInput = YYEOF;
             break zzForAction;
@@ -611,14 +622,15 @@ class _JavaDocLexer implements FlexLexer {
               break zzForAction;
             }
             else {
-              zzInput = (zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++] : zzBufferL.charAt(zzCurrentPosL++));
+              zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL/*, zzEndReadL*/);
+              zzCurrentPosL += Character.charCount(zzInput);
             }
           }
           int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
           if (zzNext == -1) break zzForAction;
           zzState = zzNext;
 
-          int zzAttributes = zzAttrL[zzState];
+          zzAttributes = zzAttrL[zzState];
           if ( (zzAttributes & 1) == 1 ) {
             zzAction = zzState;
             zzMarkedPosL = zzCurrentPosL;
@@ -631,89 +643,77 @@ class _JavaDocLexer implements FlexLexer {
       // store back cached position
       zzMarkedPos = zzMarkedPosL;
 
-      switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
-        case 12: 
-          { return myTokenTypes.tagValueSharp();
-          }
-        case 24: break;
-        case 17: 
-          { yybegin(CODE_TAG); return myTokenTypes.commentData();
-          }
-        case 25: break;
-        case 16: 
-          { yybegin(COMMENT_DATA); return myTokenTypes.tagValueGT();
-          }
-        case 26: break;
-        case 3: 
-          { return myTokenTypes.space();
-          }
-        case 27: break;
-        case 6: 
-          { return myTokenTypes.commentData();
-          }
-        case 28: break;
-        case 4: 
-          { yybegin(COMMENT_DATA); return myTokenTypes.inlineTagEnd();
-          }
-        case 29: break;
-        case 21: 
-          { yybegin(COMMENT_DATA_START); return myTokenTypes.commentStart();
-          }
-        case 30: break;
-        case 7: 
-          { if (checkAhead('<') || checkAhead('\"')) yybegin(COMMENT_DATA);
+      if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
+        zzAtEOF = true;
+        zzDoEOF();
+        return null;
+      }
+      else {
+        switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
+          case 1: 
+            { return myTokenTypes.badCharacter();
+            }
+          case 24: break;
+          case 2: 
+            { yybegin(COMMENT_DATA); return myTokenTypes.commentData();
+            }
+          case 25: break;
+          case 3: 
+            { return myTokenTypes.space();
+            }
+          case 26: break;
+          case 4: 
+            { yybegin(COMMENT_DATA); return myTokenTypes.inlineTagEnd();
+            }
+          case 27: break;
+          case 5: 
+            { if (checkAhead('@')) {
+    yybegin(INLINE_TAG_NAME);
+    return myTokenTypes.inlineTagStart();
+  }
+  else{
+    yybegin(COMMENT_DATA);
+    return myTokenTypes.inlineTagStart();
+  }
+            }
+          case 28: break;
+          case 6: 
+            { return myTokenTypes.commentData();
+            }
+          case 29: break;
+          case 7: 
+            { if (checkAhead('<') || checkAhead('\"')) yybegin(COMMENT_DATA);
   else if (checkAhead('\u007b') ) yybegin(COMMENT_DATA);  // lbrace - there's a error in JLex when typing lbrace directly
   else yybegin(DOC_TAG_VALUE);
   return myTokenTypes.space();
-          }
-        case 31: break;
-        case 8: 
-          { yybegin(DOC_TAG_VALUE); return myTokenTypes.space();
-          }
-        case 32: break;
-        case 10: 
-          { return myTokenTypes.tagValueToken();
-          }
-        case 33: break;
-        case 20: 
-          { yybegin(TAG_DOC_SPACE); return myTokenTypes.tagName();
-          }
-        case 34: break;
-        case 18: 
-          { yybegin(CODE_TAG);
-  return myTokenTypes.space();
-          }
-        case 35: break;
-        case 9: 
-          { yybegin(COMMENT_DATA); return myTokenTypes.space();
-          }
-        case 36: break;
-        case 23: 
-          { yybegin(PARAM_TAG_SPACE); return myTokenTypes.tagName();
-          }
-        case 37: break;
-        case 22: 
-          { yybegin(CODE_TAG_SPACE); return myTokenTypes.tagName();
-          }
-        case 38: break;
-        case 1: 
-          { return myTokenTypes.badCharacter();
-          }
-        case 39: break;
-        case 15: 
-          { yybegin(DOC_TAG_VALUE); return myTokenTypes.tagValueRParen();
-          }
-        case 40: break;
-        case 11: 
-          { yybegin(DOC_TAG_VALUE_IN_PAREN); return myTokenTypes.tagValueLParen();
-          }
-        case 41: break;
-        case 13: 
-          { return myTokenTypes.tagValueComma();
-          }
-        case 42: break;
-        case 14: 
-          { if (myJdk15Enabled) {
+            }
+          case 30: break;
+          case 8: 
+            { yybegin(DOC_TAG_VALUE); return myTokenTypes.space();
+            }
+          case 31: break;
+          case 9: 
+            { yybegin(COMMENT_DATA); return myTokenTypes.space();
+            }
+          case 32: break;
+          case 10: 
+            { return myTokenTypes.tagValueToken();
+            }
+          case 33: break;
+          case 11: 
+            { yybegin(DOC_TAG_VALUE_IN_PAREN); return myTokenTypes.tagValueLParen();
+            }
+          case 34: break;
+          case 12: 
+            { return myTokenTypes.tagValueSharp();
+            }
+          case 35: break;
+          case 13: 
+            { return myTokenTypes.tagValueComma();
+            }
+          case 36: break;
+          case 14: 
+            { if (myJdk15Enabled) {
     yybegin(DOC_TAG_VALUE_IN_LTGT);
     return myTokenTypes.tagValueLT();
   }
@@ -721,34 +721,46 @@ class _JavaDocLexer implements FlexLexer {
     yybegin(COMMENT_DATA);
     return myTokenTypes.commentData();
   }
-          }
-        case 43: break;
-        case 5: 
-          { if (checkAhead('@')) {
-    yybegin(INLINE_TAG_NAME);
-    return myTokenTypes.inlineTagStart();
-  }
-  else{
-    yybegin(COMMENT_DATA);
-    return myTokenTypes.inlineTagStart();
-  }
-          }
-        case 44: break;
-        case 2: 
-          { yybegin(COMMENT_DATA); return myTokenTypes.commentData();
-          }
-        case 45: break;
-        case 19: 
-          { return myTokenTypes.commentEnd();
-          }
-        case 46: break;
-        default:
-          if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
-            zzAtEOF = true;
-            zzDoEOF();
-            return null;
-          }
-          else {
+            }
+          case 37: break;
+          case 15: 
+            { yybegin(DOC_TAG_VALUE); return myTokenTypes.tagValueRParen();
+            }
+          case 38: break;
+          case 16: 
+            { yybegin(COMMENT_DATA); return myTokenTypes.tagValueGT();
+            }
+          case 39: break;
+          case 17: 
+            { yybegin(CODE_TAG); return myTokenTypes.commentData();
+            }
+          case 40: break;
+          case 18: 
+            { yybegin(CODE_TAG);
+  return myTokenTypes.space();
+            }
+          case 41: break;
+          case 19: 
+            { return myTokenTypes.commentEnd();
+            }
+          case 42: break;
+          case 20: 
+            { yybegin(TAG_DOC_SPACE); return myTokenTypes.tagName();
+            }
+          case 43: break;
+          case 21: 
+            { yybegin(COMMENT_DATA_START); return myTokenTypes.commentStart();
+            }
+          case 44: break;
+          case 22: 
+            { yybegin(CODE_TAG_SPACE); return myTokenTypes.tagName();
+            }
+          case 45: break;
+          case 23: 
+            { yybegin(PARAM_TAG_SPACE); return myTokenTypes.tagName();
+            }
+          case 46: break;
+          default:
             zzScanError(ZZ_NO_MATCH);
           }
       }
index 96964d61faaafa96fb31038ced787ad63eb0fdae..2f428e7faf62eb7950274c75e13d09e24a0483c3 100644 (file)
@@ -1,5 +1,7 @@
+/* The following code was generated by JFlex 1.7.0-SNAPSHOT tweaked for IntelliJ platform */
+
 /*
- * Copyright 2000-2015 JetBrains s.r.o.
+ * Copyright 2000-2013 JetBrains s.r.o.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,8 +15,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
-/* The following code was generated by JFlex 1.4.3 on 4/28/15 5:41 PM */
 package com.intellij.lang.java.lexer;
 
 import com.intellij.pom.java.LanguageLevel;
@@ -27,11 +27,14 @@ import com.intellij.lexer.FlexLexer;
 
 /**
  * This class is a scanner generated by 
- * <a href="http://www.jflex.de/">JFlex</a> 1.4.3
- * on 28.04.2015 17:41 from the specification file
- * <tt>[community/]java/java-psi-impl/src/com/intellij/lang/java/lexer/_JavaLexer.flex</tt>
+ * <a href="http://www.jflex.de/">JFlex</a> 1.7.0-SNAPSHOT
+ * from the specification file <tt>_JavaLexer.flex</tt>
  */
 class _JavaLexer implements FlexLexer {
+
+  /** This character denotes the end of file */
+  public static final int YYEOF = -1;
+
   /** initial size of the lookahead buffer */
   private static final int ZZ_BUFFERSIZE = 16384;
 
@@ -52,7 +55,7 @@ class _JavaLexer implements FlexLexer {
    * Translates characters to character classes
    */
   private static final String ZZ_CMAP_PACKED = 
-    "\11\3\1\1\1\6\1\0\1\1\1\6\16\3\4\0\1\1\1\60"+
+    "\11\3\1\1\1\6\1\104\1\1\1\6\16\3\4\0\1\1\1\60"+
     "\1\26\1\0\1\2\1\67\1\65\1\25\1\70\1\71\1\5\1\62"+
     "\1\77\1\22\1\20\1\4\1\13\11\7\1\102\1\76\1\63\1\57"+
     "\1\64\1\101\1\103\1\11\1\15\1\11\1\17\1\21\1\16\5\2"+
@@ -60,112 +63,142 @@ class _JavaLexer implements FlexLexer {
     "\1\10\1\0\1\34\1\40\1\41\1\47\1\32\1\33\1\52\1\45"+
     "\1\46\1\2\1\43\1\35\1\50\1\37\1\42\1\53\1\2\1\30"+
     "\1\36\1\27\1\31\1\54\1\55\1\51\1\44\1\56\1\72\1\61"+
-    "\1\73\1\100\41\3\2\0\4\2\4\0\1\2\2\0\1\3\7\0"+
-    "\1\2\4\0\1\2\5\0\27\2\1\0\37\2\1\0\u01ca\2\4\0"+
-    "\14\2\16\0\5\2\7\0\1\2\1\0\1\2\21\0\160\3\5\2"+
-    "\1\0\2\2\2\0\4\2\10\0\1\2\1\0\3\2\1\0\1\2"+
-    "\1\0\24\2\1\0\123\2\1\0\213\2\1\0\5\3\2\0\236\2"+
-    "\11\0\46\2\2\0\1\2\7\0\47\2\7\0\1\2\1\0\55\3"+
-    "\1\0\1\3\1\0\2\3\1\0\2\3\1\0\1\3\10\0\33\2"+
-    "\5\0\3\2\15\0\5\3\6\0\1\2\4\0\13\3\5\0\53\2"+
-    "\37\3\4\0\2\2\1\3\143\2\1\0\1\2\10\3\1\0\6\3"+
-    "\2\2\2\3\1\0\4\3\2\2\12\3\3\2\2\0\1\2\17\0"+
-    "\1\3\1\2\1\3\36\2\33\3\2\0\131\2\13\3\1\2\16\0"+
-    "\12\3\41\2\11\3\2\2\4\0\1\2\5\0\26\2\4\3\1\2"+
-    "\11\3\1\2\3\3\1\2\5\3\22\0\31\2\3\3\104\0\1\2"+
-    "\1\0\13\2\67\0\33\3\1\0\4\3\66\2\3\3\1\2\22\3"+
-    "\1\2\7\3\12\2\2\3\2\0\12\3\1\0\7\2\1\0\7\2"+
-    "\1\0\3\3\1\0\10\2\2\0\2\2\2\0\26\2\1\0\7\2"+
-    "\1\0\1\2\3\0\4\2\2\0\1\3\1\2\7\3\2\0\2\3"+
-    "\2\0\3\3\1\2\10\0\1\3\4\0\2\2\1\0\3\2\2\3"+
-    "\2\0\12\3\4\2\7\0\1\2\5\0\3\3\1\0\6\2\4\0"+
-    "\2\2\2\0\26\2\1\0\7\2\1\0\2\2\1\0\2\2\1\0"+
-    "\2\2\2\0\1\3\1\0\5\3\4\0\2\3\2\0\3\3\3\0"+
-    "\1\3\7\0\4\2\1\0\1\2\7\0\14\3\3\2\1\3\13\0"+
-    "\3\3\1\0\11\2\1\0\3\2\1\0\26\2\1\0\7\2\1\0"+
-    "\2\2\1\0\5\2\2\0\1\3\1\2\10\3\1\0\3\3\1\0"+
-    "\3\3\2\0\1\2\17\0\2\2\2\3\2\0\12\3\1\0\1\2"+
-    "\17\0\3\3\1\0\10\2\2\0\2\2\2\0\26\2\1\0\7\2"+
-    "\1\0\2\2\1\0\5\2\2\0\1\3\1\2\7\3\2\0\2\3"+
-    "\2\0\3\3\10\0\2\3\4\0\2\2\1\0\3\2\2\3\2\0"+
-    "\12\3\1\0\1\2\20\0\1\3\1\2\1\0\6\2\3\0\3\2"+
-    "\1\0\4\2\3\0\2\2\1\0\1\2\1\0\2\2\3\0\2\2"+
-    "\3\0\3\2\3\0\14\2\4\0\5\3\3\0\3\3\1\0\4\3"+
-    "\2\0\1\2\6\0\1\3\16\0\12\3\11\0\1\2\7\0\3\3"+
+    "\1\73\1\100\6\3\1\105\32\3\2\0\4\2\4\0\1\2\2\0"+
+    "\1\3\7\0\1\2\4\0\1\2\5\0\27\2\1\0\37\2\1\0"+
+    "\u01ca\2\4\0\14\2\16\0\5\2\7\0\1\2\1\0\1\2\21\0"+
+    "\160\3\5\2\1\0\2\2\2\0\4\2\10\0\1\2\1\0\3\2"+
+    "\1\0\1\2\1\0\24\2\1\0\123\2\1\0\213\2\1\0\5\3"+
+    "\2\0\236\2\11\0\46\2\2\0\1\2\7\0\47\2\7\0\1\2"+
+    "\1\0\55\3\1\0\1\3\1\0\2\3\1\0\2\3\1\0\1\3"+
+    "\10\0\33\2\5\0\3\2\15\0\5\3\6\0\1\2\4\0\13\3"+
+    "\5\0\53\2\37\3\4\0\2\2\1\3\143\2\1\0\1\2\10\3"+
+    "\1\0\6\3\2\2\2\3\1\0\4\3\2\2\12\3\3\2\2\0"+
+    "\1\2\17\0\1\3\1\2\1\3\36\2\33\3\2\0\131\2\13\3"+
+    "\1\2\16\0\12\3\41\2\11\3\2\2\4\0\1\2\5\0\26\2"+
+    "\4\3\1\2\11\3\1\2\3\3\1\2\5\3\22\0\31\2\3\3"+
+    "\104\0\1\2\1\0\13\2\67\0\33\3\1\0\4\3\66\2\3\3"+
+    "\1\2\22\3\1\2\7\3\12\2\2\3\2\0\12\3\1\0\7\2"+
+    "\1\0\7\2\1\0\3\3\1\0\10\2\2\0\2\2\2\0\26\2"+
+    "\1\0\7\2\1\0\1\2\3\0\4\2\2\0\1\3\1\2\7\3"+
+    "\2\0\2\3\2\0\3\3\1\2\10\0\1\3\4\0\2\2\1\0"+
+    "\3\2\2\3\2\0\12\3\4\2\7\0\1\2\5\0\3\3\1\0"+
+    "\6\2\4\0\2\2\2\0\26\2\1\0\7\2\1\0\2\2\1\0"+
+    "\2\2\1\0\2\2\2\0\1\3\1\0\5\3\4\0\2\3\2\0"+
+    "\3\3\3\0\1\3\7\0\4\2\1\0\1\2\7\0\14\3\3\2"+
+    "\1\3\13\0\3\3\1\0\11\2\1\0\3\2\1\0\26\2\1\0"+
+    "\7\2\1\0\2\2\1\0\5\2\2\0\1\3\1\2\10\3\1\0"+
+    "\3\3\1\0\3\3\2\0\1\2\17\0\2\2\2\3\2\0\12\3"+
+    "\1\0\1\2\17\0\3\3\1\0\10\2\2\0\2\2\2\0\26\2"+
+    "\1\0\7\2\1\0\2\2\1\0\5\2\2\0\1\3\1\2\7\3"+
+    "\2\0\2\3\2\0\3\3\10\0\2\3\4\0\2\2\1\0\3\2"+
+    "\2\3\2\0\12\3\1\0\1\2\20\0\1\3\1\2\1\0\6\2"+
+    "\3\0\3\2\1\0\4\2\3\0\2\2\1\0\1\2\1\0\2\2"+
+    "\3\0\2\2\3\0\3\2\3\0\14\2\4\0\5\3\3\0\3\3"+
+    "\1\0\4\3\2\0\1\2\6\0\1\3\16\0\12\3\11\0\1\2"+
+    "\7\0\3\3\1\0\10\2\1\0\3\2\1\0\27\2\1\0\12\2"+
+    "\1\0\5\2\3\0\1\2\7\3\1\0\3\3\1\0\4\3\7\0"+
+    "\2\3\1\0\2\2\6\0\2\2\2\3\2\0\12\3\22\0\2\3"+
     "\1\0\10\2\1\0\3\2\1\0\27\2\1\0\12\2\1\0\5\2"+
-    "\3\0\1\2\7\3\1\0\3\3\1\0\4\3\7\0\2\3\1\0"+
-    "\2\2\6\0\2\2\2\3\2\0\12\3\22\0\2\3\1\0\10\2"+
-    "\1\0\3\2\1\0\27\2\1\0\12\2\1\0\5\2\2\0\1\3"+
-    "\1\2\7\3\1\0\3\3\1\0\4\3\7\0\2\3\7\0\1\2"+
-    "\1\0\2\2\2\3\2\0\12\3\1\0\2\2\17\0\2\3\1\0"+
-    "\10\2\1\0\3\2\1\0\51\2\2\0\1\2\7\3\1\0\3\3"+
-    "\1\0\4\3\1\2\10\0\1\3\10\0\2\2\2\3\2\0\12\3"+
-    "\12\0\6\2\2\0\2\3\1\0\22\2\3\0\30\2\1\0\11\2"+
-    "\1\0\1\2\2\0\7\2\3\0\1\3\4\0\6\3\1\0\1\3"+
-    "\1\0\10\3\22\0\2\3\15\0\60\2\1\3\2\2\7\3\4\0"+
-    "\10\2\10\3\1\0\12\3\47\0\2\2\1\0\1\2\2\0\2\2"+
-    "\1\0\1\2\2\0\1\2\6\0\4\2\1\0\7\2\1\0\3\2"+
-    "\1\0\1\2\1\0\1\2\2\0\2\2\1\0\4\2\1\3\2\2"+
-    "\6\3\1\0\2\3\1\2\2\0\5\2\1\0\1\2\1\0\6\3"+
-    "\2\0\12\3\2\0\4\2\40\0\1\2\27\0\2\3\6\0\12\3"+
-    "\13\0\1\3\1\0\1\3\1\0\1\3\4\0\2\3\10\2\1\0"+
-    "\44\2\4\0\24\3\1\0\2\3\5\2\13\3\1\0\44\3\11\0"+
-    "\1\3\71\0\53\2\24\3\1\2\12\3\6\0\6\2\4\3\4\2"+
-    "\3\3\1\2\3\3\2\2\7\3\3\2\4\3\15\2\14\3\1\2"+
-    "\17\3\2\0\46\2\1\0\1\2\5\0\1\2\2\0\53\2\1\0"+
-    "\u014d\2\1\0\4\2\2\0\7\2\1\0\1\2\1\0\4\2\2\0"+
-    "\51\2\1\0\4\2\2\0\41\2\1\0\4\2\2\0\7\2\1\0"+
-    "\1\2\1\0\4\2\2\0\17\2\1\0\71\2\1\0\4\2\2\0"+
-    "\103\2\2\0\3\3\40\0\20\2\20\0\125\2\14\0\u026c\2\2\0"+
-    "\21\2\1\0\32\2\5\0\113\2\3\0\3\2\17\0\15\2\1\0"+
-    "\4\2\3\3\13\0\22\2\3\3\13\0\22\2\2\3\14\0\15\2"+
-    "\1\0\3\2\1\0\2\3\14\0\64\2\40\3\3\0\1\2\3\0"+
-    "\2\2\1\3\2\0\12\3\41\0\3\3\2\0\12\3\6\0\130\2"+
-    "\10\0\51\2\1\3\1\2\5\0\106\2\12\0\35\2\3\0\14\3"+
-    "\4\0\14\3\12\0\12\3\36\2\2\0\5\2\13\0\54\2\4\0"+
-    "\21\3\7\2\2\3\6\0\12\3\46\0\27\2\5\3\4\0\65\2"+
-    "\12\3\1\0\35\3\2\0\13\3\6\0\12\3\15\0\1\2\130\0"+
-    "\5\3\57\2\21\3\7\2\4\0\12\3\21\0\11\3\14\0\3\3"+
-    "\36\2\15\3\2\2\12\3\54\2\16\3\14\0\44\2\24\3\10\0"+
-    "\12\3\3\0\3\2\12\3\44\2\122\0\3\3\1\0\25\3\4\2"+
-    "\1\3\4\2\3\3\2\2\11\0\300\2\47\3\25\0\4\3\u0116\2"+
-    "\2\0\6\2\2\0\46\2\2\0\6\2\2\0\10\2\1\0\1\2"+
-    "\1\0\1\2\1\0\1\2\1\0\37\2\2\0\65\2\1\0\7\2"+
-    "\1\0\1\2\3\0\3\2\1\0\7\2\3\0\4\2\2\0\6\2"+
-    "\4\0\15\2\5\0\3\2\1\0\7\2\16\0\5\3\32\0\5\3"+
-    "\20\0\2\2\23\0\1\2\13\0\5\3\5\0\6\3\1\0\1\2"+
-    "\15\0\1\2\20\0\15\2\3\0\33\2\25\0\15\3\4\0\1\3"+
-    "\3\0\14\3\21\0\1\2\4\0\1\2\2\0\12\2\1\0\1\2"+
-    "\3\0\5\2\6\0\1\2\1\0\1\2\1\0\1\2\1\0\4\2"+
-    "\1\0\13\2\2\0\4\2\5\0\5\2\4\0\1\2\21\0\51\2"+
-    "\u0a77\0\57\2\1\0\57\2\1\0\205\2\6\0\4\2\3\3\2\2"+
-    "\14\0\46\2\1\0\1\2\5\0\1\2\2\0\70\2\7\0\1\2"+
-    "\17\0\1\3\27\2\11\0\7\2\1\0\7\2\1\0\7\2\1\0"+
+    "\2\0\1\3\1\2\7\3\1\0\3\3\1\0\4\3\7\0\2\3"+
+    "\7\0\1\2\1\0\2\2\2\3\2\0\12\3\1\0\2\2\17\0"+
+    "\2\3\1\0\10\2\1\0\3\2\1\0\51\2\2\0\1\2\7\3"+
+    "\1\0\3\3\1\0\4\3\1\2\10\0\1\3\10\0\2\2\2\3"+
+    "\2\0\12\3\12\0\6\2\2\0\2\3\1\0\22\2\3\0\30\2"+
+    "\1\0\11\2\1\0\1\2\2\0\7\2\3\0\1\3\4\0\6\3"+
+    "\1\0\1\3\1\0\10\3\22\0\2\3\15\0\60\2\1\3\2\2"+
+    "\7\3\4\0\10\2\10\3\1\0\12\3\47\0\2\2\1\0\1\2"+
+    "\2\0\2\2\1\0\1\2\2\0\1\2\6\0\4\2\1\0\7\2"+
+    "\1\0\3\2\1\0\1\2\1\0\1\2\2\0\2\2\1\0\4\2"+
+    "\1\3\2\2\6\3\1\0\2\3\1\2\2\0\5\2\1\0\1\2"+
+    "\1\0\6\3\2\0\12\3\2\0\4\2\40\0\1\2\27\0\2\3"+
+    "\6\0\12\3\13\0\1\3\1\0\1\3\1\0\1\3\4\0\2\3"+
+    "\10\2\1\0\44\2\4\0\24\3\1\0\2\3\5\2\13\3\1\0"+
+    "\44\3\11\0\1\3\71\0\53\2\24\3\1\2\12\3\6\0\6\2"+
+    "\4\3\4\2\3\3\1\2\3\3\2\2\7\3\3\2\4\3\15\2"+
+    "\14\3\1\2\17\3\2\0\46\2\1\0\1\2\5\0\1\2\2\0"+
+    "\53\2\1\0\u014d\2\1\0\4\2\2\0\7\2\1\0\1\2\1\0"+
+    "\4\2\2\0\51\2\1\0\4\2\2\0\41\2\1\0\4\2\2\0"+
+    "\7\2\1\0\1\2\1\0\4\2\2\0\17\2\1\0\71\2\1\0"+
+    "\4\2\2\0\103\2\2\0\3\3\40\0\20\2\20\0\125\2\14\0"+
+    "\u026c\2\2\0\21\2\1\0\32\2\5\0\113\2\3\0\3\2\17\0"+
+    "\15\2\1\0\4\2\3\3\13\0\22\2\3\3\13\0\22\2\2\3"+
+    "\14\0\15\2\1\0\3\2\1\0\2\3\14\0\64\2\40\3\3\0"+
+    "\1\2\3\0\2\2\1\3\2\0\12\3\41\0\3\3\2\0\12\3"+
+    "\6\0\130\2\10\0\51\2\1\3\1\2\5\0\106\2\12\0\35\2"+
+    "\3\0\14\3\4\0\14\3\12\0\12\3\36\2\2\0\5\2\13\0"+
+    "\54\2\4\0\21\3\7\2\2\3\6\0\12\3\46\0\27\2\5\3"+
+    "\4\0\65\2\12\3\1\0\35\3\2\0\13\3\6\0\12\3\15\0"+
+    "\1\2\130\0\5\3\57\2\21\3\7\2\4\0\12\3\21\0\11\3"+
+    "\14\0\3\3\36\2\15\3\2\2\12\3\54\2\16\3\14\0\44\2"+
+    "\24\3\10\0\12\3\3\0\3\2\12\3\44\2\122\0\3\3\1\0"+
+    "\25\3\4\2\1\3\4\2\3\3\2\2\11\0\300\2\47\3\25\0"+
+    "\4\3\u0116\2\2\0\6\2\2\0\46\2\2\0\6\2\2\0\10\2"+
+    "\1\0\1\2\1\0\1\2\1\0\1\2\1\0\37\2\2\0\65\2"+
+    "\1\0\7\2\1\0\1\2\3\0\3\2\1\0\7\2\3\0\4\2"+
+    "\2\0\6\2\4\0\15\2\5\0\3\2\1\0\7\2\16\0\5\3"+
+    "\30\0\1\104\1\104\5\3\20\0\2\2\23\0\1\2\13\0\5\3"+
+    "\5\0\6\3\1\0\1\2\15\0\1\2\20\0\15\2\3\0\33\2"+
+    "\25\0\15\3\4\0\1\3\3\0\14\3\21\0\1\2\4\0\1\2"+
+    "\2\0\12\2\1\0\1\2\3\0\5\2\6\0\1\2\1\0\1\2"+
+    "\1\0\1\2\1\0\4\2\1\0\13\2\2\0\4\2\5\0\5\2"+
+    "\4\0\1\2\21\0\51\2\u0a77\0\57\2\1\0\57\2\1\0\205\2"+
+    "\6\0\4\2\3\3\2\2\14\0\46\2\1\0\1\2\5\0\1\2"+
+    "\2\0\70\2\7\0\1\2\17\0\1\3\27\2\11\0\7\2\1\0"+
     "\7\2\1\0\7\2\1\0\7\2\1\0\7\2\1\0\7\2\1\0"+
-    "\40\3\57\0\1\2\u01d5\0\3\2\31\0\11\2\6\3\1\0\5\2"+
-    "\2\0\5\2\4\0\126\2\2\0\2\3\2\0\3\2\1\0\132\2"+
-    "\1\0\4\2\5\0\51\2\3\0\136\2\21\0\33\2\65\0\20\2"+
-    "\u0200\0\u19b6\2\112\0\u51cd\2\63\0\u048d\2\103\0\56\2\2\0\u010d\2"+
-    "\3\0\20\2\12\3\2\2\24\0\57\2\1\3\4\0\12\3\1\0"+
-    "\31\2\7\0\1\3\120\2\2\3\45\0\11\2\2\0\147\2\2\0"+
-    "\4\2\1\0\4\2\14\0\13\2\115\0\12\2\1\3\3\2\1\3"+
-    "\4\2\1\3\27\2\5\3\20\0\1\2\7\0\64\2\14\0\2\3"+
-    "\62\2\21\3\13\0\12\3\6\0\22\3\6\2\3\0\1\2\4\0"+
-    "\12\3\34\2\10\3\2\0\27\2\15\3\14\0\35\2\3\0\4\3"+
-    "\57\2\16\3\16\0\1\2\12\3\46\0\51\2\16\3\11\0\3\2"+
-    "\1\3\10\2\2\3\2\0\12\3\6\0\27\2\3\0\1\2\1\3"+
-    "\4\0\60\2\1\3\1\2\3\3\2\2\2\3\5\2\2\3\1\2"+
-    "\1\3\1\2\30\0\3\2\2\0\13\2\5\3\2\0\3\2\2\3"+
-    "\12\0\6\2\2\0\6\2\2\0\6\2\11\0\7\2\1\0\7\2"+
-    "\221\0\43\2\10\3\1\0\2\3\2\0\12\3\6\0\u2ba4\2\14\0"+
-    "\27\2\4\0\61\2\u2104\0\u016e\2\2\0\152\2\46\0\7\2\14\0"+
-    "\5\2\5\0\1\2\1\3\12\2\1\0\15\2\1\0\5\2\1\0"+
-    "\1\2\1\0\2\2\1\0\2\2\1\0\154\2\41\0\u016b\2\22\0"+
-    "\100\2\2\0\66\2\50\0\15\2\3\0\20\3\20\0\7\3\14\0"+
-    "\2\2\30\0\3\2\31\0\1\2\6\0\5\2\1\0\207\2\2\0"+
-    "\1\3\4\0\1\2\13\0\12\3\7\0\32\2\4\0\1\2\1\0"+
-    "\32\2\13\0\131\2\3\0\6\2\2\0\6\2\2\0\6\2\2\0"+
-    "\3\2\3\0\2\2\3\0\2\2\22\0\3\3\4\0";
+    "\7\2\1\0\7\2\1\0\40\3\57\0\1\2\u01d5\0\3\2\31\0"+
+    "\11\2\6\3\1\0\5\2\2\0\5\2\4\0\126\2\2\0\2\3"+
+    "\2\0\3\2\1\0\132\2\1\0\4\2\5\0\51\2\3\0\136\2"+
+    "\21\0\33\2\65\0\20\2\u0200\0\u19b6\2\112\0\u51cd\2\63\0\u048d\2"+
+    "\103\0\56\2\2\0\u010d\2\3\0\20\2\12\3\2\2\24\0\57\2"+
+    "\1\3\4\0\12\3\1\0\31\2\7\0\1\3\120\2\2\3\45\0"+
+    "\11\2\2\0\147\2\2\0\4\2\1\0\4\2\14\0\13\2\115\0"+
+    "\12\2\1\3\3\2\1\3\4\2\1\3\27\2\5\3\20\0\1\2"+
+    "\7\0\64\2\14\0\2\3\62\2\21\3\13\0\12\3\6\0\22\3"+
+    "\6\2\3\0\1\2\4\0\12\3\34\2\10\3\2\0\27\2\15\3"+
+    "\14\0\35\2\3\0\4\3\57\2\16\3\16\0\1\2\12\3\46\0"+
+    "\51\2\16\3\11\0\3\2\1\3\10\2\2\3\2\0\12\3\6\0"+
+    "\27\2\3\0\1\2\1\3\4\0\60\2\1\3\1\2\3\3\2\2"+
+    "\2\3\5\2\2\3\1\2\1\3\1\2\30\0\3\2\2\0\13\2"+
+    "\5\3\2\0\3\2\2\3\12\0\6\2\2\0\6\2\2\0\6\2"+
+    "\11\0\7\2\1\0\7\2\221\0\43\2\10\3\1\0\2\3\2\0"+
+    "\12\3\6\0\u2ba4\2\14\0\27\2\4\0\61\2\u2104\0\u016e\2\2\0"+
+    "\152\2\46\0\7\2\14\0\5\2\5\0\1\2\1\3\12\2\1\0"+
+    "\15\2\1\0\5\2\1\0\1\2\1\0\2\2\1\0\2\2\1\0"+
+    "\154\2\41\0\u016b\2\22\0\100\2\2\0\66\2\50\0\15\2\3\0"+
+    "\20\3\20\0\7\3\14\0\2\2\30\0\3\2\31\0\1\2\6\0"+
+    "\5\2\1\0\207\2\2\0\1\3\4\0\1\2\13\0\12\3\7\0"+
+    "\32\2\4\0\1\2\1\0\32\2\13\0\131\2\3\0\6\2\2\0"+
+    "\6\2\2\0\6\2\2\0\3\2\3\0\2\2\3\0\2\2\22\0"+
+    "\3\3\4\0\14\2\1\0\32\2\1\0\23\2\1\0\2\2\1\0"+
+    "\17\2\2\0\16\2\42\0\173\2\105\0\65\2\210\0\1\3\202\0"+
+    "\35\2\3\0\61\2\57\0\37\2\21\0\33\2\65\0\36\2\2\0"+
+    "\44\2\4\0\10\2\1\0\5\2\52\0\236\2\2\0\12\3\u0356\0"+
+    "\6\2\2\0\1\2\1\0\54\2\1\0\2\2\3\0\1\2\2\0"+
+    "\27\2\252\0\26\2\12\0\32\2\106\0\70\2\6\0\2\2\100\0"+
+    "\1\2\3\3\1\0\2\3\5\0\4\3\4\2\1\0\3\2\1\0"+
+    "\33\2\4\0\3\3\4\0\1\3\40\0\35\2\203\0\66\2\12\0"+
+    "\26\2\12\0\23\2\215\0\111\2\u03b7\0\3\3\65\2\17\3\37\0"+
+    "\12\3\20\0\3\3\55\2\13\3\2\0\1\3\22\0\31\2\7\0"+
+    "\12\3\6\0\3\3\44\2\16\3\1\0\12\3\100\0\3\3\60\2"+
+    "\16\3\4\2\13\0\12\3\u04a6\0\53\2\15\3\10\0\12\3\u0936\0"+
+    "\u036f\2\221\0\143\2\u0b9d\0\u042f\2\u33d1\0\u0239\2\u04c7\0\105\2\13\0"+
+    "\1\2\56\3\20\0\4\3\15\2\u4060\0\2\2\u2163\0\5\3\3\0"+
+    "\26\3\2\0\7\3\36\0\4\3\224\0\3\3\u01bb\0\125\2\1\0"+
+    "\107\2\1\0\2\2\2\0\1\2\2\0\2\2\2\0\4\2\1\0"+
+    "\14\2\1\0\1\2\1\0\7\2\1\0\101\2\1\0\4\2\2\0"+
+    "\10\2\1\0\7\2\1\0\34\2\1\0\4\2\1\0\5\2\1\0"+
+    "\1\2\3\0\7\2\1\0\u0154\2\2\0\31\2\1\0\31\2\1\0"+
+    "\37\2\1\0\31\2\1\0\37\2\1\0\31\2\1\0\37\2\1\0"+
+    "\31\2\1\0\37\2\1\0\31\2\1\0\10\2\2\0\62\3\u1600\0"+
+    "\4\2\1\0\33\2\1\0\2\2\1\0\1\2\2\0\1\2\1\0"+
+    "\12\2\1\0\4\2\1\0\1\2\1\0\1\2\6\0\1\2\4\0"+
+    "\1\2\1\0\1\2\1\0\1\2\1\0\3\2\1\0\2\2\1\0"+
+    "\1\2\2\0\1\2\1\0\1\2\1\0\1\2\1\0\1\2\1\0"+
+    "\1\2\1\0\2\2\1\0\1\2\2\0\4\2\1\0\7\2\1\0"+
+    "\4\2\1\0\4\2\1\0\1\2\1\0\12\2\1\0\21\2\5\0"+
+    "\3\2\1\0\5\2\1\0\21\2\u1144\0\ua6d7\2\51\0\u1035\2\13\0"+
+    "\336\2\u3fe2\0\u021e\2\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\u05ee\0"+
+    "\1\3\36\0\140\3\200\0\360\3\uffff\0\uffff\0\ufe12\0";
 
   /** 
    * Translates characters to character classes
@@ -227,46 +260,46 @@ class _JavaLexer implements FlexLexer {
   private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
 
   private static final String ZZ_ROWMAP_PACKED_0 =
-    "\0\0\0\104\0\210\0\314\0\u0110\0\u0154\0\u0198\0\u01dc"+
-    "\0\u0220\0\u0264\0\u02a8\0\u02ec\0\u0330\0\u0374\0\u03b8\0\u03fc"+
-    "\0\u0440\0\u0484\0\u04c8\0\u050c\0\u0550\0\u0594\0\u05d8\0\u061c"+
-    "\0\u0660\0\u06a4\0\u06e8\0\u072c\0\u0770\0\u07b4\0\u07f8\0\u083c"+
-    "\0\u0880\0\104\0\u08c4\0\u0908\0\u094c\0\104\0\104\0\104"+
-    "\0\104\0\104\0\104\0\104\0\104\0\104\0\104\0\u0990"+
-    "\0\104\0\u09d4\0\u0a18\0\104\0\104\0\104\0\104\0\104"+
-    "\0\u0a5c\0\u0aa0\0\u0ae4\0\u0b28\0\u0b6c\0\104\0\104\0\104"+
-    "\0\u0bb0\0\104\0\u0bf4\0\104\0\u0c38\0\u0c7c\0\u0cc0\0\u0d04"+
-    "\0\u0d48\0\u0d8c\0\u0dd0\0\u0e14\0\u0e58\0\u0e9c\0\u0ee0\0\u0f24"+
-    "\0\u0f68\0\u0fac\0\u0ff0\0\u1034\0\u1078\0\u10bc\0\u1100\0\u1144"+
-    "\0\u1188\0\u11cc\0\u1210\0\u1254\0\u1298\0\u12dc\0\u1320\0\u1364"+
-    "\0\314\0\u13a8\0\u13ec\0\u1430\0\u1474\0\u14b8\0\u14fc\0\u1540"+
-    "\0\u1584\0\u15c8\0\u160c\0\104\0\104\0\104\0\104\0\104"+
-    "\0\104\0\104\0\u1650\0\104\0\104\0\104\0\104\0\104"+
-    "\0\u1694\0\u16d8\0\u171c\0\u1760\0\u17a4\0\104\0\u17e8\0\u182c"+
-    "\0\314\0\u1870\0\u18b4\0\u18f8\0\u193c\0\u1980\0\u19c4\0\u1a08"+
-    "\0\u1a4c\0\314\0\u1a90\0\u1ad4\0\u1b18\0\u1b5c\0\u1ba0\0\u1be4"+
-    "\0\u1c28\0\u1c6c\0\u1cb0\0\u1cf4\0\u1d38\0\314\0\u1d7c\0\u1dc0"+
-    "\0\u1e04\0\u1e48\0\u1e8c\0\u1ed0\0\u1f14\0\u1f58\0\u1f9c\0\u1fe0"+
-    "\0\u2024\0\u2068\0\u20ac\0\u20f0\0\u2134\0\u2178\0\u21bc\0\u2200"+
-    "\0\u2244\0\u2288\0\u22cc\0\u2310\0\104\0\u2354\0\u2398\0\104"+
-    "\0\u23dc\0\314\0\u2420\0\u2464\0\314\0\u24a8\0\314\0\314"+
-    "\0\u24ec\0\u2530\0\u2574\0\u25b8\0\u25fc\0\u2640\0\314\0\u2684"+
-    "\0\u26c8\0\u270c\0\u2750\0\u2794\0\u27d8\0\314\0\u281c\0\u2860"+
-    "\0\u28a4\0\314\0\u28e8\0\314\0\u292c\0\u2970\0\u29b4\0\314"+
-    "\0\u29f8\0\u2a3c\0\u2a80\0\u2ac4\0\u2b08\0\u2b4c\0\314\0\u2b90"+
-    "\0\u2bd4\0\u2c18\0\u2c5c\0\u2ca0\0\314\0\u2ce4\0\104\0\u2d28"+
-    "\0\u2d6c\0\u2db0\0\u2df4\0\u2e38\0\314\0\314\0\u2e7c\0\u2ec0"+
-    "\0\u2f04\0\u2f48\0\u2f8c\0\314\0\u2fd0\0\314\0\u3014\0\u3058"+
-    "\0\314\0\u309c\0\314\0\314\0\u30e0\0\314\0\u3124\0\u3168"+
-    "\0\u31ac\0\u31f0\0\u3234\0\u3278\0\u32bc\0\u3300\0\u3344\0\u3388"+
-    "\0\u33cc\0\314\0\u3410\0\314\0\314\0\u3454\0\u3498\0\314"+
-    "\0\u34dc\0\u3520\0\314\0\u3564\0\314\0\314\0\u35a8\0\u35ec"+
-    "\0\u3630\0\u3674\0\u36b8\0\314\0\u36fc\0\314\0\u3740\0\u3784"+
-    "\0\314\0\u37c8\0\u380c\0\u3850\0\314\0\314\0\u3894\0\u38d8"+
-    "\0\u391c\0\314\0\u3960\0\u39a4\0\u39e8\0\u3a2c\0\314\0\u3a70"+
-    "\0\314\0\314\0\u3ab4\0\u3af8\0\314\0\314\0\u3b3c\0\314"+
-    "\0\u3b80\0\u3bc4\0\u3c08\0\u3c4c\0\314\0\314\0\u3c90\0\314"+
-    "\0\u3cd4\0\u3d18\0\314\0\u3d5c\0\314\0\314\0\u3da0\0\314";
+    "\0\0\0\106\0\214\0\322\0\u0118\0\u015e\0\u01a4\0\u01ea"+
+    "\0\u0230\0\u0276\0\u02bc\0\u0302\0\u0348\0\u038e\0\u03d4\0\u041a"+
+    "\0\u0460\0\u04a6\0\u04ec\0\u0532\0\u0578\0\u05be\0\u0604\0\u064a"+
+    "\0\u0690\0\u06d6\0\u071c\0\u0762\0\u07a8\0\u07ee\0\u0834\0\u087a"+
+    "\0\u08c0\0\106\0\u0906\0\u094c\0\u0992\0\106\0\106\0\106"+
+    "\0\106\0\106\0\106\0\106\0\106\0\106\0\106\0\u09d8"+
+    "\0\106\0\u0a1e\0\u0a64\0\106\0\106\0\106\0\106\0\106"+
+    "\0\u0aaa\0\u0af0\0\u0b36\0\u0b7c\0\u0bc2\0\106\0\106\0\106"+
+    "\0\u0c08\0\106\0\u0c4e\0\106\0\u0c94\0\u0cda\0\u0d20\0\u0d66"+
+    "\0\u0dac\0\u0df2\0\u0e38\0\u0e7e\0\u0ec4\0\u0f0a\0\u0f50\0\u0f96"+
+    "\0\u0fdc\0\u1022\0\u1068\0\u10ae\0\u10f4\0\u113a\0\u1180\0\u11c6"+
+    "\0\u120c\0\u1252\0\u1298\0\u12de\0\u1324\0\u136a\0\u13b0\0\u13f6"+
+    "\0\322\0\u143c\0\u1482\0\u14c8\0\u150e\0\u1554\0\u159a\0\u15e0"+
+    "\0\u1626\0\u166c\0\u16b2\0\106\0\106\0\106\0\106\0\106"+
+    "\0\106\0\106\0\u16f8\0\106\0\106\0\106\0\106\0\106"+
+    "\0\u173e\0\u1784\0\u17ca\0\u1810\0\u1856\0\106\0\u189c\0\u18e2"+
+    "\0\322\0\u1928\0\u196e\0\u19b4\0\u19fa\0\u1a40\0\u1a86\0\u1acc"+
+    "\0\u1b12\0\322\0\u1b58\0\u1b9e\0\u1be4\0\u1c2a\0\u1c70\0\u1cb6"+
+    "\0\u1cfc\0\u1d42\0\u1d88\0\u1dce\0\u1e14\0\322\0\u1e5a\0\u1ea0"+
+    "\0\u1ee6\0\u1f2c\0\u1f72\0\u1fb8\0\u1ffe\0\u2044\0\u208a\0\u20d0"+
+    "\0\u2116\0\u215c\0\u21a2\0\u21e8\0\u222e\0\u2274\0\u22ba\0\u2300"+
+    "\0\u2346\0\u238c\0\u23d2\0\u2418\0\106\0\u245e\0\u24a4\0\106"+
+    "\0\u24ea\0\322\0\u2530\0\u2576\0\322\0\u25bc\0\322\0\322"+
+    "\0\u2602\0\u2648\0\u268e\0\u26d4\0\u271a\0\u2760\0\322\0\u27a6"+
+    "\0\u27ec\0\u2832\0\u2878\0\u28be\0\u2904\0\322\0\u294a\0\u2990"+
+    "\0\u29d6\0\322\0\u2a1c\0\322\0\u2a62\0\u2aa8\0\u2aee\0\322"+
+    "\0\u2b34\0\u2b7a\0\u2bc0\0\u2c06\0\u2c4c\0\u2c92\0\322\0\u2cd8"+
+    "\0\u2d1e\0\u2d64\0\u2daa\0\u2df0\0\322\0\u2e36\0\106\0\u2e7c"+
+    "\0\u2ec2\0\u2f08\0\u2f4e\0\u2f94\0\322\0\322\0\u2fda\0\u3020"+
+    "\0\u3066\0\u30ac\0\u30f2\0\322\0\u3138\0\322\0\u317e\0\u31c4"+
+    "\0\322\0\u320a\0\322\0\322\0\u3250\0\322\0\u3296\0\u32dc"+
+    "\0\u3322\0\u3368\0\u33ae\0\u33f4\0\u343a\0\u3480\0\u34c6\0\u350c"+
+    "\0\u3552\0\322\0\u3598\0\322\0\322\0\u35de\0\u3624\0\322"+
+    "\0\u366a\0\u36b0\0\322\0\u36f6\0\322\0\322\0\u373c\0\u3782"+
+    "\0\u37c8\0\u380e\0\u3854\0\322\0\u389a\0\322\0\u38e0\0\u3926"+
+    "\0\322\0\u396c\0\u39b2\0\u39f8\0\322\0\322\0\u3a3e\0\u3a84"+
+    "\0\u3aca\0\322\0\u3b10\0\u3b56\0\u3b9c\0\u3be2\0\322\0\u3c28"+
+    "\0\322\0\322\0\u3c6e\0\u3cb4\0\322\0\322\0\u3cfa\0\322"+
+    "\0\u3d40\0\u3d86\0\u3dcc\0\u3e12\0\322\0\322\0\u3e58\0\322"+
+    "\0\u3e9e\0\u3ee4\0\322\0\u3f2a\0\322\0\322\0\u3f70\0\322";
 
   private static int [] zzUnpackRowMap() {
     int [] result = new int[320];
@@ -299,337 +332,385 @@ class _JavaLexer implements FlexLexer {
     "\2\4\1\31\1\32\1\33\1\34\1\4\1\35\1\36"+
     "\1\37\1\40\1\41\1\42\1\43\1\44\1\45\1\46"+
     "\1\47\1\50\1\51\1\52\1\53\1\54\1\55\1\56"+
-    "\1\57\1\60\1\61\105\0\1\3\4\0\1\3\77\0"+
+    "\1\57\1\60\1\61\111\0\1\3\4\0\1\3\101\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\30\4\31\0\1\62\1\63\51\0\1\64\103\0\1\65"+
-    "\33\0\2\7\1\0\1\66\1\7\2\0\1\67\1\70"+
-    "\1\71\1\72\10\0\1\72\1\67\1\0\1\66\11\0"+
-    "\1\70\43\0\2\7\1\0\1\66\1\7\1\73\1\74"+
+    "\30\4\26\0\1\4\4\0\1\62\1\63\51\0\1\64"+
+    "\105\0\1\65\35\0\2\7\1\0\1\66\1\7\2\0"+
     "\1\67\1\70\1\71\1\72\10\0\1\72\1\67\1\0"+
-    "\1\66\2\0\1\74\6\0\1\70\1\0\1\73\41\0"+
-    "\1\71\3\0\1\71\4\0\1\75\105\0\1\76\34\0"+
-    "\1\77\4\0\1\100\17\0\6\13\1\0\15\13\1\101"+
-    "\1\102\56\13\6\14\1\0\15\14\1\103\1\14\1\104"+
-    "\55\14\2\0\2\4\3\0\11\4\1\0\1\4\1\0"+
-    "\1\4\3\0\1\4\1\105\14\4\1\106\11\4\27\0"+
-    "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\3\4\1\107\24\4\27\0\2\4\3\0\11\4\1\0"+
-    "\1\4\1\0\1\4\3\0\6\4\1\110\1\4\1\111"+
-    "\11\4\1\112\5\4\27\0\2\4\3\0\11\4\1\0"+
+    "\1\66\11\0\1\70\45\0\2\7\1\0\1\66\1\7"+
+    "\1\73\1\74\1\67\1\70\1\71\1\72\10\0\1\72"+
+    "\1\67\1\0\1\66\2\0\1\74\6\0\1\70\1\0"+
+    "\1\73\43\0\1\71\3\0\1\71\4\0\1\75\107\0"+
+    "\1\76\34\0\1\77\4\0\1\100\21\0\6\13\1\0"+
+    "\15\13\1\101\1\102\60\13\6\14\1\0\15\14\1\103"+
+    "\1\14\1\104\57\14\2\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\1\4\1\105\14\4\1\106"+
+    "\11\4\26\0\1\4\2\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\3\4\1\107\24\4\26\0"+
+    "\1\4\2\0\2\4\3\0\11\4\1\0\1\4\1\0"+
+    "\1\4\3\0\6\4\1\110\1\4\1\111\11\4\1\112"+
+    "\5\4\26\0\1\4\2\0\2\4\3\0\11\4\1\0"+
     "\1\4\1\0\1\4\3\0\5\4\1\113\1\114\4\4"+
-    "\1\115\3\4\1\116\10\4\27\0\2\4\3\0\11\4"+
-    "\1\0\1\4\1\0\1\4\3\0\7\4\1\117\1\4"+
-    "\1\120\16\4\27\0\2\4\3\0\11\4\1\0\1\4"+
-    "\1\0\1\4\3\0\13\4\1\121\14\4\27\0\2\4"+
-    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\122"+
-    "\1\4\1\123\12\4\1\124\1\125\7\4\1\126\1\4"+
-    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
-    "\3\0\2\4\1\127\1\130\1\4\1\131\22\4\27\0"+
-    "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\1\4\1\132\11\4\1\133\1\4\1\134\12\4\27\0"+
-    "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\5\4\1\135\1\136\4\4\1\137\2\4\1\140\11\4"+
-    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
-    "\3\0\4\4\1\141\3\4\1\142\10\4\1\143\6\4"+
-    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
-    "\3\0\3\4\1\144\7\4\1\145\14\4\27\0\2\4"+
+    "\1\115\3\4\1\116\10\4\26\0\1\4\2\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\7\4"+
+    "\1\117\1\4\1\120\16\4\26\0\1\4\2\0\2\4"+
     "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\13\4"+
-    "\1\146\14\4\27\0\2\4\3\0\11\4\1\0\1\4"+
-    "\1\0\1\4\3\0\1\4\1\147\1\150\2\4\1\151"+
-    "\22\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+
-    "\1\4\3\0\13\4\1\152\14\4\27\0\2\4\3\0"+
-    "\11\4\1\0\1\4\1\0\1\4\3\0\16\4\1\153"+
-    "\11\4\104\0\1\154\103\0\1\155\103\0\1\156\1\0"+
-    "\1\157\101\0\1\160\2\0\1\161\100\0\1\162\3\0"+
-    "\1\163\77\0\1\164\5\0\1\165\75\0\1\166\103\0"+
-    "\1\167\126\0\1\170\1\0\6\62\1\0\75\62\5\171"+
-    "\1\172\76\171\7\0\2\71\2\0\1\71\2\0\1\67"+
-    "\1\70\1\0\1\72\10\0\1\72\1\67\13\0\1\70"+
-    "\43\0\2\173\2\0\1\173\2\0\1\67\1\70\2\0"+
-    "\1\173\10\0\1\67\13\0\1\70\12\0\1\173\30\0"+
-    "\3\174\1\66\1\174\1\0\3\174\1\175\1\174\10\0"+
-    "\3\174\1\66\2\0\2\174\5\0\1\174\43\0\2\74"+
-    "\1\0\1\66\1\74\21\0\1\66\66\0\1\176\63\0"+
-    "\6\13\1\0\75\13\6\14\1\0\75\14\2\0\2\4"+
-    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\2\4"+
-    "\1\177\2\4\1\200\7\4\1\201\12\4\27\0\2\4"+
+    "\1\121\14\4\26\0\1\4\2\0\2\4\3\0\11\4"+
+    "\1\0\1\4\1\0\1\4\3\0\1\122\1\4\1\123"+
+    "\12\4\1\124\1\125\7\4\1\126\1\4\26\0\1\4"+
+    "\2\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\2\4\1\127\1\130\1\4\1\131\22\4\26\0"+
+    "\1\4\2\0\2\4\3\0\11\4\1\0\1\4\1\0"+
+    "\1\4\3\0\1\4\1\132\11\4\1\133\1\4\1\134"+
+    "\12\4\26\0\1\4\2\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\5\4\1\135\1\136\4\4"+
+    "\1\137\2\4\1\140\11\4\26\0\1\4\2\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\4\4"+
+    "\1\141\3\4\1\142\10\4\1\143\6\4\26\0\1\4"+
+    "\2\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\3\4\1\144\7\4\1\145\14\4\26\0\1\4"+
+    "\2\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\13\4\1\146\14\4\26\0\1\4\2\0\2\4"+
     "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\4"+
-    "\1\202\15\4\1\203\10\4\27\0\2\4\3\0\11\4"+
-    "\1\0\1\4\1\0\1\4\3\0\1\204\27\4\27\0"+
+    "\1\147\1\150\2\4\1\151\22\4\26\0\1\4\2\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\7\4\1\205\20\4\27\0\2\4\3\0\11\4\1\0"+
-    "\1\4\1\0\1\4\3\0\2\4\1\206\25\4\27\0"+
+    "\13\4\1\152\14\4\26\0\1\4\2\0\2\4\3\0"+
+    "\11\4\1\0\1\4\1\0\1\4\3\0\16\4\1\153"+
+    "\11\4\26\0\1\4\57\0\1\154\105\0\1\155\105\0"+
+    "\1\156\1\0\1\157\103\0\1\160\2\0\1\161\102\0"+
+    "\1\162\3\0\1\163\101\0\1\164\5\0\1\165\77\0"+
+    "\1\166\105\0\1\167\130\0\1\170\3\0\6\62\1\0"+
+    "\77\62\5\171\1\172\100\171\7\0\2\71\2\0\1\71"+
+    "\2\0\1\67\1\70\1\0\1\72\10\0\1\72\1\67"+
+    "\13\0\1\70\45\0\2\173\2\0\1\173\2\0\1\67"+
+    "\1\70\2\0\1\173\10\0\1\67\13\0\1\70\12\0"+
+    "\1\173\32\0\3\174\1\66\1\174\1\0\3\174\1\175"+
+    "\1\174\10\0\3\174\1\66\2\0\2\174\5\0\1\174"+
+    "\45\0\2\74\1\0\1\66\1\74\21\0\1\66\70\0"+
+    "\1\176\65\0\6\13\1\0\77\13\6\14\1\0\77\14"+
+    "\2\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\2\4\1\177\2\4\1\200\7\4\1\201\12\4"+
+    "\26\0\1\4\2\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\1\4\1\202\15\4\1\203\10\4"+
+    "\26\0\1\4\2\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\1\204\27\4\26\0\1\4\2\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\1\207\27\4\27\0\2\4\3\0\11\4\1\0\1\4"+
-    "\1\0\1\4\3\0\6\4\1\210\21\4\27\0\2\4"+
+    "\7\4\1\205\20\4\26\0\1\4\2\0\2\4\3\0"+
+    "\11\4\1\0\1\4\1\0\1\4\3\0\2\4\1\206"+
+    "\25\4\26\0\1\4\2\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\1\207\27\4\26\0\1\4"+
+    "\2\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\6\4\1\210\21\4\26\0\1\4\2\0\2\4"+
     "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\13\4"+
-    "\1\211\14\4\27\0\2\4\3\0\11\4\1\0\1\4"+
-    "\1\0\1\4\3\0\1\4\1\212\26\4\27\0\2\4"+
-    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\10\4"+
-    "\1\213\17\4\27\0\2\4\3\0\11\4\1\0\1\4"+
-    "\1\0\1\4\3\0\7\4\1\214\20\4\27\0\2\4"+
+    "\1\211\14\4\26\0\1\4\2\0\2\4\3\0\11\4"+
+    "\1\0\1\4\1\0\1\4\3\0\1\4\1\212\26\4"+
+    "\26\0\1\4\2\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\10\4\1\213\17\4\26\0\1\4"+
+    "\2\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\7\4\1\214\20\4\26\0\1\4\2\0\2\4"+
     "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\7\4"+
-    "\1\215\20\4\27\0\2\4\3\0\11\4\1\0\1\4"+
-    "\1\0\1\4\3\0\10\4\1\216\17\4\27\0\2\4"+
-    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\4"+
-    "\1\217\3\4\1\220\22\4\27\0\2\4\3\0\11\4"+
-    "\1\0\1\4\1\0\1\4\3\0\24\4\1\221\3\4"+
-    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
-    "\3\0\10\4\1\222\17\4\27\0\2\4\3\0\11\4"+
-    "\1\0\1\4\1\0\1\4\3\0\13\4\1\223\14\4"+
-    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
-    "\3\0\17\4\1\224\10\4\27\0\2\4\3\0\11\4"+
-    "\1\0\1\4\1\0\1\4\3\0\6\4\1\225\21\4"+
-    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
-    "\3\0\26\4\1\226\1\4\27\0\2\4\3\0\11\4"+
-    "\1\0\1\4\1\0\1\4\3\0\1\227\27\4\27\0"+
+    "\1\215\20\4\26\0\1\4\2\0\2\4\3\0\11\4"+
+    "\1\0\1\4\1\0\1\4\3\0\10\4\1\216\17\4"+
+    "\26\0\1\4\2\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\1\4\1\217\3\4\1\220\22\4"+
+    "\26\0\1\4\2\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\24\4\1\221\3\4\26\0\1\4"+
+    "\2\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\10\4\1\222\17\4\26\0\1\4\2\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\13\4"+
+    "\1\223\14\4\26\0\1\4\2\0\2\4\3\0\11\4"+
+    "\1\0\1\4\1\0\1\4\3\0\17\4\1\224\10\4"+
+    "\26\0\1\4\2\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\6\4\1\225\21\4\26\0\1\4"+
+    "\2\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\26\4\1\226\1\4\26\0\1\4\2\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\227"+
+    "\27\4\26\0\1\4\2\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\3\4\1\230\24\4\26\0"+
+    "\1\4\2\0\2\4\3\0\11\4\1\0\1\4\1\0"+
+    "\1\4\3\0\13\4\1\231\14\4\26\0\1\4\2\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\3\4\1\230\24\4\27\0\2\4\3\0\11\4\1\0"+
-    "\1\4\1\0\1\4\3\0\13\4\1\231\14\4\27\0"+
+    "\1\232\27\4\26\0\1\4\2\0\2\4\3\0\11\4"+
+    "\1\0\1\4\1\0\1\4\3\0\1\233\6\4\1\234"+
+    "\20\4\26\0\1\4\2\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\5\4\1\235\22\4\26\0"+
+    "\1\4\2\0\2\4\3\0\11\4\1\0\1\4\1\0"+
+    "\1\4\3\0\10\4\1\236\17\4\26\0\1\4\2\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\1\232\27\4\27\0\2\4\3\0\11\4\1\0\1\4"+
-    "\1\0\1\4\3\0\1\233\6\4\1\234\20\4\27\0"+
+    "\5\4\1\237\22\4\26\0\1\4\2\0\2\4\3\0"+
+    "\11\4\1\0\1\4\1\0\1\4\3\0\1\240\6\4"+
+    "\1\241\20\4\26\0\1\4\2\0\2\4\3\0\11\4"+
+    "\1\0\1\4\1\0\1\4\3\0\24\4\1\242\3\4"+
+    "\26\0\1\4\2\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\4\4\1\243\23\4\26\0\1\4"+
+    "\2\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\2\4\1\244\25\4\26\0\1\4\2\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\245"+
+    "\27\4\26\0\1\4\2\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\13\4\1\246\3\4\1\247"+
+    "\10\4\26\0\1\4\2\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\11\4\1\250\16\4\26\0"+
+    "\1\4\2\0\2\4\3\0\11\4\1\0\1\4\1\0"+
+    "\1\4\3\0\12\4\1\251\15\4\26\0\1\4\2\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\5\4\1\235\22\4\27\0\2\4\3\0\11\4\1\0"+
-    "\1\4\1\0\1\4\3\0\10\4\1\236\17\4\27\0"+
+    "\6\4\1\252\10\4\1\253\10\4\26\0\1\4\2\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\5\4\1\237\22\4\27\0\2\4\3\0\11\4\1\0"+
-    "\1\4\1\0\1\4\3\0\1\240\6\4\1\241\20\4"+
-    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
-    "\3\0\24\4\1\242\3\4\27\0\2\4\3\0\11\4"+
-    "\1\0\1\4\1\0\1\4\3\0\4\4\1\243\23\4"+
-    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
-    "\3\0\2\4\1\244\25\4\27\0\2\4\3\0\11\4"+
-    "\1\0\1\4\1\0\1\4\3\0\1\245\27\4\27\0"+
+    "\17\4\1\254\10\4\26\0\1\4\57\0\1\255\26\0"+
+    "\5\171\1\256\100\171\4\257\1\260\1\172\100\257\7\0"+
+    "\2\173\2\0\1\173\2\0\1\67\1\70\13\0\1\67"+
+    "\13\0\1\70\45\0\3\174\1\66\1\174\1\0\3\174"+
+    "\1\261\1\174\1\0\1\72\6\0\3\174\1\66\2\0"+
+    "\2\174\5\0\1\174\3\0\1\72\41\0\3\261\1\0"+
+    "\1\261\1\0\3\261\1\0\1\261\10\0\3\261\3\0"+
+    "\2\261\5\0\1\261\40\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\3\4\1\262\24\4\26\0"+
+    "\1\4\2\0\2\4\3\0\11\4\1\0\1\4\1\0"+
+    "\1\4\3\0\10\4\1\263\17\4\26\0\1\4\2\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\13\4\1\246\3\4\1\247\10\4\27\0\2\4\3\0"+
-    "\11\4\1\0\1\4\1\0\1\4\3\0\11\4\1\250"+
-    "\16\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+
-    "\1\4\3\0\12\4\1\251\15\4\27\0\2\4\3\0"+
-    "\11\4\1\0\1\4\1\0\1\4\3\0\6\4\1\252"+
-    "\10\4\1\253\10\4\27\0\2\4\3\0\11\4\1\0"+
-    "\1\4\1\0\1\4\3\0\17\4\1\254\10\4\104\0"+
-    "\1\255\24\0\5\171\1\256\76\171\4\257\1\260\1\172"+
-    "\76\257\7\0\2\173\2\0\1\173\2\0\1\67\1\70"+
-    "\13\0\1\67\13\0\1\70\43\0\3\174\1\66\1\174"+
-    "\1\0\3\174\1\261\1\174\1\0\1\72\6\0\3\174"+
-    "\1\66\2\0\2\174\5\0\1\174\3\0\1\72\37\0"+
-    "\3\261\1\0\1\261\1\0\3\261\1\0\1\261\10\0"+
-    "\3\261\3\0\2\261\5\0\1\261\36\0\2\4\3\0"+
-    "\11\4\1\0\1\4\1\0\1\4\3\0\3\4\1\262"+
-    "\24\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+
-    "\1\4\3\0\10\4\1\263\17\4\27\0\2\4\3\0"+
-    "\11\4\1\0\1\4\1\0\1\4\3\0\13\4\1\264"+
-    "\14\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+
-    "\1\4\3\0\7\4\1\265\20\4\27\0\2\4\3\0"+
-    "\11\4\1\0\1\4\1\0\1\4\3\0\2\4\1\266"+
-    "\25\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+
-    "\1\4\3\0\3\4\1\267\24\4\27\0\2\4\3\0"+
-    "\11\4\1\0\1\4\1\0\1\4\3\0\21\4\1\270"+
-    "\6\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+
-    "\1\4\3\0\3\4\1\271\24\4\27\0\2\4\3\0"+
-    "\11\4\1\0\1\4\1\0\1\4\3\0\7\4\1\272"+
-    "\20\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+
-    "\1\4\3\0\5\4\1\273\22\4\27\0\2\4\3\0"+
-    "\11\4\1\0\1\4\1\0\1\4\3\0\5\4\1\274"+
-    "\22\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+
-    "\1\4\3\0\3\4\1\275\24\4\27\0\2\4\3\0"+
-    "\11\4\1\0\1\4\1\0\1\4\3\0\1\276\27\4"+
-    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
-    "\3\0\23\4\1\277\4\4\27\0\2\4\3\0\11\4"+
-    "\1\0\1\4\1\0\1\4\3\0\17\4\1\300\10\4"+
-    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
-    "\3\0\1\301\27\4\27\0\2\4\3\0\11\4\1\0"+
-    "\1\4\1\0\1\4\3\0\3\4\1\302\24\4\27\0"+
+    "\13\4\1\264\14\4\26\0\1\4\2\0\2\4\3\0"+
+    "\11\4\1\0\1\4\1\0\1\4\3\0\7\4\1\265"+
+    "\20\4\26\0\1\4\2\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\2\4\1\266\25\4\26\0"+
+    "\1\4\2\0\2\4\3\0\11\4\1\0\1\4\1\0"+
+    "\1\4\3\0\3\4\1\267\24\4\26\0\1\4\2\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\12\4\1\303\15\4\27\0\2\4\3\0\11\4\1\0"+
-    "\1\4\1\0\1\4\3\0\1\4\1\304\26\4\27\0"+
+    "\21\4\1\270\6\4\26\0\1\4\2\0\2\4\3\0"+
+    "\11\4\1\0\1\4\1\0\1\4\3\0\3\4\1\271"+
+    "\24\4\26\0\1\4\2\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\7\4\1\272\20\4\26\0"+
+    "\1\4\2\0\2\4\3\0\11\4\1\0\1\4\1\0"+
+    "\1\4\3\0\5\4\1\273\22\4\26\0\1\4\2\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\1\305\27\4\27\0\2\4\3\0\11\4\1\0\1\4"+
-    "\1\0\1\4\3\0\6\4\1\306\21\4\27\0\2\4"+
+    "\5\4\1\274\22\4\26\0\1\4\2\0\2\4\3\0"+
+    "\11\4\1\0\1\4\1\0\1\4\3\0\3\4\1\275"+
+    "\24\4\26\0\1\4\2\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\1\276\27\4\26\0\1\4"+
+    "\2\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\23\4\1\277\4\4\26\0\1\4\2\0\2\4"+
     "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\17\4"+
-    "\1\307\10\4\27\0\2\4\3\0\11\4\1\0\1\4"+
-    "\1\0\1\4\3\0\5\4\1\310\22\4\27\0\2\4"+
-    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\6\4"+
-    "\1\311\21\4\27\0\2\4\3\0\11\4\1\0\1\4"+
-    "\1\0\1\4\3\0\3\4\1\312\24\4\27\0\2\4"+
-    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\12\4"+
-    "\1\313\15\4\27\0\2\4\3\0\11\4\1\0\1\4"+
-    "\1\0\1\4\3\0\3\4\1\314\24\4\27\0\2\4"+
-    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\7\4"+
-    "\1\315\20\4\27\0\2\4\3\0\11\4\1\0\1\4"+
-    "\1\0\1\4\3\0\1\316\6\4\1\317\20\4\27\0"+
+    "\1\300\10\4\26\0\1\4\2\0\2\4\3\0\11\4"+
+    "\1\0\1\4\1\0\1\4\3\0\1\301\27\4\26\0"+
+    "\1\4\2\0\2\4\3\0\11\4\1\0\1\4\1\0"+
+    "\1\4\3\0\3\4\1\302\24\4\26\0\1\4\2\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\1\4\1\320\26\4\27\0\2\4\3\0\11\4\1\0"+
-    "\1\4\1\0\1\4\3\0\3\4\1\321\24\4\27\0"+
-    "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\1\322\27\4\27\0\2\4\3\0\11\4\1\0\1\4"+
-    "\1\0\1\4\3\0\6\4\1\323\4\4\1\324\14\4"+
-    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
-    "\3\0\5\4\1\325\22\4\27\0\2\4\3\0\11\4"+
-    "\1\0\1\4\1\0\1\4\3\0\11\4\1\326\16\4"+
-    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
-    "\3\0\13\4\1\327\14\4\27\0\2\4\3\0\11\4"+
-    "\1\0\1\4\1\0\1\4\3\0\1\330\27\4\27\0"+
+    "\12\4\1\303\15\4\26\0\1\4\2\0\2\4\3\0"+
+    "\11\4\1\0\1\4\1\0\1\4\3\0\1\4\1\304"+
+    "\26\4\26\0\1\4\2\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\1\305\27\4\26\0\1\4"+
+    "\2\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\6\4\1\306\21\4\26\0\1\4\2\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\17\4"+
+    "\1\307\10\4\26\0\1\4\2\0\2\4\3\0\11\4"+
+    "\1\0\1\4\1\0\1\4\3\0\5\4\1\310\22\4"+
+    "\26\0\1\4\2\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\6\4\1\311\21\4\26\0\1\4"+
+    "\2\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\3\4\1\312\24\4\26\0\1\4\2\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\12\4"+
+    "\1\313\15\4\26\0\1\4\2\0\2\4\3\0\11\4"+
+    "\1\0\1\4\1\0\1\4\3\0\3\4\1\314\24\4"+
+    "\26\0\1\4\2\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\7\4\1\315\20\4\26\0\1\4"+
+    "\2\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\1\316\6\4\1\317\20\4\26\0\1\4\2\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\25\4\1\331\2\4\27\0\2\4\3\0\11\4\1\0"+
-    "\1\4\1\0\1\4\3\0\6\4\1\332\21\4\27\0"+
+    "\1\4\1\320\26\4\26\0\1\4\2\0\2\4\3\0"+
+    "\11\4\1\0\1\4\1\0\1\4\3\0\3\4\1\321"+
+    "\24\4\26\0\1\4\2\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\1\322\27\4\26\0\1\4"+
+    "\2\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\6\4\1\323\4\4\1\324\14\4\26\0\1\4"+
+    "\2\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\5\4\1\325\22\4\26\0\1\4\2\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\11\4"+
+    "\1\326\16\4\26\0\1\4\2\0\2\4\3\0\11\4"+
+    "\1\0\1\4\1\0\1\4\3\0\13\4\1\327\14\4"+
+    "\26\0\1\4\2\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\1\330\27\4\26\0\1\4\2\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\14\4\1\333\13\4\27\0\2\4\3\0\11\4\1\0"+
-    "\1\4\1\0\1\4\3\0\5\4\1\334\22\4\27\0"+
+    "\25\4\1\331\2\4\26\0\1\4\2\0\2\4\3\0"+
+    "\11\4\1\0\1\4\1\0\1\4\3\0\6\4\1\332"+
+    "\21\4\26\0\1\4\2\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\14\4\1\333\13\4\26\0"+
+    "\1\4\2\0\2\4\3\0\11\4\1\0\1\4\1\0"+
+    "\1\4\3\0\5\4\1\334\22\4\26\0\1\4\2\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\20\4\1\335\7\4\27\0\2\4\3\0\11\4\1\0"+
-    "\1\4\1\0\1\4\3\0\6\4\1\336\21\4\25\0"+
-    "\4\171\1\337\1\256\76\171\5\257\1\340\76\257\7\0"+
-    "\3\261\1\0\1\261\1\0\3\261\1\0\1\261\1\0"+
-    "\1\72\6\0\3\261\3\0\2\261\5\0\1\261\3\0"+
-    "\1\72\32\0\2\4\3\0\11\4\1\0\1\4\1\0"+
-    "\1\4\3\0\7\4\1\341\20\4\27\0\2\4\3\0"+
-    "\11\4\1\0\1\4\1\0\1\4\3\0\26\4\1\342"+
-    "\1\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+
-    "\1\4\3\0\1\4\1\343\26\4\27\0\2\4\3\0"+
-    "\11\4\1\0\1\4\1\0\1\4\3\0\10\4\1\344"+
-    "\17\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+
-    "\1\4\3\0\3\4\1\345\24\4\27\0\2\4\3\0"+
-    "\11\4\1\0\1\4\1\0\1\4\3\0\1\346\27\4"+
-    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
-    "\3\0\6\4\1\347\21\4\27\0\2\4\3\0\11\4"+
-    "\1\0\1\4\1\0\1\4\3\0\1\4\1\350\26\4"+
-    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
-    "\3\0\1\4\1\351\26\4\27\0\2\4\3\0\11\4"+
-    "\1\0\1\4\1\0\1\4\3\0\12\4\1\352\15\4"+
-    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
-    "\3\0\17\4\1\353\10\4\27\0\2\4\3\0\11\4"+
-    "\1\0\1\4\1\0\1\4\3\0\1\4\1\354\26\4"+
-    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
-    "\3\0\16\4\1\355\11\4\27\0\2\4\3\0\11\4"+
-    "\1\0\1\4\1\0\1\4\3\0\1\356\27\4\27\0"+
+    "\20\4\1\335\7\4\26\0\1\4\2\0\2\4\3\0"+
+    "\11\4\1\0\1\4\1\0\1\4\3\0\6\4\1\336"+
+    "\21\4\26\0\1\4\4\171\1\337\1\256\100\171\5\257"+
+    "\1\340\100\257\7\0\3\261\1\0\1\261\1\0\3\261"+
+    "\1\0\1\261\1\0\1\72\6\0\3\261\3\0\2\261"+
+    "\5\0\1\261\3\0\1\72\34\0\2\4\3\0\11\4"+
+    "\1\0\1\4\1\0\1\4\3\0\7\4\1\341\20\4"+
+    "\26\0\1\4\2\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\26\4\1\342\1\4\26\0\1\4"+
+    "\2\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\1\4\1\343\26\4\26\0\1\4\2\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\10\4"+
+    "\1\344\17\4\26\0\1\4\2\0\2\4\3\0\11\4"+
+    "\1\0\1\4\1\0\1\4\3\0\3\4\1\345\24\4"+
+    "\26\0\1\4\2\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\1\346\27\4\26\0\1\4\2\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\12\4\1\357\15\4\27\0\2\4\3\0\11\4\1\0"+
-    "\1\4\1\0\1\4\3\0\25\4\1\360\2\4\27\0"+
+    "\6\4\1\347\21\4\26\0\1\4\2\0\2\4\3\0"+
+    "\11\4\1\0\1\4\1\0\1\4\3\0\1\4\1\350"+
+    "\26\4\26\0\1\4\2\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\1\4\1\351\26\4\26\0"+
+    "\1\4\2\0\2\4\3\0\11\4\1\0\1\4\1\0"+
+    "\1\4\3\0\12\4\1\352\15\4\26\0\1\4\2\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\14\4\1\361\13\4\27\0\2\4\3\0\11\4\1\0"+
-    "\1\4\1\0\1\4\3\0\3\4\1\362\24\4\27\0"+
+    "\17\4\1\353\10\4\26\0\1\4\2\0\2\4\3\0"+
+    "\11\4\1\0\1\4\1\0\1\4\3\0\1\4\1\354"+
+    "\26\4\26\0\1\4\2\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\16\4\1\355\11\4\26\0"+
+    "\1\4\2\0\2\4\3\0\11\4\1\0\1\4\1\0"+
+    "\1\4\3\0\1\356\27\4\26\0\1\4\2\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\12\4"+
+    "\1\357\15\4\26\0\1\4\2\0\2\4\3\0\11\4"+
+    "\1\0\1\4\1\0\1\4\3\0\25\4\1\360\2\4"+
+    "\26\0\1\4\2\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\14\4\1\361\13\4\26\0\1\4"+
+    "\2\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
<