Merge branch 'IDEA-CR-10038'
authorVladimir Krivosheev <vladimir.krivosheev@jetbrains.com>
Tue, 17 May 2016 09:12:11 +0000 (11:12 +0200)
committerVladimir Krivosheev <vladimir.krivosheev@jetbrains.com>
Tue, 17 May 2016 09:12:11 +0000 (11:12 +0200)
# Conflicts:
# platform/built-in-server/src/org/jetbrains/ide/OpenFileHttpService.java
# platform/platform-impl/src/com/intellij/ide/impl/ProjectUtil.java
# platform/util/resources/misc/registry.properties

441 files changed:
RegExpSupport/gen/org/intellij/lang/regexp/_RegExLexer.java
RegExpSupport/src/org/intellij/lang/regexp/intention/CheckRegExpForm.java
RegExpSupport/src/org/intellij/lang/regexp/regexp-lexer.flex
RegExpSupport/test/org/intellij/lang/regexp/RegExpLexerTest.java
build/conf/mac/Contents/MacOS/idea
build/scripts/download_jre.gant
build/update.sh
images/src/META-INF/ImagesPlugin.xml
images/src/org/intellij/images/editor/actions/SetBackgroundImageAction.java [new file with mode: 0644]
images/src/org/intellij/images/editor/actions/SetBackgroundImageDialog.form [new file with mode: 0644]
images/src/org/intellij/images/editor/actions/SetBackgroundImageDialog.java [new file with mode: 0644]
java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java
java/debugger/impl/src/com/intellij/debugger/engine/JVMNameUtil.java
java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/TypeEvaluator.java
java/debugger/impl/src/com/intellij/debugger/impl/GenericDebuggerRunner.java
java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/ValueDescriptorImpl.java
java/execution/openapi/src/com/intellij/execution/configurations/RemoteConnectionCreator.java [new file with mode: 0644]
java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java
java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java
java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaPsiUtil.java
java/java-analysis-impl/src/com/intellij/codeInspection/reference/RefJavaManagerImpl.java
java/java-impl/gen/com/intellij/spi/parsing/_SPILexer.java
java/java-impl/src/com/intellij/codeInsight/completion/CheckInitialized.java
java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionSorting.java
java/java-impl/src/com/intellij/codeInsight/completion/PreferByKindWeigher.java
java/java-impl/src/com/intellij/codeInsight/daemon/impl/MarkerType.java
java/java-impl/src/com/intellij/codeInsight/editorActions/JavaEnterAfterUnmatchedBraceHandler.java [new file with mode: 0644]
java/java-impl/src/com/intellij/codeInsight/hint/JavaTypeProvider.java
java/java-impl/src/com/intellij/codeInsight/intention/impl/AddSingleMemberStaticImportAction.java
java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/WhileStatementPostfixTemplate.java
java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedDeclarationPresentation.java
java/java-impl/src/com/intellij/codeInspection/emptyMethod/EmptyMethodInspection.java
java/java-impl/src/com/intellij/codeInspection/ui/EntryPointsNode.java
java/java-impl/src/com/intellij/psi/util/proximity/ExplicitlyImportedWeigher.java
java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodSignatureSuggester.java
java/java-impl/src/com/intellij/refactoring/rename/inplace/JavaResolveSnapshot.java
java/java-impl/src/com/intellij/refactoring/rename/naming/AutomaticVariableRenamer.java
java/java-impl/src/com/intellij/refactoring/safeDelete/JavaSafeDeleteProcessor.java
java/java-impl/src/com/intellij/refactoring/safeDelete/usageInfo/SafeDeleteAnnotation.java [new file with mode: 0644]
java/java-impl/src/com/intellij/spi/parsing/_SPILexer.flex
java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaFunctionalExpressionSearcher.java
java/java-psi-api/src/com/intellij/psi/PsiMethod.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/codeInsight/generation/OverrideImplementExploreUtil.java
java/java-psi-impl/src/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/lang/java/parser/ReferenceParser.java
java/java-tests/testData/codeInsight/completion/normalSorting/PreferBooleanKeywordsWhenExpectedBoolean.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/completion/normalSorting/PreferExplicitlyImportedStaticMembers.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/completion/style/before10.java
java/java-tests/testData/codeInsight/completion/style/before8.java
java/java-tests/testData/codeInsight/completion/style/before9.java
java/java-tests/testData/codeInsight/completion/variables/SuggestVariablesInTypePosition.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addOnDemandStaticImport/afterFieldInSuperClass.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addOnDemandStaticImport/beforeFieldInSuperClass.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/implementMethods/afterAssignWeakerAccess.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/implementMethods/beforeAssignWeakerAccess.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/template/postfix/templates/while/booleanVariable_after.java
java/java-tests/testData/codeInsight/template/postfix/templates/while/boxedBooleanVariable_after.java
java/java-tests/testData/inspection/dataFlow/fixture/FinalFieldNotDuringInitialization.java
java/java-tests/testData/inspection/dataFlow/fixture/NotNullLambdaParameter.java [new file with mode: 0644]
java/java-tests/testData/psi/parser-partial/references/Type10.txt [new file with mode: 0644]
java/java-tests/testData/refactoring/inplaceIntroduceVariable/conflictingInnerClassName.java [new file with mode: 0644]
java/java-tests/testData/refactoring/inplaceIntroduceVariable/conflictingInnerClassName_after.java [new file with mode: 0644]
java/java-tests/testData/refactoring/renameClass/automaticRenameLambdaParams/after/X.java [new file with mode: 0644]
java/java-tests/testData/refactoring/renameClass/automaticRenameLambdaParams/before/X.java [new file with mode: 0644]
java/java-tests/testData/refactoring/safeDelete/ShowConflictsButRemoveAnnotationsIfAnnotationTypeIsDeleted.java [new file with mode: 0644]
java/java-tests/testData/refactoring/safeDelete/ShowConflictsButRemoveAnnotationsIfAnnotationTypeIsDeleted_after.java [new file with mode: 0644]
java/java-tests/testSrc/com/intellij/codeInsight/OverrideImplementTest.groovy
java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy
java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy
java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartTypeCompletionOrderingTest.groovy
java/java-tests/testSrc/com/intellij/codeInsight/completion/VariablesCompletionTest.groovy
java/java-tests/testSrc/com/intellij/codeInsight/daemon/AdvHighlightingJdk7Test.java
java/java-tests/testSrc/com/intellij/codeInsight/daemon/impl/DaemonRespondToChangesTest.java
java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/CastMethodParameters15Test.java
java/java-tests/testSrc/com/intellij/codeInsight/indentOptionsProvider/FileIndentProviderTest.java
java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspection8Test.java
java/java-tests/testSrc/com/intellij/lang/java/parser/JavaParsingTestCase.java
java/java-tests/testSrc/com/intellij/lang/java/parser/partial/ReferenceParserTest.java
java/java-tests/testSrc/com/intellij/navigation/GotoImplementationHandlerTest.java
java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaEnterActionTest.java
java/java-tests/testSrc/com/intellij/psi/formatter/performance/JavaFormatterPerformanceTest.java
java/java-tests/testSrc/com/intellij/psi/impl/file/impl/TempFileSystemTest.java
java/java-tests/testSrc/com/intellij/refactoring/InplaceIntroduceVariableTest.java
java/java-tests/testSrc/com/intellij/refactoring/MockIntroduceVariableHandler.java
java/java-tests/testSrc/com/intellij/refactoring/RenameClassTest.java
java/java-tests/testSrc/com/intellij/refactoring/SafeDeleteTest.java
java/jdkAnnotations/javax/swing/annotations.xml
java/testFramework/src/com/intellij/codeInsight/daemon/DaemonAnalyzerTestCase.java
java/typeMigration/test/com/intellij/refactoring/TypeMigrationTestBase.java
json/gen/com/intellij/json/_JsonLexer.java
json/tests/test/com/jetbrains/jsonSchema/schemaFile/JsonSchemaFileResolveTest.java
native/MacLauncher/MacLauncher.xcodeproj/project.pbxproj
platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/FileStatusMap.java
platform/analysis-impl/src/com/intellij/codeInspection/reference/RefManagerImpl.java
platform/bootstrap/src/com/intellij/ide/BootstrapClassLoaderUtil.java
platform/built-in-server/src/org/jetbrains/builtInWebServer/DefaultWebServerRootsProvider.kt
platform/core-api/src/com/intellij/ide/IdeBundle.java
platform/core-api/src/com/intellij/psi/filters/ElementFilterBase.java [moved from platform/lang-api/src/com/intellij/psi/filters/ElementFilterBase.java with 76% similarity]
platform/core-api/src/com/intellij/psi/util/PsiTreeUtil.java
platform/core-impl/src/com/intellij/lang/impl/PsiBuilderImpl.java
platform/core-impl/src/com/intellij/openapi/application/TransactionGuardImpl.java
platform/core-impl/src/com/intellij/openapi/progress/impl/CoreProgressManager.java
platform/core-impl/src/com/intellij/openapi/progress/util/AbstractProgressIndicatorBase.java
platform/core-impl/src/com/intellij/psi/impl/PsiDocumentManagerBase.java
platform/core-impl/src/com/intellij/psi/impl/PsiModificationTrackerImpl.java
platform/core-impl/src/com/intellij/util/CachedValuesManagerImpl.java
platform/diff-api/src/com/intellij/diff/DiffContentFactory.java
platform/diff-impl/src/com/intellij/diff/DiffContentFactoryImpl.java
platform/diff-impl/src/com/intellij/diff/actions/impl/FocusOppositePaneAction.java
platform/diff-impl/src/com/intellij/diff/actions/impl/GoToChangePopupAction.java
platform/diff-impl/src/com/intellij/diff/actions/impl/NextChangeAction.java
platform/diff-impl/src/com/intellij/diff/actions/impl/NextDifferenceAction.java
platform/diff-impl/src/com/intellij/diff/actions/impl/PrevChangeAction.java
platform/diff-impl/src/com/intellij/diff/actions/impl/PrevDifferenceAction.java
platform/diff-impl/src/com/intellij/diff/comparison/ComparisonManagerImpl.java
platform/diff-impl/src/com/intellij/diff/contents/FileAwareDocumentContent.java
platform/diff-impl/src/com/intellij/diff/impl/DiffRequestProcessor.java
platform/diff-impl/src/com/intellij/diff/merge/MergeModelBase.java [new file with mode: 0644]
platform/diff-impl/src/com/intellij/diff/merge/TextMergeChange.java
platform/diff-impl/src/com/intellij/diff/merge/TextMergeViewer.java
platform/diff-impl/src/com/intellij/diff/tools/fragmented/UnifiedDiffChange.java
platform/diff-impl/src/com/intellij/diff/tools/fragmented/UnifiedDiffViewer.java
platform/diff-impl/src/com/intellij/diff/tools/holders/TextEditorHolder.java
platform/diff-impl/src/com/intellij/diff/tools/util/DiffSplitter.java
platform/diff-impl/src/com/intellij/diff/tools/util/TransferableFileEditorStateSupport.java
platform/diff-impl/src/com/intellij/diff/tools/util/base/TextDiffViewerUtil.java
platform/diff-impl/src/com/intellij/diff/tools/util/side/ThreesideTextDiffViewer.java
platform/diff-impl/src/com/intellij/diff/util/DiffDrawUtil.java
platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java
platform/diff-impl/src/com/intellij/diff/util/TextDiffTypeFactory.java
platform/dvcs-impl/src/com/intellij/dvcs/push/PushController.java
platform/editor-ui-api/src/com/intellij/openapi/actionSystem/AnAction.java
platform/external-system-impl/testSrc/com/intellij/openapi/externalSystem/test/ExternalSystemImportingTestCase.java
platform/lang-api/src/com/intellij/execution/RunManager.java
platform/lang-api/src/com/intellij/execution/actions/RunConfigurationProducer.java
platform/lang-api/src/com/intellij/execution/junit/RuntimeConfigurationProducer.java
platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettings.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
platform/lang-impl/gen/com/intellij/psi/search/scope/packageSet/lexer/_ScopesLexer.java
platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java
platform/lang-impl/src/com/intellij/codeInsight/editorActions/enter/EnterAfterUnmatchedBraceHandler.java
platform/lang-impl/src/com/intellij/codeInsight/highlighting/LargeFilesAnnotator.java
platform/lang-impl/src/com/intellij/codeInsight/hint/ShowExpressionTypeHandler.java
platform/lang-impl/src/com/intellij/codeInsight/hint/actions/ShowImplementationsAction.java
platform/lang-impl/src/com/intellij/codeInsight/navigation/BackgroundUpdaterTask.java
platform/lang-impl/src/com/intellij/codeInsight/navigation/GotoImplementationHandler.java
platform/lang-impl/src/com/intellij/codeInsight/navigation/GotoTargetHandler.java
platform/lang-impl/src/com/intellij/codeInsight/navigation/ImplementationSearcher.java
platform/lang-impl/src/com/intellij/codeInsight/navigation/ListBackgroundUpdaterTask.java
platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateTextLexer.flex
platform/lang-impl/src/com/intellij/codeInsight/template/impl/_MacroLexer.flex
platform/lang-impl/src/com/intellij/codeInspection/actions/RunInspectionIntention.java
platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionProfileManagerImpl.java
platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionResultsView.java
platform/lang-impl/src/com/intellij/formatting/IndentInfo.java
platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateTextLexer.flex
platform/lang-impl/src/com/intellij/injected/editor/EditorWindowImpl.java
platform/lang-impl/src/com/intellij/openapi/editor/actions/SelectWordAtCaretAction.java
platform/lang-impl/src/com/intellij/psi/formatter/FormatterUtil.java
platform/lang-impl/src/com/intellij/psi/search/scope/packageSet/lexer/_ScopesLexer.flex
platform/lang-impl/src/com/intellij/testIntegration/GotoTestOrCodeHandler.java
platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexImpl.java
platform/lang-impl/src/com/intellij/util/indexing/IndexInfrastructure.java
platform/lang-impl/testSources/com/intellij/codeInspection/LongLineInspectionTest.java
platform/lvcs-impl/src/com/intellij/history/integration/IdeaGateway.java
platform/lvcs-impl/src/com/intellij/history/integration/LocalHistoryBundle.java
platform/lvcs-impl/src/com/intellij/history/integration/LocalHistoryEventDispatcher.java
platform/lvcs-impl/src/messages/LocalHistoryBundle.properties [moved from platform/lvcs-impl/src/com/intellij/history/integration/LocalHistoryBundle.properties with 100% similarity]
platform/platform-api/src/com/intellij/ide/actions/QuickSwitchSchemeAction.java
platform/platform-api/src/com/intellij/openapi/actionSystem/ActionPlaces.java
platform/platform-api/src/com/intellij/openapi/actionSystem/ex/ActionUtil.java
platform/platform-api/src/com/intellij/openapi/editor/actionSystem/EditorAction.java
platform/platform-api/src/com/intellij/openapi/progress/ProgressManagerQueue.java [deleted file]
platform/platform-api/src/com/intellij/openapi/ui/popup/JBPopupFactory.java
platform/platform-api/src/com/intellij/ui/PortField.java
platform/platform-api/src/com/intellij/ui/components/labels/ActionLink.java
platform/platform-impl/src/com/intellij/execution/process/OSProcessUtil.java
platform/platform-impl/src/com/intellij/ide/actions/Switcher.java
platform/platform-impl/src/com/intellij/ide/impl/ProjectUtil.java
platform/platform-impl/src/com/intellij/ide/ui/laf/IntelliJLaf.java
platform/platform-impl/src/com/intellij/ide/ui/laf/intellij/IntelliJCheckBoxUI.java
platform/platform-impl/src/com/intellij/notification/EventLog.java
platform/platform-impl/src/com/intellij/notification/EventLogConsole.java
platform/platform-impl/src/com/intellij/notification/impl/MacEventReader.java
platform/platform-impl/src/com/intellij/notification/impl/NotificationsManagerImpl.java
platform/platform-impl/src/com/intellij/notification/impl/actions/MarkAllNotificationsAsReadAction.java
platform/platform-impl/src/com/intellij/openapi/application/actions.kt
platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java
platform/platform-impl/src/com/intellij/openapi/editor/CustomFileDropHandler.java
platform/platform-impl/src/com/intellij/openapi/editor/ex/EditorEx.java
platform/platform-impl/src/com/intellij/openapi/editor/ex/util/EditorUtil.java
platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java
platform/platform-impl/src/com/intellij/openapi/editor/impl/view/TextFragmentFactory.java
platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorTabbedContainer.java
platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/text/FileDropHandler.java
platform/platform-impl/src/com/intellij/openapi/vfs/encoding/EncodingManagerImpl.java
platform/platform-impl/src/com/intellij/openapi/vfs/encoding/EncodingProjectManagerImpl.java
platform/platform-impl/src/com/intellij/openapi/vfs/encoding/EncodingUtil.java
platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeBackgroundUtil.java
platform/platform-impl/src/com/intellij/openapi/wm/impl/PaintersHelper.java
platform/platform-impl/src/com/intellij/ui/BalloonLayoutData.java
platform/platform-impl/src/com/intellij/ui/BalloonLayoutImpl.java
platform/platform-impl/src/com/intellij/ui/content/TabbedPaneContentUI.java
platform/platform-impl/src/com/intellij/ui/popup/PopupFactoryImpl.java
platform/platform-resources-en/src/messages/ApplicationBundle.properties
platform/platform-resources-en/src/messages/CodeInsightBundle.properties
platform/platform-resources-en/src/messages/DaemonBundle.properties
platform/platform-resources-en/src/messages/DiffBundle.properties
platform/platform-resources/src/META-INF/LangExtensions.xml
platform/platform-resources/src/META-INF/XmlPlugin.xml
platform/platform-resources/src/brokenPlugins.txt
platform/platform-resources/src/codeStyle/preview/preview.html.template
platform/platform-tests/testSrc/com/intellij/application/TransactionTest.groovy
platform/platform-tests/testSrc/com/intellij/ide/util/treeView/TreeUiTest.java
platform/platform-tests/testSrc/com/intellij/openapi/editor/impl/DocumentMarkupModelTest.java
platform/platform-tests/testSrc/com/intellij/openapi/editor/richcopy/SyntaxInfoConstructionTest.java
platform/platform-tests/testSrc/com/intellij/usages/impl/UsageViewTest.java
platform/platform-tests/testSrc/com/intellij/util/io/PersistenceStressTest.java
platform/platform-tests/testSrc/com/intellij/util/lang/UrlClassLoaderTest.java
platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java
platform/remote-servers/impl/src/com/intellij/remoteServer/impl/configuration/deployment/DeployToServerConfigurationType.java
platform/testFramework/src/com/intellij/psi/codeStyle/arrangement/AbstractRearrangerTest.java
platform/testFramework/src/com/intellij/testFramework/LexerTestCase.java
platform/testFramework/src/com/intellij/testFramework/PlatformTestCase.java
platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestUtil.java
platform/testFramework/src/com/intellij/testFramework/fixtures/LightPlatformCodeInsightFixtureTestCase.java
platform/util/resources/misc/registry.properties
platform/util/src/com/intellij/execution/process/BaseOSProcessHandler.java
platform/util/src/com/intellij/openapi/application/PathManager.java
platform/util/src/com/intellij/openapi/ui/Splitter.java
platform/util/src/com/intellij/openapi/util/DefaultJDOMExternalizer.java
platform/util/src/com/intellij/openapi/util/text/StringUtil.java
platform/util/src/com/intellij/openapi/wm/FocusWatcher.java
platform/util/src/com/intellij/ui/SeparatorComponent.java
platform/util/src/com/intellij/util/io/BaseOutputReader.java
platform/util/src/com/intellij/util/io/URLUtil.java
platform/util/testSrc/com/intellij/openapi/application/PathManagerTest.java
platform/util/testSrc/com/intellij/util/io/BaseOutputReaderTest.java
platform/util/testSrc/com/intellij/util/io/UrlUtilTest.java
platform/vcs-impl/src/com/intellij/openapi/diff/impl/patch/SelectFilesToAddTextsToPatchPanel.java
platform/vcs-impl/src/com/intellij/openapi/vcs/actions/AnnotateRevisionAction.java
platform/vcs-impl/src/com/intellij/openapi/vcs/actions/AnnotateRevisionActionBase.java
platform/vcs-impl/src/com/intellij/openapi/vcs/actions/ShowDiffFromAnnotation.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/VcsDirtyScopeVfsListener.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/CommittedChangesCache.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/AppliedTextPatch.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/ApplyPatchAction.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/CreatePatchCommitExecutor.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/PatchDiffRequestFactory.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/PatchFileDropHandler.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/tool/ApplyPatchChange.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/tool/ApplyPatchDiffRequest.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/tool/ApplyPatchDiffTool.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/tool/ApplyPatchMergeRequest.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/tool/ApplyPatchMergeTool.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/tool/ApplyPatchRequest.java [new file with mode: 0644]
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/tool/ApplyPatchViewer.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/tool/PatchChangeBuilder.java
platform/vcs-impl/src/com/intellij/openapi/vcs/history/FileHistoryPanelImpl.java
platform/vcs-impl/src/com/intellij/vcs/ProgressManagerQueue.java [moved from platform/platform-api/src/com/intellij/openapi/progress/AbstractTaskQueue.java with 51% similarity]
platform/vcs-log/impl/src/com/intellij/vcs/log/data/ContainingBranchesGetter.java
platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogFilterer.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
platform/vcs-log/impl/src/com/intellij/vcs/log/impl/PostponableLogRefresher.java
platform/vcs-log/impl/src/com/intellij/vcs/log/impl/VcsLogImpl.java
platform/vcs-log/impl/src/com/intellij/vcs/log/ui/actions/RefreshLogAction.java
platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/CommitPanel.java [new file with mode: 0644]
platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/CommitSelectionListener.java [new file with mode: 0644]
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/VcsLogGraphTable.java
platform/vcs-log/impl/src/com/intellij/vcs/log/ui/tables/GraphTableModel.java
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XLightBreakpointPropertiesPanel.java
platform/xdebugger-impl/testSrc/com/intellij/xdebugger/XDebuggerTestCase.java
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/ComparatorMethodParameterNotUsedInspection.java
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/SubtractionInCompareToInspectionBase.java
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/InfiniteLoopStatementInspection.java
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/RedundantMethodOverrideInspection.java
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/MethodMayBeStaticInspectionBase.java
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ControlFlowUtils.java
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/MethodUtils.java
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/resources/AutoCloseableResourceInspectionBase.java
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryQualifierForThisInspection.java
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/SafeLockInspection.java
plugins/InspectionGadgets/src/com/siyeh/ig/performance/ObjectInstantiationInEqualsHashCodeInspection.java
plugins/InspectionGadgets/src/inspectionDescriptions/ObjectInstantiationInEqualsHashCode.html
plugins/InspectionGadgets/src/inspectionDescriptions/RedundantMethodOverride.html
plugins/InspectionGadgets/src/inspectionDescriptions/UnnecessaryQualifierForThis.html
plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/comparator_method_parameter_not_used/ComparatorMethodParameterNotUsed.java [new file with mode: 0644]
plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/infinite_loop_statement/InfiniteLoopStatement.java
plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/infinite_loop_statement/expected.xml [deleted file]
plugins/InspectionGadgets/test/com/siyeh/igtest/inheritance/redundant_method_override/RedundantMethodOverride.java
plugins/InspectionGadgets/test/com/siyeh/igtest/performance/method_may_be_static/A.java
plugins/InspectionGadgets/test/com/siyeh/igtest/performance/method_may_be_static/expected.xml [deleted file]
plugins/InspectionGadgets/test/com/siyeh/igtest/performance/object_instantiation_in_equals_hash_code/ObjectInstantiationInEqualsHashCode.java
plugins/InspectionGadgets/test/com/siyeh/igtest/threading/SafeLockInspection.java [deleted file]
plugins/InspectionGadgets/test/com/siyeh/igtest/threading/safe_lock/SafeLock.java [new file with mode: 0644]
plugins/InspectionGadgets/testsrc/com/siyeh/ig/bugs/ComparatorMethodParameterNotUsedInspectionTest.java [new file with mode: 0644]
plugins/InspectionGadgets/testsrc/com/siyeh/ig/controlflow/InfiniteLoopStatementInspectionTest.java
plugins/InspectionGadgets/testsrc/com/siyeh/ig/performance/MethodMayBeStaticInspectionTest.java
plugins/InspectionGadgets/testsrc/com/siyeh/ig/style/UnnecessaryQualifierForThisInspectionLightTest.java [new file with mode: 0644]
plugins/InspectionGadgets/testsrc/com/siyeh/ig/threading/SafeLockInspectionTest.java [moved from xml/impl/src/com/intellij/ide/util/treeView/XmlDoctypeNodeDescriptor.java with 52% similarity]
plugins/cvs/javacvs-src/org/netbeans/lib/cvsclient/RequestProcessor.java
plugins/git4idea/src/git4idea/GitUtil.java
plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java
plugins/git4idea/src/git4idea/util/GitFreezingProcess.java
plugins/github/test/org/jetbrains/plugins/github/GithubCreateGistContentTest.java
plugins/gradle/testSources/org/jetbrains/plugins/gradle/codeInsight/actions/AddGradleDslPluginActionTest.java
plugins/gradle/testSources/org/jetbrains/plugins/gradle/integrations/maven/codeInsight/actions/AddGradleDslDependencyActionTest.java
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/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.flex
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/synthetic/GrAccessorMethodImpl.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/util/PsiUtil.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/processors/GroovyResolverProcessor.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/transformations/TransformationUtil.kt
plugins/groovy/src/META-INF/plugin.xml
plugins/groovy/src/org/jetbrains/plugins/groovy/codeInsight/navigation/actions/GroovyGotoSuperHandler.java
plugins/groovy/test/org/jetbrains/plugins/groovy/GroovyGotoImplementationTest.java
plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/Groovy23HighlightingTest.groovy
plugins/groovy/test/org/jetbrains/plugins/groovy/lang/overriding/GroovyOverrideImplementTest.groovy
plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolvePropertyTest.groovy
plugins/hg4idea/testSrc/hg4idea/test/history/HgLogHistoryTest.java
plugins/hg4idea/testSrc/hg4idea/test/merge/HgRevertUncommittedMergeTest.java
plugins/hg4idea/testSrc/org/zmlx/hg4idea/test/HgAnnotateCommandTest.java
plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java
plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXQuickfixTest.java
plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/codeInsight/inspections/JavaFxImplicitUsageProvider.java
plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxEventHandlerReference.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/indexing/JavaFxIdsIndex.java
plugins/javaFX/testData/highlighting/EventHandlerInSuperclass.java [new file with mode: 0644]
plugins/javaFX/testData/highlighting/FxIdInSuperclass.java [new file with mode: 0644]
plugins/javaFX/testData/highlighting/PrivateEventHandler.java [new file with mode: 0644]
plugins/javaFX/testData/highlighting/privateEventHandler.fxml [new file with mode: 0644]
plugins/javaFX/testData/quickfix/CreateMethod.java [new file with mode: 0644]
plugins/javaFX/testData/quickfix/CreateMethodEscalateVisibility_after.java [new file with mode: 0644]
plugins/javaFX/testData/quickfix/CreateMethodPackageLocalVisibility_after.java [new file with mode: 0644]
plugins/javaFX/testData/quickfix/CreateMethodPrivateVisibility_after.java [new file with mode: 0644]
plugins/javaFX/testData/quickfix/CreateMethodProtectedVisibility_after.java [new file with mode: 0644]
plugins/javaFX/testData/quickfix/CreateMethodPublicVisibility_after.java [new file with mode: 0644]
plugins/javaFX/testData/quickfix/createMethod.fxml [new file with mode: 0644]
plugins/junit/src/com/intellij/execution/junit/JUnitConfiguration.java
plugins/junit/src/com/intellij/execution/junit/TestObject.java
plugins/junit_rt/src/com/intellij/junit4/JUnit4IdeaTestRunner.java
plugins/maven/src/test/java/org/jetbrains/idea/maven/compiler/ResourceFilteringTest.java
plugins/maven/src/test/java/org/jetbrains/idea/maven/execution/MavenExecutionTest.java
plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/WorkingWithOpenProjectTest.java
plugins/properties/properties-psi-api/gen/com/intellij/lang/properties/parsing/_PropertiesLexer.java
plugins/properties/src/com/intellij/lang/properties/ResourceBundleReference.java
plugins/properties/src/com/intellij/lang/properties/parsing/Properties.flex
plugins/properties/testSrc/com/intellij/lang/properties/AlphaUnsortedInspectionTest.java
plugins/properties/testSrc/com/intellij/lang/properties/CustomResourceBundleTest.java
plugins/properties/testSrc/com/intellij/lang/properties/ResourceBundleEditorInsertManagerTest.java
plugins/properties/testSrc/com/intellij/lang/properties/ResourceBundleTest.java
plugins/properties/testSrc/com/intellij/lang/properties/xml/XmlPropertiesTest.java
plugins/svn4idea/src/org/jetbrains/idea/svn/branchConfig/NewRootBunch.java
plugins/svn4idea/src/org/jetbrains/idea/svn/branchConfig/SvnBranchConfigurationManager.java
plugins/svn4idea/src/org/jetbrains/idea/svn/history/SvnHistoryProvider.java
plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnCommittedViewTest.java
plugins/svn4idea/testSource/org/jetbrains/idea/svn16/SvnCommittedViewTest.java
plugins/tasks/tasks-core/jira/gen/com/intellij/tasks/jira/jql/_JqlLexer.java
plugins/tasks/tasks-core/jira/src/com/intellij/tasks/jira/jql/JqlLexer.flex
plugins/tasks/tasks-tests/test/com/intellij/tasks/TestRepository.java
plugins/tasks/tasks-tests/test/com/intellij/tasks/jira/jql/ParsingTest.java
plugins/terminal/src/org/jetbrains/plugins/terminal/vfs/TerminalSessionEditor.java
plugins/testng_rt/src/org/testng/TestNGExpectedPatterns.java
plugins/xpath/xpath-lang/gen/org/intellij/lang/xpath/_XPathLexer.java
plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xpath-lexer.flex
plugins/yaml/gen/org/jetbrains/yaml/lexer/_YAMLLexer.java
plugins/yaml/src/org/jetbrains/yaml/lexer/yaml.flex
plugins/yaml/testSrc/org/jetbrains/yaml/psiModification/YAMLMappingModificationTest.java
plugins/yaml/testSrc/org/jetbrains/yaml/scalarConversion/YAMLScalarConversionTest.java
python/educational-core/build.gradle
python/educational-core/course-creator/resources/META-INF/plugin.xml
python/educational-core/gradle.properties
python/educational-core/student/resources/META-INF/plugin.xml
python/educational-python/build.gradle
python/educational-python/course-creator-python/resources/META-INF/plugin.xml
python/educational-python/gradle.properties
python/educational-python/src/META-INF/PyCharmEduPlugin.xml
python/educational-python/student-python/resources/META-INF/plugin.xml
python/gen/com/jetbrains/commandInterface/commandLine/_CommandLineLexer.java
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
python/helpers/pycharm/behave_runner.py
python/helpers/pycharm_generator_utils/constants.py
python/helpers/pycharm_generator_utils/module_redeclarator.py
python/helpers/pydev/_pydev_bundle/pydev_monkey.py
python/helpers/pydev/tests_pydevd/test_egg_zip_exist.py [new file with mode: 0644]
python/helpers/pydev/tests_pydevd_python/test_debugger.py
python/helpers/pydev/tests_pydevd_python/test_pydev_monkey.py
python/helpers/required_gen_version
python/rest/gen/com/jetbrains/rest/lexer/_RestFlexLexer.java
python/rest/src/com/jetbrains/rest/lexer/rest.flex
python/src/com/jetbrains/python/buildout/config/lexer/buildout.cfg.flex
python/src/com/jetbrains/python/codeInsight/imports/AddImportHelper.java
python/src/com/jetbrains/python/debugger/array/AsyncArrayTableModel.java
python/src/com/jetbrains/python/lexer/Python.flex
python/src/com/jetbrains/python/psi/impl/PyFunctionImpl.java
python/testData/addImport/ignoreImportedAsModule.after.py [new file with mode: 0644]
python/testData/addImport/ignoreImportedAsModule.py [new file with mode: 0644]
python/testData/inspections/PyArgumentListInspection/reassignedViaClassMethod.py [new file with mode: 0644]
python/testSrc/com/jetbrains/env/python/PyDynamicTypesTest.java
python/testSrc/com/jetbrains/env/python/PythonDebuggerTest.java
python/testSrc/com/jetbrains/env/python/debug/PyDebuggerTask.java
python/testSrc/com/jetbrains/python/PyAddImportTest.java
python/testSrc/com/jetbrains/python/inspections/PyArgumentListInspectionTest.java
python/testSrc/com/jetbrains/python/inspections/PyAssignmentToLoopOrWithParameterInspectionTest.java
resources-en/src/postfixTemplates/WhileStatementPostfixTemplate/after.java.template
resources/src/META-INF/IdeaPlugin.xml
spellchecker/src/com/intellij/spellchecker/jetbrains.dic
spellchecker/testSrc/com/intellij/spellchecker/inspection/SpellcheckerInspectionTestCase.java
spellchecker/testSrc/com/intellij/spellchecker/ui/SpellCheckingEditorCustomizationTest.java
tools/lexer/CHANGES
tools/lexer/jflex-1.7.0-SNAPSHOT.jar
xml/dom-tests/tests/com/intellij/util/xml/stubs/DomStubBuilderTest.java
xml/impl/src/com/intellij/application/options/CodeStyleHtmlPanel.form
xml/impl/src/com/intellij/application/options/CodeStyleHtmlPanel.java
xml/impl/src/com/intellij/lang/html/HtmlQuotesFormatPreprocessor.java [new file with mode: 0644]
xml/tests/src/com/intellij/codeInsight/completion/XmlSyncTagTest.java
xml/tests/src/com/intellij/codeInsight/daemon/quickFix/RealFetchTest.java
xml/tests/src/com/intellij/xml/XMLCatalogManagerTest.java
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
xml/xml-psi-impl/src/com/intellij/lexer/_DtdLexer.flex

index 9723acb37a33e88309554e9e52d6a9f1ce486295..3b94ed80959ec78d2b5773dc4b17dc181ddc0bde 100644 (file)
@@ -56,16 +56,16 @@ class _RegExLexer implements FlexLexer {
    * Translates characters to character classes
    */
   private static final String ZZ_CMAP_PACKED = 
-    "\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"+
+    "\10\0\2\64\1\57\1\60\1\61\1\57\22\0\1\54\1\67\1\0"+
+    "\1\70\1\17\1\0\1\63\1\53\1\4\1\5\1\21\1\22\1\56"+
+    "\1\47\1\3\1\0\1\2\7\46\2\1\1\62\1\0\1\52\1\66"+
+    "\1\65\1\20\1\0\1\26\1\26\1\34\1\33\1\43\1\41\1\27"+
+    "\1\50\1\36\2\13\1\55\1\55\1\55\1\13\1\40\1\42\1\13"+
+    "\1\32\2\13\1\31\1\31\1\31\1\13\1\30\1\10\1\12\1\11"+
+    "\1\16\1\14\1\0\1\25\1\26\1\35\1\33\1\25\1\25\1\13"+
+    "\1\50\1\36\1\13\1\51\2\13\1\24\1\13\1\37\1\13\1\24"+
+    "\1\31\1\24\1\45\1\31\1\31\1\44\1\13\1\27\1\6\1\23"+
+    "\1\7\7\0\1\60\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"+
@@ -119,7 +119,7 @@ class _RegExLexer implements FlexLexer {
     "\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"+
+    "\1\60\1\60\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"+
@@ -189,7 +189,12 @@ class _RegExLexer implements FlexLexer {
   /** 
    * Translates characters to character classes
    */
-  private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
+  private static final int ZZ_SX = 0x0700;
+  private static final int ZZ_MX = 0x10000;
+  private static final int ZZ_LX = 0x110000;
+  private static char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED, ZZ_SX);
+  private static class M { static final char [] MAP = zzUnpackCMap(ZZ_CMAP_PACKED, ZZ_MX); }
+  private static class L { static final char [] MAP = zzUnpackCMap(ZZ_CMAP_PACKED, ZZ_LX); }
 
   /** 
    * Translates DFA states to action switch labels.
@@ -197,20 +202,20 @@ class _RegExLexer implements FlexLexer {
   private static final int [] ZZ_ACTION = zzUnpackAction();
 
   private static final String ZZ_ACTION_PACKED_0 =
-    "\7\0\1\1\1\2\5\0\1\3\1\4\1\5\1\6"+
+    "\10\0\1\1\5\0\1\2\1\3\1\4\1\5\1\6"+
     "\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16"+
-    "\1\17\1\20\1\21\1\22\1\23\1\3\1\24\1\25"+
-    "\1\26\1\27\1\30\1\31\1\32\1\33\1\34\1\35"+
-    "\1\11\1\36\1\3\1\37\1\40\1\37\1\41\1\42"+
-    "\1\43\1\1\1\44\1\45\1\2\1\46\1\47\2\50"+
-    "\1\51\1\52\1\0\1\53\1\54\1\55\1\56\1\11"+
-    "\1\57\1\60\1\61\1\62\2\63\1\64\1\65\1\66"+
-    "\1\67\1\54\1\70\1\11\1\71\1\72\1\73\1\74"+
-    "\1\75\1\76\1\77\1\0\1\100\1\101\1\102\1\103"+
-    "\1\104\1\0\1\105\1\106\1\107\2\66\1\67\1\54"+
-    "\1\110\1\111\1\112\1\113\1\114\1\115\1\0\1\106"+
-    "\1\116\2\66\1\67\1\117\1\120\1\106\1\66\1\67"+
-    "\1\66\1\121\4\66";
+    "\1\17\1\20\1\21\1\22\1\2\1\23\1\24\1\25"+
+    "\1\26\1\27\1\30\1\31\1\32\1\33\1\34\1\10"+
+    "\1\35\1\2\1\36\1\37\1\36\1\40\1\41\1\42"+
+    "\1\43\1\44\1\45\1\1\1\46\1\47\2\50\1\51"+
+    "\1\52\1\0\1\53\1\54\1\55\1\56\1\10\1\57"+
+    "\1\60\1\61\2\62\1\63\1\64\1\65\1\66\1\54"+
+    "\1\67\1\10\1\70\1\71\1\72\1\73\1\74\1\75"+
+    "\1\76\1\77\1\0\1\100\1\101\1\102\1\103\1\104"+
+    "\1\0\1\105\1\106\1\107\2\65\1\66\1\54\1\110"+
+    "\1\111\1\112\1\113\1\114\1\115\1\0\1\106\1\116"+
+    "\2\65\1\66\1\117\1\120\1\106\1\65\1\66\1\65"+
+    "\1\121\4\65";
 
   private static int [] zzUnpackAction() {
     int [] result = new int[124];
@@ -238,22 +243,22 @@ class _RegExLexer implements FlexLexer {
   private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
 
   private static final String ZZ_ROWMAP_PACKED_0 =
-    "\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";
+    "\0\0\0\71\0\162\0\253\0\344\0\u011d\0\u0156\0\u018f"+
+    "\0\u01c8\0\u0201\0\u023a\0\u0273\0\u02ac\0\u02e5\0\u031e\0\u031e"+
+    "\0\u0357\0\u031e\0\u031e\0\u0390\0\u03c9\0\u031e\0\u031e\0\u031e"+
+    "\0\u031e\0\u031e\0\u031e\0\u031e\0\u031e\0\u031e\0\u031e\0\u0402"+
+    "\0\u031e\0\u043b\0\u031e\0\u0474\0\u031e\0\u031e\0\u031e\0\u031e"+
+    "\0\u04ad\0\u031e\0\u04e6\0\u031e\0\u051f\0\u031e\0\u031e\0\u0390"+
+    "\0\u031e\0\u031e\0\u031e\0\u0558\0\u0591\0\u031e\0\u031e\0\u031e"+
+    "\0\u031e\0\u031e\0\u05ca\0\u0603\0\u031e\0\u063c\0\u031e\0\u0675"+
+    "\0\u06ae\0\u031e\0\u031e\0\u031e\0\u031e\0\u031e\0\u031e\0\u06e7"+
+    "\0\u031e\0\u031e\0\u0720\0\u0759\0\u0792\0\u031e\0\u07cb\0\u031e"+
+    "\0\u031e\0\u031e\0\u031e\0\u031e\0\u031e\0\u031e\0\u031e\0\u0804"+
+    "\0\u083d\0\u031e\0\u031e\0\u031e\0\u031e\0\u0876\0\u031e\0\u08af"+
+    "\0\u031e\0\u08e8\0\u0921\0\u095a\0\u0993\0\u031e\0\u031e\0\u031e"+
+    "\0\u031e\0\u031e\0\u031e\0\u09cc\0\u0a05\0\u031e\0\u0a3e\0\u031e"+
+    "\0\u0a77\0\u0675\0\u031e\0\u031e\0\u0ab0\0\u0ae9\0\u0b22\0\u031e"+
+    "\0\u0b5b\0\u0b94\0\u0bcd\0\u0c06";
 
   private static int [] zzUnpackRowMap() {
     int [] result = new int[124];
@@ -280,78 +285,76 @@ 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\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\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";
+    "\1\25\3\17\1\26\1\27\1\30\1\31\1\32\1\33"+
+    "\23\17\1\34\4\17\1\35\2\17\1\36\1\17\1\36"+
+    "\2\17\1\36\3\17\1\37\12\17\1\40\56\17\1\41"+
+    "\2\42\4\41\1\43\3\41\1\44\1\41\1\42\6\41"+
+    "\22\44\1\42\1\41\2\44\3\41\1\44\1\45\12\41"+
+    "\11\46\1\47\45\46\3\0\25\46\1\50\40\46\3\0"+
+    "\7\46\6\17\1\23\1\17\1\51\1\52\1\53\3\17"+
+    "\1\26\30\17\1\34\7\17\1\54\1\17\1\54\1\17"+
+    "\1\55\1\54\4\17\6\56\1\57\1\56\1\60\1\56"+
+    "\1\25\15\56\1\61\1\56\1\61\1\56\1\61\3\56"+
+    "\1\61\14\56\1\61\13\56\5\62\1\63\5\62\1\64"+
+    "\10\62\22\64\1\62\1\65\2\64\3\62\1\64\4\62"+
+    "\1\66\6\62\57\11\1\67\11\11\13\62\1\44\10\62"+
+    "\22\44\2\62\2\44\3\62\1\44\7\62\1\70\16\62"+
+    "\1\44\10\62\22\44\2\62\2\44\1\62\1\71\1\62"+
+    "\1\44\20\62\1\63\5\62\1\44\10\62\22\44\2\62"+
+    "\2\44\3\62\1\44\14\62\2\42\2\62\1\63\5\62"+
+    "\1\44\1\62\1\42\6\62\22\44\1\42\1\62\2\44"+
+    "\3\62\1\44\13\62\13\72\1\44\10\72\22\44\2\72"+
+    "\2\44\3\72\1\44\4\72\1\73\6\72\111\0\1\74"+
+    "\61\0\1\75\4\0\1\76\52\0\1\77\1\100\1\101"+
+    "\4\102\1\77\1\102\1\77\1\102\1\103\2\77\6\102"+
+    "\2\104\3\105\3\106\1\107\1\110\1\107\2\111\1\103"+
+    "\1\112\1\103\1\113\1\114\1\115\1\102\1\116\1\117"+
+    "\2\77\1\120\1\103\1\77\1\120\1\77\1\120\2\77"+
+    "\1\120\4\77\43\0\1\121\26\0\2\42\12\0\1\42"+
+    "\30\0\1\42\23\0\2\44\10\0\3\44\6\0\23\44"+
+    "\1\0\2\44\3\0\1\44\24\0\1\122\4\0\1\76"+
+    "\43\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\6\102\2\104\3\105"+
+    "\3\106\1\107\1\110\1\107\2\111\1\103\1\112\1\103"+
+    "\1\113\1\114\1\115\1\102\1\116\1\117\2\77\1\120"+
+    "\1\103\1\77\1\120\1\77\1\120\2\77\1\120\4\77"+
+    "\63\0\1\125\20\0\1\64\10\0\22\64\2\0\2\64"+
+    "\3\0\1\64\26\0\1\65\10\0\22\65\2\0\2\65"+
+    "\3\0\1\65\24\0\1\126\63\0\1\127\33\0\1\130"+
+    "\11\0\1\131\1\132\6\0\1\133\2\0\1\133\1\134"+
+    "\1\135\1\136\11\0\1\137\60\0\2\100\43\0\1\100"+
+    "\24\0\1\140\43\0\1\140\22\0\71\141\1\0\2\142"+
+    "\3\0\1\143\16\0\2\142\4\0\3\142\3\0\1\142"+
+    "\1\0\1\142\2\0\1\142\23\0\2\144\22\0\2\144"+
+    "\4\0\3\144\3\0\1\144\1\0\1\144\2\0\1\144"+
+    "\23\0\1\100\1\145\43\0\1\145\74\0\1\146\1\147"+
+    "\67\0\1\150\13\0\1\151\70\0\1\152\1\153\1\0"+
+    "\5\154\1\0\63\154\2\0\1\155\43\0\1\155\23\0"+
+    "\2\156\22\0\2\156\4\0\3\156\3\0\1\156\1\0"+
+    "\1\156\2\0\1\156\23\0\2\157\4\0\1\160\15\0"+
+    "\2\157\4\0\3\157\3\0\1\157\1\0\1\157\2\0"+
+    "\1\157\23\0\2\161\22\0\2\161\4\0\3\161\3\0"+
+    "\1\161\1\0\1\161\2\0\1\161\23\0\1\100\1\162"+
+    "\43\0\1\162\22\0\5\154\1\163\63\154\2\0\1\164"+
+    "\43\0\1\164\23\0\2\165\4\0\1\156\15\0\2\165"+
+    "\4\0\3\165\3\0\1\165\1\0\1\165\2\0\1\165"+
+    "\23\0\2\166\22\0\2\166\4\0\3\166\3\0\1\166"+
+    "\1\0\1\166\2\0\1\166\23\0\2\167\4\0\1\156"+
+    "\15\0\2\167\4\0\3\167\3\0\1\167\1\0\1\167"+
+    "\2\0\1\167\23\0\2\170\22\0\2\170\4\0\3\170"+
+    "\3\0\1\170\1\0\1\170\2\0\1\170\23\0\2\171"+
+    "\4\0\1\156\15\0\2\171\4\0\3\171\3\0\1\171"+
+    "\1\0\1\171\2\0\1\171\23\0\2\172\4\0\1\156"+
+    "\15\0\2\172\4\0\3\172\3\0\1\172\1\0\1\172"+
+    "\2\0\1\172\23\0\2\173\4\0\1\156\15\0\2\173"+
+    "\4\0\3\173\3\0\1\173\1\0\1\173\2\0\1\173"+
+    "\23\0\2\174\4\0\1\156\15\0\2\174\4\0\3\174"+
+    "\3\0\1\174\1\0\1\174\2\0\1\174\23\0\2\174"+
+    "\4\0\1\160\15\0\2\174\4\0\3\174\3\0\1\174"+
+    "\1\0\1\174\2\0\1\174\22\0";
 
   private static int [] zzUnpackTrans() {
-    int [] result = new int[3190];
+    int [] result = new int[3135];
     int offset = 0;
     offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
     return result;
@@ -389,11 +392,11 @@ class _RegExLexer implements FlexLexer {
   private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
 
   private static final String ZZ_ATTRIBUTE_PACKED_0 =
-    "\7\0\2\1\5\0\2\11\1\1\2\11\2\1\12\11"+
+    "\10\0\1\1\5\0\2\11\1\1\2\11\2\1\12\11"+
     "\1\1\1\11\1\1\1\11\1\1\4\11\1\1\1\11"+
     "\1\1\1\11\1\1\2\11\1\1\3\11\2\1\5\11"+
-    "\2\1\1\11\1\0\1\11\2\1\7\11\1\1\2\11"+
-    "\3\1\1\11\1\1\7\11\1\0\1\1\4\11\1\0"+
+    "\2\1\1\11\1\0\1\11\2\1\6\11\1\1\2\11"+
+    "\3\1\1\11\1\1\10\11\1\0\1\1\4\11\1\0"+
     "\1\11\1\1\1\11\4\1\6\11\1\0\1\1\1\11"+
     "\1\1\1\11\2\1\2\11\3\1\1\11\4\1";
 
@@ -524,14 +527,14 @@ class _RegExLexer implements FlexLexer {
    * @param packed   the packed character translation table
    * @return         the unpacked character translation table
    */
-  private static char [] zzUnpackCMap(String packed) {
-    char [] map = new char[0x110000];
+  private static char [] zzUnpackCMap(String packed, int limit) {
+    char [] map = new char[limit];
     int i = 0;  /* index in packed string  */
     int j = 0;  /* index in unpacked array */
-    while (i < 2594) {
+    while (i < 2594 && j < limit) {
       int  count = packed.charAt(i++);
       char value = packed.charAt(i++);
-      do map[j++] = value; while (--count > 0);
+      do map[j++] = value; while (--count > 0 && j < limit);
     }
     return map;
   }
@@ -658,18 +661,6 @@ class _RegExLexer implements FlexLexer {
   }
 
 
-  /**
-   * Contains user EOF-code, which will be executed exactly once,
-   * when the end of file is reached
-   */
-  private void zzDoEOF() {
-    if (!zzEOFDone) {
-      zzEOFDone = true;
-    
-    }
-  }
-
-
   /**
    * Resumes scanning until the next regular expression is matched,
    * the end of input is encountered or an I/O-Error occurs.
@@ -738,6 +729,7 @@ class _RegExLexer implements FlexLexer {
               zzCurrentPosL += Character.charCount(zzInput);
             }
           }
+          if (zzInput >= zzCMapL.length) ZZ_CMAP = zzCMapL = zzInput >= ZZ_MX ? L.MAP : M.MAP;
           int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
           if (zzNext == -1) break zzForAction;
           zzState = zzNext;
@@ -757,158 +749,157 @@ class _RegExLexer implements FlexLexer {
 
       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;
+            { yypopstate(); return RegExpTT.COMMENT;
             }
           case 82: break;
           case 2: 
-            { yypopstate(); return RegExpTT.COMMENT;
+            { return RegExpTT.CHARACTER;
             }
           case 83: break;
           case 3: 
-            { return RegExpTT.CHARACTER;
+            { return RegExpTT.DOT;
             }
           case 84: break;
           case 4: 
-            { return RegExpTT.DOT;
+            { capturingGroupCount++; return RegExpTT.GROUP_BEGIN;
             }
           case 85: break;
           case 5: 
-            { capturingGroupCount++; return RegExpTT.GROUP_BEGIN;
+            { return RegExpTT.GROUP_END;
             }
           case 86: break;
           case 6: 
-            { return RegExpTT.GROUP_END;
+            { if (yystate() != CLASS2) yypushstate(EMBRACED); return RegExpTT.LBRACE;
             }
           case 87: break;
           case 7: 
-            { if (yystate() != CLASS2) yypushstate(EMBRACED); return RegExpTT.LBRACE;
+            { yypushstate(CLASS2);
+                            return RegExpTT.CLASS_BEGIN;
             }
           case 88: break;
           case 8: 
-            { yypushstate(CLASS2);
-                            return RegExpTT.CLASS_BEGIN;
+            { return StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN;
             }
           case 89: break;
           case 9: 
-            { return StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN;
+            { return RegExpTT.CARET;
             }
           case 90: break;
           case 10: 
-            { return commentMode ? com.intellij.psi.TokenType.WHITE_SPACE : RegExpTT.CTRL_CHARACTER;
+            { return RegExpTT.DOLLAR;
             }
           case 91: break;
           case 11: 
-            { return RegExpTT.CARET;
+            { return RegExpTT.QUEST;
             }
           case 92: break;
           case 12: 
-            { return RegExpTT.DOLLAR;
+            { return RegExpTT.STAR;
             }
           case 93: break;
           case 13: 
-            { return RegExpTT.QUEST;
+            { return RegExpTT.PLUS;
             }
           case 94: break;
           case 14: 
-            { return RegExpTT.STAR;
+            { return RegExpTT.UNION;
             }
           case 95: break;
           case 15: 
-            { return RegExpTT.PLUS;
+            { return RegExpTT.MINUS;
             }
           case 96: break;
           case 16: 
-            { return RegExpTT.UNION;
+            { return commentMode ? com.intellij.psi.TokenType.WHITE_SPACE : RegExpTT.CHARACTER;
             }
           case 97: break;
           case 17: 
-            { return RegExpTT.MINUS;
+            { return commentMode ? com.intellij.psi.TokenType.WHITE_SPACE : RegExpTT.CTRL_CHARACTER;
             }
           case 98: break;
           case 18: 
-            { return commentMode ? com.intellij.psi.TokenType.WHITE_SPACE : RegExpTT.CHARACTER;
+            { if (commentMode) { yypushstate(COMMENT); return RegExpTT.COMMENT; } else return 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 100: break;
+          case 20: 
+            { return RegExpTT.NUMBER;
+            }
           case 101: break;
           case 21: 
-            { return RegExpTT.NUMBER;
+            { yypopstate(); return RegExpTT.RBRACE;
             }
           case 102: break;
           case 22: 
-            { yypopstate(); return RegExpTT.RBRACE;
+            { return RegExpTT.NAME;
             }
           case 103: break;
           case 23: 
-            { return RegExpTT.NAME;
+            { return RegExpTT.COMMA;
             }
           case 104: break;
           case 24: 
-            { return RegExpTT.COMMA;
+            { assert false : yytext();
             }
           case 105: break;
           case 25: 
-            { assert false : yytext();
+            { yybegin(CLASS2); return RegExpTT.CHARACTER;
             }
           case 106: break;
           case 26: 
-            { yybegin(CLASS2); return RegExpTT.CHARACTER;
+            { yybegin(CLASS1); return RegExpTT.CARET;
             }
           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 108: break;
+          case 28: 
+            { yypopstate(); return RegExpTT.CLASS_END;
+            }
           case 109: break;
           case 29: 
-            { yypopstate(); return RegExpTT.CLASS_END;
+            { return commentMode ? com.intellij.psi.TokenType.WHITE_SPACE : RegExpTT.ESC_CHARACTER;
             }
           case 110: break;
           case 30: 
-            { return commentMode ? com.intellij.psi.TokenType.WHITE_SPACE : RegExpTT.ESC_CHARACTER;
+            { yypopstate(); yypushback(1);
             }
           case 111: break;
           case 31: 
-            { yypopstate(); yypushback(1);
+            { yypopstate(); yypushstate(EMBRACED); return RegExpTT.LBRACE;
             }
           case 112: break;
           case 32: 
-            { yypopstate(); yypushstate(EMBRACED); return RegExpTT.LBRACE;
+            { yypopstate(); if (allowCategoryShorthand) return RegExpTT.CATEGORY_SHORT_HAND; else yypushback(1);
             }
           case 113: break;
           case 33: 
-            { yypopstate(); if (allowCategoryShorthand) return RegExpTT.CATEGORY_SHORT_HAND; else yypushback(1);
+            { yybegin(YYINITIAL); return RegExpTT.BAD_CHARACTER;
             }
           case 114: break;
           case 34: 
-            { yybegin(YYINITIAL); return RegExpTT.BAD_CHARACTER;
+            { yybegin(YYINITIAL); return RegExpTT.GROUP_END;
             }
           case 115: break;
           case 35: 
-            { yybegin(YYINITIAL); return RegExpTT.GROUP_END;
+            { handleOptions(); return RegExpTT.OPTIONS_ON;
             }
           case 116: break;
           case 36: 
@@ -964,43 +955,43 @@ class _RegExLexer implements FlexLexer {
             }
           case 127: break;
           case 47: 
-            { return commentMode ? RegExpTT.CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
+            { return RegExpTT.ESC_CTRL_CHARACTER;
             }
           case 128: break;
           case 48: 
-            { return RegExpTT.ESC_CTRL_CHARACTER;
+            { return yystate() != CLASS2 ? RegExpTT.BOUNDARY : RegExpTT.ESC_CHARACTER;
             }
           case 129: break;
           case 49: 
-            { return yystate() != CLASS2 ? RegExpTT.BOUNDARY : RegExpTT.ESC_CHARACTER;
+            { return RegExpTT.CHAR_CLASS;
             }
           case 130: break;
           case 50: 
-            { return RegExpTT.CHAR_CLASS;
+            { if (xmlSchemaMode) return RegExpTT.CHAR_CLASS; else return StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN;
             }
           case 131: break;
           case 51: 
-            { if (xmlSchemaMode) return RegExpTT.CHAR_CLASS; else return StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN;
+            { yypushstate(PROP); return RegExpTT.PROPERTY;
             }
           case 132: break;
           case 52: 
-            { yypushstate(PROP); return RegExpTT.PROPERTY;
+            { yypushstate(QUOTED); return RegExpTT.QUOTE_BEGIN;
             }
           case 133: break;
           case 53: 
-            { yypushstate(QUOTED); return RegExpTT.QUOTE_BEGIN;
+            { return RegExpTT.BAD_HEX_VALUE;
             }
           case 134: break;
           case 54: 
-            { return RegExpTT.BAD_HEX_VALUE;
+            { return StringEscapesTokenTypes.INVALID_UNICODE_ESCAPE_TOKEN;
             }
           case 135: break;
           case 55: 
-            { return StringEscapesTokenTypes.INVALID_UNICODE_ESCAPE_TOKEN;
+            { return (allowHexDigitClass || allowHorizontalWhitespaceClass ? RegExpTT.CHAR_CLASS : StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN);
             }
           case 136: break;
           case 56: 
-            { return (allowHexDigitClass || allowHorizontalWhitespaceClass ? RegExpTT.CHAR_CLASS : StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN);
+            { return commentMode ? RegExpTT.CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
             }
           case 137: break;
           case 57: 
index 9d1ea297ace6f7f95ba3274132d1cad5eb8ea417..584a0a70f2c42b918394d1869baccf792ed7a856 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2013 JetBrains s.r.o.
+ * 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.
@@ -20,12 +20,17 @@ import com.intellij.openapi.Disposable;
 import com.intellij.openapi.actionSystem.AnAction;
 import com.intellij.openapi.actionSystem.AnActionEvent;
 import com.intellij.openapi.actionSystem.CustomShortcutSet;
+import com.intellij.openapi.application.ApplicationManager;
 import com.intellij.openapi.editor.Document;
 import com.intellij.openapi.editor.event.DocumentAdapter;
 import com.intellij.openapi.editor.event.DocumentEvent;
 import com.intellij.openapi.fileTypes.PlainTextFileType;
+import com.intellij.openapi.progress.ProcessCanceledException;
 import com.intellij.openapi.project.Project;
+import com.intellij.openapi.util.Computable;
+import com.intellij.openapi.util.Condition;
 import com.intellij.openapi.util.Disposer;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.openapi.wm.IdeFocusManager;
 import com.intellij.psi.PsiDocumentManager;
 import com.intellij.psi.PsiFile;
@@ -36,6 +41,7 @@ import com.intellij.ui.Gray;
 import com.intellij.ui.JBColor;
 import com.intellij.ui.components.JBLabel;
 import com.intellij.util.Alarm;
+import com.intellij.util.ui.JBUI;
 import com.intellij.util.ui.UIUtil;
 import org.intellij.lang.regexp.RegExpLanguage;
 import org.intellij.lang.regexp.RegExpModifierProvider;
@@ -44,7 +50,6 @@ import org.jetbrains.annotations.TestOnly;
 
 import javax.swing.*;
 import javax.swing.border.CompoundBorder;
-import javax.swing.border.EmptyBorder;
 import javax.swing.border.LineBorder;
 import java.awt.*;
 import java.util.regex.Pattern;
@@ -55,8 +60,8 @@ import java.util.regex.Pattern;
 public class CheckRegExpForm {
   private static final String LAST_EDITED_REGEXP = "last.edited.regexp";
 
-  private static final JBColor BACKGROUND_COLOR_MATCH = new JBColor(new Color(231, 250, 219), new Color(68, 85, 66));
-  private static final JBColor BACKGROUND_COLOR_NOMATCH = new JBColor(new Color(255, 177, 160), new Color(110, 43, 40));
+  private static final JBColor BACKGROUND_COLOR_MATCH = new JBColor(0xe7fadb, 0x445542);
+  private static final JBColor BACKGROUND_COLOR_NOMATCH = new JBColor(0xffb1a0, 0x6e2b28);
 
   private final PsiFile myRegexpFile;
 
@@ -77,11 +82,11 @@ public class CheckRegExpForm {
     Document document = PsiDocumentManager.getInstance(myProject).getDocument(myRegexpFile);
 
     myRegExp = new EditorTextField(document, myProject, RegExpLanguage.INSTANCE.getAssociatedFileType());
-    myRegExp.setPreferredWidth(Math.max(300, myRegExp.getPreferredSize().width));
+    myRegExp.setPreferredWidth(Math.max(JBUI.scale(300), myRegExp.getPreferredSize().width));
     final String sampleText = PropertiesComponent.getInstance(myProject).getValue(LAST_EDITED_REGEXP, "Sample Text");
     mySampleText = new EditorTextField(sampleText, myProject, PlainTextFileType.INSTANCE);
     mySampleText.setBorder(
-      new CompoundBorder(new EmptyBorder(2, 2, 2, 4), new LineBorder(UIUtil.isUnderDarcula() ? Gray._100 : JBColor.border())));
+      new CompoundBorder(JBUI.Borders.empty(2, 2, 2, 4), new LineBorder(UIUtil.isUnderDarcula() ? Gray._100 : JBColor.border())));
     mySampleText.setOneLineMode(false);
 
     myRootPanel = new JPanel(new BorderLayout()) {
@@ -101,7 +106,7 @@ public class CheckRegExpForm {
           }
         }.registerCustomShortcutSet(CustomShortcutSet.fromString("shift TAB"), mySampleText);
 
-        final Alarm updater = new Alarm(Alarm.ThreadToUse.SWING_THREAD, disposable);
+        final Alarm updater = new Alarm(Alarm.ThreadToUse.POOLED_THREAD, disposable);
         DocumentAdapter documentListener = new DocumentAdapter() {
           @Override
           public void documentChanged(DocumentEvent e) {
@@ -143,32 +148,53 @@ public class CheckRegExpForm {
   }
 
   private void updateBalloon() {
-    boolean correct = isMatchingText(myRegexpFile, mySampleText.getText());
+    final Boolean correct = isMatchingText(myRegexpFile, mySampleText.getText());
 
-    mySampleText.setBackground(correct ? BACKGROUND_COLOR_MATCH : BACKGROUND_COLOR_NOMATCH);
-    myMessage.setText(correct ? "Matches!" : "no match");
-    myRootPanel.revalidate();
+    ApplicationManager.getApplication().invokeLater(new Runnable() {
+      public void run() {
+        mySampleText.setBackground(correct != null && correct ? BACKGROUND_COLOR_MATCH : BACKGROUND_COLOR_NOMATCH);
+        myMessage.setText(correct == null ? "Pattern is too complex" : correct ? "Matches!" : "No match");
+        myRootPanel.revalidate();
+      }
+    }, new Condition() {
+      @Override
+      public boolean value(Object o) {
+        return false;
+      }
+    });
   }
 
   @TestOnly
   public static boolean isMatchingTextTest(@NotNull PsiFile regexpFile, @NotNull String sampleText) {
-    return isMatchingText(regexpFile, sampleText);
+    Boolean result = isMatchingText(regexpFile, sampleText);
+    return result != null && result;
   }
 
-  private static boolean isMatchingText(@NotNull PsiFile regexpFile, @NotNull String sampleText) {
+  private static Boolean isMatchingText(@NotNull final PsiFile regexpFile, @NotNull String sampleText) {
     final String regExp = regexpFile.getText();
 
-    PsiLanguageInjectionHost host = InjectedLanguageUtil.findInjectionHost(regexpFile);
-    int flags = 0;
-    if (host != null) {
-      for (RegExpModifierProvider provider : RegExpModifierProvider.EP.allForLanguage(host.getLanguage())) {
-        flags = provider.getFlags(host, regexpFile);
-        if (flags > 0) break;
+    Integer patternFlags = ApplicationManager.getApplication().runReadAction(new Computable<Integer>() {
+      @Override
+      public Integer compute() {
+        PsiLanguageInjectionHost host = InjectedLanguageUtil.findInjectionHost(regexpFile);
+        int flags = 0;
+        if (host != null) {
+          for (RegExpModifierProvider provider : RegExpModifierProvider.EP.allForLanguage(host.getLanguage())) {
+            flags = provider.getFlags(host, regexpFile);
+            if (flags > 0) break;
+          }
+        }
+        return flags;
       }
-    }
+    });
+
     try {
-      return Pattern.compile(regExp, flags).matcher(sampleText).matches();
-    } catch (Exception ignore) {}
+      //noinspection MagicConstant
+      return Pattern.compile(regExp, patternFlags).matcher(StringUtil.newBombedCharSequence(sampleText, 1000)).matches();
+    } catch (ProcessCanceledException pc) {
+      return null;
+    }
+    catch (Exception ignore) {}
 
     return false;
   }
index 0695437271198541ed15f3433f5c4f8fe2098296..14a8996ab09a177ba8c110ed28f0a0733c64f7d5 100644 (file)
@@ -16,8 +16,6 @@ import java.util.EnumSet;
 %unicode
 %function advance
 %type IElementType
-%eof{  return;
-%eof}
 
 %{
     // This adds support for nested states. I'm no JFlex pro, so maybe this is overkill, but it works quite well.
@@ -100,7 +98,7 @@ RBRACKET="]"
 
 ESCAPE="\\"
 NAME=[:letter:]([:letter:]|_|[:digit:])*
-ANY=.|\n
+ANY=[^]
 
 META={ESCAPE} | {DOT} |
   "^" | "$" | "?" | "*" | "+" | "|" |
@@ -304,7 +302,7 @@ HEX_CHAR=[0-9a-fA-F]
 }
 
 <OPTIONS> {
-  [:letter:]*         { handleOptions(); return RegExpTT.OPTIONS_ON; }
+  [:letter:]+         { handleOptions(); return RegExpTT.OPTIONS_ON; }
   ("-" [:letter:]*)   { handleOptions(); return RegExpTT.OPTIONS_OFF; }
 
   ":"               { yybegin(YYINITIAL); return RegExpTT.COLON;  }
index 8650991bd669eb4fa9dee1c9ede1e14d0e9eae13..0c687b36bf7f5b54e901ee609f4810267413ba9d 100644 (file)
@@ -34,6 +34,15 @@ public class RegExpLexerTest extends LexerTestCase {
                     "CLASS_END (']')", lexer);
   }
 
+  public void testQE() {
+    final RegExpLexer lexer = new RegExpLexer(EnumSet.noneOf(RegExpCapability.class));
+    doTest("\\Q\r\n\\E", "QUOTE_BEGIN ('\\Q')\n" +
+                         "CHARACTER ('\n" +
+                         "')\n" +
+                         "CHARACTER ('\\n')\n" +
+                         "QUOTE_END ('\\E')", lexer);
+  }
+
   public void testIntersection() {
     final RegExpLexer lexer = new RegExpLexer(EnumSet.of(RegExpCapability.NESTED_CHARACTER_CLASSES));
     doTest("[a&&]", "CLASS_BEGIN ('[')\n" +
index b331a2693324efad378cdc8055f4a4355f28a498..b4a222f467fb148fe6e77cb9203ed3207665ab86 100755 (executable)
Binary files a/build/conf/mac/Contents/MacOS/idea and b/build/conf/mac/Contents/MacOS/idea differ
index ed196fcf73c87de0d71bf88e0960706413e27cd8..3e350848398b3e0b05d6d922502f3c7baf2fe3f9 100644 (file)
@@ -19,14 +19,19 @@ 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") {
+  java(jvm: jreArtifactPlatform == "mac" ? "$workIdeaHome/jre/jdk/Contents/Home/jre/bin/java" : "$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
+  try {
+    if (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
+    }
+  }
+  catch (MissingPropertyException ignored) {
+    echo "Could'nt determine existing JRE version"
   }
   def files = new XmlSlurper().parse("$jreTeamcityUrl/builds/id:$buildId/artifacts/children/$jreArtifactPlatform")
   def artifact = files.children().collect { it.@name.text() }.find {
index f1cfe923f16a62fd91e253b733c5ee4395441de8..b81974908f95ad45ee0056a8a846b7bba150d402 100755 (executable)
@@ -1,4 +1,4 @@
-#! /bin/bash
+#!/bin/sh
 #
 # This script updates your IntelliJ IDEA CE installation from the latest compiled classes. This way you can easily
 # upgrade your working IDEA to the latest changes.
@@ -13,12 +13,12 @@ if [ ! -f "$WORK_IDEA_HOME/bin/inspect.sh" -a -f "$WORK_IDEA_HOME/Contents/bin/i
   WORK_IDEA_HOME="$WORK_IDEA_HOME/Contents"
 fi
 if [ ! -f "$WORK_IDEA_HOME/bin/inspect.sh" ]; then
-  echo "WORK_IDEA_HOME must be defined and point to build you're updating."
+  echo "WORK_IDEA_HOME must be defined and point to the installation you're updating."
   exit 1
 fi
 
 if [ ! -f "$DEV_IDEA_HOME/build/update.sh" ]; then
-  echo "DEV_IDEA_HOME must be defined and point to source base you're updating from."
+  echo "DEV_IDEA_HOME must be defined and point to the source base you're updating from."
   exit 1
 fi
 
index dbcf2506bf9d8120754904e166a3a72b90b6f0ca..ecfe40b8103c06faad076ad9892b8526014ed39c 100644 (file)
             text="Show Chessboard"
             description="Show a chessboard on transparent image parts">
     </action>
+    <action class="org.intellij.images.editor.actions.SetBackgroundImageAction"
+            id="Images.SetBackgroundImageAction"
+            text="Set Background Image">
+      <add-to-group group-id="ProjectViewPopupMenu"/>
+    </action>
     <group id="Images.EditorToolbar">
       <reference id="Images.ToggleTransparencyChessboard"/>
       <action class="org.intellij.images.editor.actions.ToggleGridAction"
diff --git a/images/src/org/intellij/images/editor/actions/SetBackgroundImageAction.java b/images/src/org/intellij/images/editor/actions/SetBackgroundImageAction.java
new file mode 100644 (file)
index 0000000..5bb5e63
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+package org.intellij.images.editor.actions;
+
+import com.intellij.openapi.actionSystem.ActionPlaces;
+import com.intellij.openapi.actionSystem.AnActionEvent;
+import com.intellij.openapi.actionSystem.CommonDataKeys;
+import com.intellij.openapi.project.DumbAwareAction;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vfs.VirtualFile;
+import org.intellij.images.fileTypes.ImageFileTypeManager;
+
+/**
+ * @author gregsh
+ */
+public class SetBackgroundImageAction extends DumbAwareAction {
+
+  @Override
+  public void update(AnActionEvent e) {
+    Project project = e.getProject();
+    VirtualFile file = e.getData(CommonDataKeys.VIRTUAL_FILE);
+    boolean image = file != null && ImageFileTypeManager.getInstance().isImage(file);
+    boolean visible = !ActionPlaces.isPopupPlace(e.getPlace()) || image;
+    e.getPresentation().setEnabled(project != null);
+    e.getPresentation().setVisible(visible);
+  }
+
+  @Override
+  public void actionPerformed(AnActionEvent e) {
+    Project project = e.getProject();
+    if (project == null) return;
+    VirtualFile file = e.getData(CommonDataKeys.VIRTUAL_FILE);
+    boolean image = file != null && ImageFileTypeManager.getInstance().isImage(file);
+    SetBackgroundImageDialog dialog = new SetBackgroundImageDialog(project, image ? file.getPath() : null);
+    dialog.showAndGet();
+  }
+}
diff --git a/images/src/org/intellij/images/editor/actions/SetBackgroundImageDialog.form b/images/src/org/intellij/images/editor/actions/SetBackgroundImageDialog.form
new file mode 100644 (file)
index 0000000..1224d45
--- /dev/null
@@ -0,0 +1,209 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="org.intellij.images.editor.actions.SetBackgroundImageDialog">
+  <grid id="cbd77" binding="myRoot" layout-manager="GridLayoutManager" row-count="4" column-count="6" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
+    <margin top="10" left="10" bottom="10" right="10"/>
+    <constraints>
+      <xy x="48" y="54" width="652" height="456"/>
+    </constraints>
+    <properties/>
+    <border type="none"/>
+    <children>
+      <grid id="4ca83" layout-manager="GridLayoutManager" row-count="1" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
+        <margin top="0" left="0" bottom="0" right="0"/>
+        <constraints>
+          <grid row="3" column="0" row-span="1" col-span="2" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
+        </constraints>
+        <properties/>
+        <border type="none"/>
+        <children>
+          <component id="ac981" class="com.intellij.ui.components.JBRadioButton">
+            <constraints>
+              <grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
+            </constraints>
+            <properties>
+              <text value="IDE background"/>
+            </properties>
+          </component>
+          <component id="c72f5" class="com.intellij.ui.components.JBRadioButton" binding="myEditorRb">
+            <constraints>
+              <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
+            </constraints>
+            <properties>
+              <text value="Editor background"/>
+            </properties>
+          </component>
+        </children>
+      </grid>
+      <grid id="73c41" binding="myPreviewPanel" layout-manager="BorderLayout" hgap="0" vgap="0">
+        <constraints>
+          <grid row="2" column="0" row-span="1" col-span="3" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
+        </constraints>
+        <properties/>
+        <border type="none"/>
+        <children/>
+      </grid>
+      <component id="94212" class="com.intellij.ui.ComboboxWithBrowseButton" binding="myPathField" custom-create="true">
+        <constraints>
+          <grid row="0" column="1" row-span="1" col-span="5" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
+        </constraints>
+        <properties/>
+      </component>
+      <vspacer id="abb42">
+        <constraints>
+          <grid row="2" column="3" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
+        </constraints>
+      </vspacer>
+      <grid id="1d970" layout-manager="GridLayoutManager" row-count="11" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
+        <margin top="0" left="0" bottom="0" right="0"/>
+        <constraints>
+          <grid row="2" column="4" row-span="1" col-span="2" vsize-policy="3" hsize-policy="0" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
+        </constraints>
+        <properties/>
+        <border type="none"/>
+        <children>
+          <component id="ac573" class="com.intellij.ui.components.JBLabel">
+            <constraints>
+              <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
+            </constraints>
+            <properties>
+              <text value="Placement:"/>
+            </properties>
+          </component>
+          <component id="a8fd9" class="com.intellij.ui.components.JBRadioButton" binding="myScaleRb">
+            <constraints>
+              <grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
+            </constraints>
+            <properties>
+              <text value="Scale"/>
+            </properties>
+          </component>
+          <component id="fc37b" class="com.intellij.ui.components.JBRadioButton" default-binding="true">
+            <constraints>
+              <grid row="2" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
+            </constraints>
+            <properties>
+              <text value="Tile"/>
+            </properties>
+          </component>
+          <component id="1eb66" class="com.intellij.ui.components.JBRadioButton" default-binding="true">
+            <constraints>
+              <grid row="3" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
+            </constraints>
+            <properties>
+              <text value="Center"/>
+            </properties>
+          </component>
+          <component id="77b44" class="com.intellij.ui.components.JBRadioButton" default-binding="true">
+            <constraints>
+              <grid row="4" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
+            </constraints>
+            <properties>
+              <text value="Top-left"/>
+            </properties>
+          </component>
+          <component id="2830" class="com.intellij.ui.components.JBRadioButton" default-binding="true">
+            <constraints>
+              <grid row="5" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
+            </constraints>
+            <properties>
+              <text value="Top-center"/>
+            </properties>
+          </component>
+          <component id="683fb" class="com.intellij.ui.components.JBRadioButton" default-binding="true">
+            <constraints>
+              <grid row="6" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
+            </constraints>
+            <properties>
+              <text value="Top-right"/>
+            </properties>
+          </component>
+          <component id="961d9" class="com.intellij.ui.components.JBRadioButton" default-binding="true">
+            <constraints>
+              <grid row="7" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
+            </constraints>
+            <properties>
+              <text value="Bottom-left"/>
+            </properties>
+          </component>
+          <component id="b2175" class="com.intellij.ui.components.JBRadioButton" default-binding="true">
+            <constraints>
+              <grid row="8" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
+            </constraints>
+            <properties>
+              <text value="Bottom-center"/>
+            </properties>
+          </component>
+          <component id="f09c6" class="com.intellij.ui.components.JBRadioButton" default-binding="true">
+            <constraints>
+              <grid row="9" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
+            </constraints>
+            <properties>
+              <text value="Bottom-right"/>
+            </properties>
+          </component>
+          <vspacer id="f690c">
+            <constraints>
+              <grid row="10" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
+            </constraints>
+          </vspacer>
+        </children>
+      </grid>
+      <component id="fe56c" class="javax.swing.JSlider" binding="myOpacitySlider">
+        <constraints>
+          <grid row="1" column="1" row-span="1" col-span="4" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false"/>
+        </constraints>
+        <properties>
+          <paintTicks value="false"/>
+        </properties>
+      </component>
+      <component id="a265f" class="javax.swing.JSpinner" binding="myOpacitySpinner">
+        <constraints>
+          <grid row="1" column="5" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="1" indent="0" use-parent-layout="false"/>
+        </constraints>
+        <properties/>
+      </component>
+      <component id="33a0d" class="com.intellij.ui.components.JBLabel">
+        <constraints>
+          <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
+        </constraints>
+        <properties>
+          <labelFor value="94212"/>
+          <text value="Image:"/>
+        </properties>
+      </component>
+      <component id="11c6f" class="com.intellij.ui.components.JBLabel">
+        <constraints>
+          <grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
+        </constraints>
+        <properties>
+          <labelFor value="a265f"/>
+          <text value="Opacity:"/>
+        </properties>
+      </component>
+      <hspacer id="909f7">
+        <constraints>
+          <grid row="3" column="2" row-span="1" col-span="4" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
+        </constraints>
+      </hspacer>
+    </children>
+  </grid>
+  <buttonGroups>
+    <group name="myTarget">
+      <member id="ac981"/>
+      <member id="ac981"/>
+      <member id="c72f5"/>
+    </group>
+    <group name="myType">
+      <member id="a8fd9"/>
+      <member id="a8fd9"/>
+      <member id="fc37b"/>
+      <member id="1eb66"/>
+      <member id="77b44"/>
+      <member id="2830"/>
+      <member id="683fb"/>
+      <member id="961d9"/>
+      <member id="b2175"/>
+      <member id="f09c6"/>
+    </group>
+  </buttonGroups>
+</form>
diff --git a/images/src/org/intellij/images/editor/actions/SetBackgroundImageDialog.java b/images/src/org/intellij/images/editor/actions/SetBackgroundImageDialog.java
new file mode 100644 (file)
index 0000000..05f0a46
--- /dev/null
@@ -0,0 +1,362 @@
+/*
+ * 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.
+ */
+package org.intellij.images.editor.actions;
+
+import com.intellij.application.options.colors.ColorAndFontOptions;
+import com.intellij.application.options.colors.SimpleEditorPreview;
+import com.intellij.ide.util.PropertiesComponent;
+import com.intellij.openapi.components.ServiceManager;
+import com.intellij.openapi.editor.colors.EditorColorsManager;
+import com.intellij.openapi.editor.colors.EditorColorsScheme;
+import com.intellij.openapi.fileChooser.FileChooser;
+import com.intellij.openapi.fileChooser.FileChooserDescriptor;
+import com.intellij.openapi.fileEditor.impl.EditorEmptyTextPainter;
+import com.intellij.openapi.options.colors.ColorSettingsPage;
+import com.intellij.openapi.options.colors.ColorSettingsPages;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.ui.ComboBox;
+import com.intellij.openapi.ui.DialogWrapper;
+import com.intellij.openapi.util.text.StringUtil;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.openapi.wm.impl.IdeBackgroundUtil;
+import com.intellij.ui.CollectionComboBoxModel;
+import com.intellij.ui.ComboboxWithBrowseButton;
+import com.intellij.ui.DocumentAdapter;
+import com.intellij.ui.components.JBLabel;
+import com.intellij.ui.components.JBRadioButton;
+import com.intellij.util.containers.ContainerUtil;
+import com.intellij.util.ui.JBSwingUtilities;
+import com.intellij.util.ui.update.UiNotifyConnector;
+import org.intellij.images.fileTypes.ImageFileTypeManager;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import javax.swing.*;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import javax.swing.event.DocumentEvent;
+import javax.swing.text.JTextComponent;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+public class SetBackgroundImageDialog extends DialogWrapper {
+  private final String myPropertyTmp;
+  private JPanel myRoot;
+  private JBRadioButton myEditorRb;
+  private JSlider myOpacitySlider;
+  private JSpinner myOpacitySpinner;
+  private JPanel myPreviewPanel;
+  private ComboboxWithBrowseButton myPathField;
+  private JBRadioButton myScaleRb;
+
+  boolean myAdjusting;
+  private String mySelectedPath;
+  private Map<String, String> myResults = ContainerUtil.newHashMap();
+
+  private final SimpleEditorPreview myEditorPreview;
+  private final JComponent myIdePreview;
+
+  public SetBackgroundImageDialog(@NotNull Project project, @Nullable String selectedPath) {
+    super(project, true);
+    setTitle("Background Image");
+    mySelectedPath = selectedPath;
+    myEditorPreview = createEditorPreview();
+    myIdePreview = createIdePreview();
+    myPropertyTmp = IdeBackgroundUtil.BG_PROPERTY_PREFIX + project.getLocationHash();
+    UiNotifyConnector.doWhenFirstShown(myRoot, new Runnable() {
+      @Override
+      public void run() {
+        IdeBackgroundUtil.createTemporaryBackgroundTransform(myPreviewPanel, myPropertyTmp, getDisposable());
+      }
+    });
+    setupComponents();
+    restoreRecentImages();
+    setSelectedPath(mySelectedPath);
+    targetChanged(null);
+    init();
+  }
+
+  private void createUIComponents() {
+    ComboBox<String> comboBox = new ComboBox<>(new CollectionComboBoxModel<String>(), 100);
+    myPathField = new ComboboxWithBrowseButton(comboBox);
+  }
+
+  @Override
+  protected void dispose() {
+    super.dispose();
+    myEditorPreview.disposeUIResources();
+    System.getProperties().remove(myPropertyTmp);
+  }
+
+  @NotNull
+  private static SimpleEditorPreview createEditorPreview() {
+    EditorColorsScheme scheme = EditorColorsManager.getInstance().getGlobalScheme();
+    ColorAndFontOptions options = new ColorAndFontOptions();
+    options.reset();
+    options.selectScheme(scheme.getName());
+    ColorSettingsPage[] pages = ColorSettingsPages.getInstance().getRegisteredPages();
+    int round = (int)Math.round(Math.random() * (pages.length - 1));
+    return new SimpleEditorPreview(options, pages[round], false);
+  }
+
+  @NotNull
+  private static JComponent createIdePreview() {
+    return new JBLabel() {
+      EditorEmptyTextPainter p = ServiceManager.getService(EditorEmptyTextPainter.class);
+
+      @Override
+      protected Graphics getComponentGraphics(Graphics g) {
+        return JBSwingUtilities.runGlobalCGTransform(this, super.getComponentGraphics(g));
+      }
+
+      @Override
+      public void paint(Graphics gg) {
+        Graphics g = getComponentGraphics(gg);
+        g.setColor(getBackground());
+        g.fillRect(0, 0, getWidth(), getHeight());
+        g.translate(0, -50);
+        p.paintEmptyText(this, g);
+      }
+    };
+  }
+
+  @Nullable
+  @Override
+  protected String getDimensionServiceKey() {
+    return getClass().getName();
+  }
+
+  @NotNull
+  private String getRecentItemsKey() {
+    return getDimensionServiceKey() + "#recent";
+  }
+
+  @Nullable
+  @Override
+  protected JComponent createCenterPanel() {
+    return myRoot;
+  }
+
+  @Nullable
+  @Override
+  public JComponent getPreferredFocusedComponent() {
+    return myPathField;
+  }
+
+  private void setupComponents() {
+    myAdjusting = true;
+    myPreviewPanel.setLayout(new CardLayout());
+    myPreviewPanel.add(myEditorPreview.getPanel(), "editor");
+    myPreviewPanel.add(myIdePreview, "ide");
+    ((CardLayout)myPreviewPanel.getLayout()).show(myPreviewPanel, "editor");
+    myPathField.getComboBox().setEditable(true);
+    myPathField.getButton().setAction(new AbstractAction() {
+      @Override
+      public void actionPerformed(ActionEvent e) {
+        FileChooserDescriptor descriptor = new FileChooserDescriptor(true, false, false, false, true, false)
+          .withFileFilter(file -> ImageFileTypeManager.getInstance().isImage(file));
+        VirtualFile file = FileChooser.chooseFile(descriptor, myRoot, null, null);
+        if (file != null) {
+          setSelectedPath(file.getPath());
+        }
+      }
+    });
+    JTextComponent textComponent = getComboEditor();
+    textComponent.getDocument().addDocumentListener(new DocumentAdapter() {
+      @Override
+      protected void textChanged(DocumentEvent e) {
+        if (myAdjusting) return;
+        imagePathChanged();
+      }
+    });
+    for (Enumeration<AbstractButton> e = getTargetRbGroup().getElements(); e.hasMoreElements();) {
+      AbstractButton button = e.nextElement();
+      button.setActionCommand(button.getText());
+      button.addChangeListener(this::targetChanged);
+    }
+    for (Enumeration<AbstractButton> e = getTypeRbGroup().getElements(); e.hasMoreElements();) {
+      AbstractButton button = e.nextElement();
+      button.setActionCommand(button.getText());
+      button.addChangeListener(this::fillTypeChanged);
+    }
+    ChangeListener opacitySync = new ChangeListener() {
+
+      @Override
+      public void stateChanged(ChangeEvent e) {
+        if (myAdjusting) return;
+        myAdjusting = true;
+        boolean b = e.getSource() == myOpacitySpinner;
+        if (b) {
+          int value = (Integer)myOpacitySpinner.getValue();
+          myOpacitySpinner.setValue(Math.min(Math.max(0, value), 100));
+          myOpacitySlider.setValue(value);
+        }
+        else {
+          myOpacitySpinner.setValue(myOpacitySlider.getValue());
+        }
+        myAdjusting = false;
+        opacityChanged();
+      }
+    };
+    myOpacitySpinner.addChangeListener(opacitySync);
+    myOpacitySlider.addChangeListener(opacitySync);
+    myOpacitySlider.setValue(15);
+    myOpacitySpinner.setValue(15);
+    myScaleRb.setSelected(true);
+    myEditorRb.setSelected(true);
+    myAdjusting = false;
+  }
+
+  private void opacityChanged() {
+    updatePreview();
+  }
+
+  private void imagePathChanged() {
+    updatePreview();
+  }
+
+  private void fillTypeChanged(ChangeEvent event) {
+    updatePreview();
+  }
+
+  private void targetChanged(ChangeEvent event) {
+    if (StringUtil.isEmptyOrSpaces(mySelectedPath)) {
+      retrieveExistingValue();
+    }
+
+    ((CardLayout)myPreviewPanel.getLayout()).show(myPreviewPanel, myEditorRb.isSelected() ? "editor" : "ide");
+    if (myEditorRb.isSelected()) {
+      myEditorPreview.updateView();
+    }
+    updatePreview();
+  }
+
+  public void setSelectedPath(String path) {
+    mySelectedPath = path;
+    if (StringUtil.isEmptyOrSpaces(path)) return;
+    CollectionComboBoxModel<String> comboModel = getComboModel();
+    if (!comboModel.getItems().contains(path)) {
+      comboModel.add(path);
+    }
+    comboModel.setSelectedItem(path);
+    getComboEditor().setCaretPosition(0);
+  }
+
+  private void retrieveExistingValue() {
+    myAdjusting = true;
+    String prop = getSystemProp();
+    String value = StringUtil.notNullize(myResults.get(prop), getProperty(prop));
+    String[] split = value.split(",");
+    setSelectedPath(split[0]);
+    mySelectedPath = null;
+    int opacity = split.length > 1 ? StringUtil.parseInt(split[1], 15) : 15;
+    myOpacitySlider.setValue(opacity);
+    myOpacitySpinner.setValue(opacity);
+    String type = split.length > 2 ? split[2] : "scale";
+    for (Enumeration<AbstractButton> e = getTypeRbGroup().getElements(); e.hasMoreElements(); ) {
+      AbstractButton button = e.nextElement();
+      String s = button.getActionCommand().replace('-', '_');
+      if (s.equalsIgnoreCase(type)) {
+        button.setSelected(true);
+        break;
+      }
+    }
+    myAdjusting = false;
+  }
+
+  @Override
+  public void doCancelAction() {
+    storeRecentImages();
+    super.doCancelAction();
+  }
+
+  @Override
+  protected void doOKAction() {
+    storeRecentImages();
+    String value = calcNewValue();
+    String prop = getSystemProp();
+    myResults.put(prop, value);
+
+    if (value.startsWith(",")) return;
+    PropertiesComponent.getInstance().setValue(prop, value);
+
+    super.doOKAction();
+  }
+
+  private void storeRecentImages() {
+    List<String> items = getComboModel().getItems();
+    PropertiesComponent.getInstance().setValue(
+      getRecentItemsKey(),
+      StringUtil.join(items.subList(0, Math.min(items.size(), 5)), "\n"));
+  }
+
+  private CollectionComboBoxModel<String> getComboModel() {
+    //noinspection unchecked
+    return (CollectionComboBoxModel<String>)myPathField.getComboBox().getModel();
+  }
+
+  private JTextComponent getComboEditor() {
+    return (JTextComponent)myPathField.getComboBox().getEditor().getEditorComponent();
+  }
+
+  private void restoreRecentImages() {
+    String value = PropertiesComponent.getInstance().getValue(getRecentItemsKey());
+    if (value == null) return;
+    for (String s : value.split("\n")) {
+      //noinspection unchecked
+      getComboModel().add(s);
+    }
+  }
+
+  private static String getProperty(@NotNull String prop) {
+    return StringUtil.notNullize(PropertiesComponent.getInstance().getValue(prop), System.getProperty(prop, ""));
+  }
+
+  @NotNull
+  private String getSystemProp() {
+    return IdeBackgroundUtil.BG_PROPERTY_PREFIX + (myEditorRb.isSelected() ? "editor" : "ide");
+  }
+
+  private void updatePreview() {
+    String prop = getSystemProp();
+    String value = calcNewValue();
+    System.setProperty(myPropertyTmp, value);
+    myResults.put(prop, value);
+    myPreviewPanel.validate();
+    myPreviewPanel.repaint();
+  }
+
+  @NotNull
+  private String calcNewValue() {
+    String path = (String)myPathField.getComboBox().getEditor().getItem();
+    String type = getTypeRbGroup().getSelection().getActionCommand()
+      .replace('-', '_').toLowerCase(Locale.ENGLISH);
+
+    return path.trim() + "," + myOpacitySpinner.getValue() + "," + type;
+  }
+
+  private ButtonGroup getTypeRbGroup() {
+    return ((DefaultButtonModel)myScaleRb.getModel()).getGroup();
+  }
+
+  private ButtonGroup getTargetRbGroup() {
+    return ((DefaultButtonModel)myEditorRb.getModel()).getGroup();
+  }
+}
index d5047d5005abd8d16c72e48b2fdea0f7de9ca6e9..e331359ab13dd7e16e32c0233f1727a624404d6f 100644 (file)
@@ -1175,7 +1175,7 @@ public abstract class DebugProcessImpl extends UserDataHolderBase implements Deb
       @Override
       protected Value invokeMethod(int invokePolicy, Method method, final List args) throws InvocationException, ClassNotLoadedException, IncompatibleThreadStateException, InvalidTypeException {
         if (LOG.isDebugEnabled()) {
-          LOG.debug("Invok" + method.name());
+          LOG.debug("Invoking " + objRef.type().name() + "." + method.name());
         }
         return objRef.invokeMethod(thread, method, args, invokePolicy | invocationOptions);
       }
@@ -1210,7 +1210,7 @@ public abstract class DebugProcessImpl extends UserDataHolderBase implements Deb
                                                                              IncompatibleThreadStateException,
                                                                              InvalidTypeException {
         if (LOG.isDebugEnabled()) {
-          LOG.debug("Invok" + method.name());
+          LOG.debug("Invoking " + classType.name() + "." + method.name());
         }
         return classType.invokeMethod(thread, method, args, invokePolicy);
       }
@@ -1234,7 +1234,7 @@ public abstract class DebugProcessImpl extends UserDataHolderBase implements Deb
                                                                                       IncompatibleThreadStateException,
                                                                                       InvalidTypeException {
         if (LOG.isDebugEnabled()) {
-          LOG.debug("Invok" + method.name());
+          LOG.debug("Invoking " + interfaceType.name() + "." + method.name());
         }
         //TODO: remove reflection after move to java 8 or 9, this API was introduced in 1.8.0_45
         java.lang.reflect.Method invokeMethod =
@@ -1281,7 +1281,7 @@ public abstract class DebugProcessImpl extends UserDataHolderBase implements Deb
                                                                                        IncompatibleThreadStateException,
                                                                                        InvalidTypeException {
         if (LOG.isDebugEnabled()) {
-          LOG.debug("New instance " + method.name());
+          LOG.debug("New instance " + classType.name() + "." + method.name());
         }
         return classType.newInstance(thread, method, args, invokePolicy);
       }
index 28c4fd397d562f0471e44d21e976e3c96f50dcb4..9a8f2e9651d51a405dcfa86377bf14e5a367193c 100644 (file)
@@ -204,6 +204,11 @@ public class JVMNameUtil {
     public void setName(String name) {
       myText = name;
     }
+
+    @Override
+    public String toString() {
+      return myText;
+    }
   }
 
   private static class JVMClassAt implements JVMName {
index 8af88a3d62aa03caa6fa55cc634a9ad8bd1e2502..667948e5242c6596cbbd78279ca5acd083527eda 100644 (file)
@@ -52,4 +52,9 @@ public class TypeEvaluator implements Evaluator {
     }
     return type;
   }
+
+  @Override
+  public String toString() {
+    return "Type " + myTypeName;
+  }
 }
index 9ba4a3d4746f6d5b78b22ea3341653b0d4305e1c..eb2549f31cb861a5d7c20837dff1dc9172b415f6 100644 (file)
@@ -66,8 +66,18 @@ public class GenericDebuggerRunner extends JavaPatchableProgramRunner<GenericDeb
     if (state instanceof JavaCommandLine) {
       final JavaParameters parameters = ((JavaCommandLine)state).getJavaParameters();
       runCustomPatchers(parameters, environment.getExecutor(), environment.getRunProfile());
-      RemoteConnection connection = DebuggerManagerImpl.createDebugParameters(parameters, true, DebuggerSettings.getInstance().DEBUGGER_TRANSPORT, "", false);
-      return attachVirtualMachine(state, environment, connection, true);
+      boolean isPollConnection = true;
+      RemoteConnection connection = null;
+      if (state instanceof RemoteConnectionCreator) {
+        connection = ((RemoteConnectionCreator)state).createRemoteConnection(environment);
+        isPollConnection = ((RemoteConnectionCreator)state).isPollConnection();
+      }
+      if (connection == null) {
+        connection =
+          DebuggerManagerImpl.createDebugParameters(parameters, true, DebuggerSettings.getInstance().DEBUGGER_TRANSPORT, "", false);
+        isPollConnection = true;
+      }
+      return attachVirtualMachine(state, environment, connection, isPollConnection);
     }
     if (state instanceof PatchedRunnableState) {
       final RemoteConnection connection = doPatch(new JavaParameters(), environment.getRunnerSettings());
index 1e09661717e0aaa51813e457a1e663152edc6925..588d453a51179847e97d8d0c0d6c4a49a6bb2473 100644 (file)
@@ -35,7 +35,6 @@ 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;
@@ -355,18 +354,6 @@ public abstract class ValueDescriptorImpl extends NodeDescriptorImpl implements
     String labelId = myValueReady && evalContext != null && lastRenderer != null &&
                      !evalContext.getSuspendContext().isResumed() ?
                      lastRenderer.getIdLabel(value, evalContext.getDebugProcess()) : null;
-    String rawLabelId = value instanceof ObjectReference ? value.type().name() : labelId;
-
-    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);
-    }
     myValueText = label;
     myIdLabel = isShowIdLabel() ? labelId : null;
   }
diff --git a/java/execution/openapi/src/com/intellij/execution/configurations/RemoteConnectionCreator.java b/java/execution/openapi/src/com/intellij/execution/configurations/RemoteConnectionCreator.java
new file mode 100644 (file)
index 0000000..d4ca5b4
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ */
+package com.intellij.execution.configurations;
+
+import com.intellij.execution.runners.ExecutionEnvironment;
+
+public interface RemoteConnectionCreator {
+  RemoteConnection createRemoteConnection(ExecutionEnvironment environment);
+
+  boolean isPollConnection();
+}
index b2c45b4319871c3166c88300ae4b3ef6b3da21e8..87a13dfec4e23ec0ee676a6f0afffdb013f1d9be 100644 (file)
@@ -1327,6 +1327,7 @@ public class HighlightMethodUtil {
 
   static HighlightInfo checkOverrideEquivalentInheritedMethods(PsiClass aClass, PsiFile containingFile, @NotNull LanguageLevel languageLevel) {
     String description = null;
+    boolean appendImplementMethodFix = true;
     final Collection<HierarchicalMethodSignature> visibleSignatures = aClass.getVisibleSignatures();
     PsiResolveHelper resolveHelper = JavaPsiFacade.getInstance(aClass.getProject()).getResolveHelper();
     Ultimate:
@@ -1360,6 +1361,7 @@ public class HighlightMethodUtil {
                                                          HighlightUtil.formatClass(containingClass),
                                                          JavaHighlightUtil.formatMethod(superMethod),
                                                          HighlightUtil.formatClass(superMethod.getContainingClass()));
+            appendImplementMethodFix = false;
             break Ultimate;
           }
         }
@@ -1383,7 +1385,11 @@ public class HighlightMethodUtil {
     if (description != null) {
       // show error info at the class level
       TextRange textRange = HighlightNamesUtil.getClassDeclarationTextRange(aClass);
-      return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(textRange).descriptionAndTooltip(description).create();
+      final HighlightInfo highlightInfo = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(textRange).descriptionAndTooltip(description).create();
+      if (appendImplementMethodFix) {
+        QuickFixAction.registerQuickFixAction(highlightInfo, QUICK_FIX_FACTORY.createImplementMethodsFix(aClass));
+      }
+      return highlightInfo;
     }
     return null;
   }
index 231fbebfbc53e8946cb8a0cdf44334f744f86e21..24c2a0228041731523cfe90cdb558522ad0807d1 100644 (file)
@@ -160,12 +160,8 @@ public class DataFlowInspectionBase extends BaseJavaBatchLocalInspectionTool {
         if (((PsiMethod)element).isConstructor()) return true;
         
         final PsiClass containingClass = ((PsiMethod)element).getContainingClass();
-        return !InheritanceUtil.processSupers(containingClass, true, new Processor<PsiClass>() {
-          @Override
-          public boolean process(PsiClass psiClass) {
-            return !canCallMethodsInConstructors(psiClass, psiClass != containingClass);
-          }
-        });
+        return !InheritanceUtil.processSupers(containingClass, true,
+                                              psiClass -> !canCallMethodsInConstructors(psiClass, psiClass != containingClass));
         
       }
     }
@@ -181,7 +177,7 @@ public class DataFlowInspectionBase extends BaseJavaBatchLocalInspectionTool {
 
       for (PsiMethodCallExpression call : SyntaxTraverser.psiTraverser().withRoot(body).filter(PsiMethodCallExpression.class)) {
         PsiReferenceExpression methodExpression = call.getMethodExpression();
-        if (methodExpression instanceof PsiThisExpression || methodExpression instanceof PsiSuperExpression) continue;
+        if (methodExpression.textMatches(PsiKeyword.THIS) || methodExpression.textMatches(PsiKeyword.SUPER)) continue;
         if (!virtual) return true;
         
         PsiMethod target = call.resolveMethod();
index f85cb77dd9ba3d20c9ae05bc31b43ab1460340a7..d0233181daff51935e06679d6dae81681b7c75d0 100644 (file)
@@ -22,6 +22,7 @@ import com.intellij.codeInspection.dataFlow.instructions.ReturnInstruction;
 import com.intellij.codeInspection.dataFlow.value.DfaValueFactory;
 import com.intellij.lang.java.JavaLanguage;
 import com.intellij.openapi.util.Ref;
+import com.intellij.patterns.PsiJavaPatterns;
 import com.intellij.psi.*;
 import com.intellij.psi.search.LocalSearchScope;
 import com.intellij.psi.search.searches.ReferencesSearch;
@@ -97,6 +98,15 @@ public class DfaPsiUtil {
       return Nullness.NOT_NULL;
     }
 
+    if (PsiJavaPatterns.psiParameter().withParents(PsiParameterList.class, PsiLambdaExpression.class).accepts(owner)) {
+      PsiLambdaExpression lambda = (PsiLambdaExpression)owner.getParent().getParent();
+      int index = lambda.getParameterList().getParameterIndex((PsiParameter)owner);
+      PsiMethod sam = LambdaUtil.getFunctionalInterfaceMethod(lambda.getFunctionalInterfaceType());
+      if (sam != null && index < sam.getParameterList().getParametersCount()) {
+        return getElementNullability(null, sam.getParameterList().getParameters()[index]);
+      }
+    }
+
     return Nullness.UNKNOWN;
   }
 
index 7ab3f1d6241531275fa49d2c1270fe3a427b6c00..a2cfd04737de3f44a4da9150922ff224e4f12f9c 100644 (file)
@@ -30,6 +30,7 @@ import com.intellij.psi.javadoc.PsiDocTag;
 import com.intellij.psi.search.GlobalSearchScope;
 import com.intellij.psi.util.PsiTreeUtil;
 import com.intellij.util.IncorrectOperationException;
+import com.intellij.util.containers.ConcurrentFactoryMap;
 import gnu.trove.THashMap;
 import org.jdom.Element;
 import org.jetbrains.annotations.NotNull;
@@ -108,23 +109,14 @@ public class RefJavaManagerImpl extends RefJavaManager {
     PsiFile file = ((RefElementImpl)element).getContainingFile();
     if (file == null) return null;
 
-    return getDeadCodeTool(file);
+    return getDeadCodeTool(file.getContainingFile());
   }
 
-  private static final UserDataCache<Ref<UnusedDeclarationInspectionBase>, PsiFile, RefManagerImpl> DEAD_CODE_TOOL = new UserDataCache<Ref<UnusedDeclarationInspectionBase>, PsiFile, RefManagerImpl>("DEAD_CODE_TOOL") {
-    @Override
-    protected Ref<UnusedDeclarationInspectionBase> compute(PsiFile file, RefManagerImpl refManager) {
-      Tools tools = ((GlobalInspectionContextBase)refManager.getContext()).getTools().get(UnusedDeclarationInspectionBase.SHORT_NAME);
-      InspectionToolWrapper toolWrapper = tools == null ? null : tools.getEnabledTool(file);
-      InspectionProfileEntry tool = toolWrapper == null ? null : toolWrapper.getTool();
-      return Ref.create(tool instanceof UnusedDeclarationInspectionBase ? (UnusedDeclarationInspectionBase)tool : null);
-    }
-  };
-
-  @Nullable
-  private UnusedDeclarationInspectionBase getDeadCodeTool(PsiElement element) {
-    PsiFile file = element.getContainingFile();
-    return file != null ? DEAD_CODE_TOOL.get(file, myRefManager).get() : null;
+  private UnusedDeclarationInspectionBase getDeadCodeTool(PsiFile file) {
+    Tools tools = ((GlobalInspectionContextBase)myRefManager.getContext()).getTools().get(UnusedDeclarationInspectionBase.SHORT_NAME);
+    InspectionToolWrapper toolWrapper = tools == null ? null : tools.getEnabledTool(file);
+    InspectionProfileEntry tool = toolWrapper == null ? null : toolWrapper.getTool();
+    return tool instanceof UnusedDeclarationInspectionBase ? (UnusedDeclarationInspectionBase)tool : null;
   }
 
   @Override
index 9a964a2178fd443acf0c3a0772805eeb6fd046c8..f885f3b533dd887ed0b0388a044b4769651bf245 100644 (file)
@@ -54,133 +54,137 @@ class _SPILexer implements FlexLexer {
    * Translates characters to character classes
    */
   private static final String ZZ_CMAP_PACKED = 
-    "\11\0\1\1\1\5\1\10\1\1\1\5\22\0\1\1\2\0\1\4"+
+    "\11\0\1\1\1\5\1\0\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\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";
+    "\32\2\57\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\164\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
    */
-  private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
+  private static final int ZZ_SX = 0x0700;
+  private static final int ZZ_MX = 0x10000;
+  private static final int ZZ_LX = 0x110000;
+  private static char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED, ZZ_SX);
+  private static class M { static final char [] MAP = zzUnpackCMap(ZZ_CMAP_PACKED, ZZ_MX); }
+  private static class L { static final char [] MAP = zzUnpackCMap(ZZ_CMAP_PACKED, ZZ_LX); }
 
   /** 
    * Translates DFA states to action switch labels.
@@ -216,7 +220,7 @@ class _SPILexer implements FlexLexer {
   private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
 
   private static final String ZZ_ROWMAP_PACKED_0 =
-    "\0\0\0\11\0\22\0\33\0\44\0\11\0\11";
+    "\0\0\0\10\0\20\0\30\0\40\0\10\0\10";
 
   private static int [] zzUnpackRowMap() {
     int [] result = new int[7];
@@ -243,11 +247,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"+
-    "\13\0\1\3\3\0\1\3\5\0\2\4\5\0\5\5"+
-    "\1\0\3\5";
+    "\11\0\1\3\3\0\1\3\4\0\2\4\4\0\5\5"+
+    "\1\0\2\5";
 
   private static int [] zzUnpackTrans() {
-    int [] result = new int[45];
+    int [] result = new int[40];
     int offset = 0;
     offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
     return result;
@@ -365,14 +369,14 @@ class _SPILexer implements FlexLexer {
    * @param packed   the packed character translation table
    * @return         the unpacked character translation table
    */
-  private static char [] zzUnpackCMap(String packed) {
-    char [] map = new char[0x110000];
+  private static char [] zzUnpackCMap(String packed, int limit) {
+    char [] map = new char[limit];
     int i = 0;  /* index in packed string  */
     int j = 0;  /* index in unpacked array */
-    while (i < 2454) {
+    while (i < 2444 && j < limit) {
       int  count = packed.charAt(i++);
       char value = packed.charAt(i++);
-      do map[j++] = value; while (--count > 0);
+      do map[j++] = value; while (--count > 0 && j < limit);
     }
     return map;
   }
@@ -499,18 +503,6 @@ class _SPILexer implements FlexLexer {
   }
 
 
-  /**
-   * Contains user EOF-code, which will be executed exactly once,
-   * when the end of file is reached
-   */
-  private void zzDoEOF() {
-    if (!zzEOFDone) {
-      zzEOFDone = true;
-    
-    }
-  }
-
-
   /**
    * Resumes scanning until the next regular expression is matched,
    * the end of input is encountered or an I/O-Error occurs.
@@ -579,6 +571,7 @@ class _SPILexer implements FlexLexer {
               zzCurrentPosL += Character.charCount(zzInput);
             }
           }
+          if (zzInput >= zzCMapL.length) ZZ_CMAP = zzCMapL = zzInput >= ZZ_MX ? L.MAP : M.MAP;
           int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
           if (zzNext == -1) break zzForAction;
           zzState = zzNext;
@@ -598,7 +591,6 @@ class _SPILexer implements FlexLexer {
 
       if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
         zzAtEOF = true;
-        zzDoEOF();
         return null;
       }
       else {
index ab71b944ea51cf58dd62cc4f41477e2c172bb0fe..f0c914de02ce59ba3e5aa918d18110b98b0f25c9 100644 (file)
@@ -69,8 +69,11 @@ class CheckInitialized implements ElementFilter {
       if (next instanceof PsiAssignmentExpression && parent == ((PsiAssignmentExpression)next).getLExpression()) {
         return Collections.emptySet();
       }
-      if (parent instanceof PsiReferenceExpression && next instanceof PsiExpressionStatement) {
-        return Collections.emptySet();
+      if (parent instanceof PsiJavaCodeReferenceElement) {
+        PsiStatement psiStatement = PsiTreeUtil.getParentOfType(parent, PsiStatement.class);
+        if (psiStatement != null && psiStatement.getTextRange().getStartOffset() == parent.getTextRange().getStartOffset()) {
+          return Collections.emptySet();
+        }
       }
       parent = next;
     }
index 78f869ff31febac016e9078b96a7443b9dc61d2b..43abfda827324a43f5a5e84942ccd895ac5a85c0 100644 (file)
@@ -73,7 +73,7 @@ public class JavaCompletionSorting {
     }
 
     List<LookupElementWeigher> afterPrefix = ContainerUtil.newArrayList();
-    afterPrefix.add(new PreferByKindWeigher(type, position));
+    afterPrefix.add(new PreferByKindWeigher(type, position, expectedTypes));
     if (!smart) {
       ContainerUtil.addIfNotNull(afterPrefix, preferStatics(position, expectedTypes));
       if (!afterNew) {
index 550158bd9391e2e7f45f7eadf27fffdc08069ec2..b1cc29e4e581a86ba2f549cb2d9f3a54793ece5f 100644 (file)
@@ -17,6 +17,7 @@ package com.intellij.codeInsight.completion;
 
 import com.intellij.codeInsight.AnnotationTargetUtil;
 import com.intellij.codeInsight.ExceptionUtil;
+import com.intellij.codeInsight.ExpectedTypeInfo;
 import com.intellij.codeInsight.lookup.LookupElement;
 import com.intellij.codeInsight.lookup.LookupElementWeigher;
 import com.intellij.openapi.util.Condition;
@@ -34,6 +35,7 @@ import com.intellij.psi.util.proximity.KnownElementWeigher;
 import com.intellij.util.containers.ContainerUtil;
 import org.jetbrains.annotations.NotNull;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.Set;
 
@@ -70,13 +72,15 @@ public class PreferByKindWeigher extends LookupElementWeigher {
   private final PsiElement myPosition;
   private final Set<PsiField> myNonInitializedFields;
   private final Condition<PsiClass> myRequiredSuper;
+  private final ExpectedTypeInfo[] myExpectedTypes;
 
-  public PreferByKindWeigher(CompletionType completionType, final PsiElement position) {
+  public PreferByKindWeigher(CompletionType completionType, final PsiElement position, ExpectedTypeInfo[] expectedTypes) {
     super("kind");
     myCompletionType = completionType;
     myPosition = position;
     myNonInitializedFields = CheckInitialized.getNonInitializedFields(position);
     myRequiredSuper = createSuitabilityCondition(position);
+    myExpectedTypes = expectedTypes;
   }
 
   @NotNull
@@ -175,9 +179,14 @@ public class PreferByKindWeigher extends LookupElementWeigher {
       if (PsiKeyword.ELSE.equals(keyword) || PsiKeyword.FINALLY.equals(keyword)) {
         return MyResult.probableKeyword;
       }
-      if ((PsiKeyword.TRUE.equals(keyword) || PsiKeyword.FALSE.equals(keyword)) && myCompletionType == CompletionType.SMART) {
-        boolean inReturn = psiElement().withParents(PsiReferenceExpression.class, PsiReturnStatement.class).accepts(myPosition);
-        return inReturn ? MyResult.probableKeyword : MyResult.normal;
+      if (PsiKeyword.TRUE.equals(keyword) || PsiKeyword.FALSE.equals(keyword)) {
+        if (myCompletionType == CompletionType.SMART) {
+          boolean inReturn = psiElement().withParents(PsiReferenceExpression.class, PsiReturnStatement.class).accepts(myPosition);
+          return inReturn ? MyResult.probableKeyword : MyResult.normal;
+        } else if (Arrays.stream(myExpectedTypes).anyMatch(info -> PsiType.BOOLEAN.isConvertibleFrom(info.getDefaultType())) &&
+            PsiTreeUtil.getParentOfType(myPosition, PsiIfStatement.class, true, PsiStatement.class, PsiMember.class) == null) {
+          return MyResult.probableKeyword;
+        }
       }
       if (PsiKeyword.INTERFACE.equals(keyword) && psiElement().afterLeaf("@").accepts(myPosition)) {
         return MyResult.improbableKeyword;
index 7b4e4fd2777b31e71759c7d931f7c461b1b2ac9b..fce394b9462b89c4d21bed344637924fd3d1f88d 100644 (file)
@@ -410,9 +410,10 @@ public class MarkerType {
 
     @Override
     public String getCaption(int size) {
+      String suffix = isFinished() ? "" : " so far";
       return myClass.isInterface()
-             ? CodeInsightBundle.message("goto.implementation.chooserTitle", myClass.getName(), size)
-             : DaemonBundle.message("navigation.title.subclass", myClass.getName(), size);
+             ? CodeInsightBundle.message("goto.implementation.chooserTitle", myClass.getName(), size, suffix)
+             : DaemonBundle.message("navigation.title.subclass", myClass.getName(), size, suffix);
     }
 
     @Override
diff --git a/java/java-impl/src/com/intellij/codeInsight/editorActions/JavaEnterAfterUnmatchedBraceHandler.java b/java/java-impl/src/com/intellij/codeInsight/editorActions/JavaEnterAfterUnmatchedBraceHandler.java
new file mode 100644 (file)
index 0000000..346f5ed
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+package com.intellij.codeInsight.editorActions;
+
+import com.intellij.codeInsight.editorActions.enter.EnterAfterUnmatchedBraceHandler;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiExpression;
+import com.intellij.psi.PsiExpressionList;
+import com.intellij.psi.PsiExpressionListStatement;
+
+public class JavaEnterAfterUnmatchedBraceHandler extends EnterAfterUnmatchedBraceHandler {
+  @Override
+  protected int calculateOffsetToInsertClosingBraceInsideElement(PsiElement element) {
+    if (element instanceof PsiExpressionListStatement) {
+      final PsiExpressionList list = ((PsiExpressionListStatement)element).getExpressionList();
+      if (list != null) {
+        final PsiExpression[] expressions = list.getExpressions();
+        if (expressions.length > 1) {
+          return expressions[0].getTextRange().getEndOffset();
+        }
+      }
+    }
+    return super.calculateOffsetToInsertClosingBraceInsideElement(element);
+  }
+}
index 1f64a8bdb95a8f8729481a08f7c63f834c7afe37..e9b10c2b3eb0a3d0a5688ab51efd9e393345d3b7 100644 (file)
@@ -17,10 +17,7 @@ package com.intellij.codeInsight.hint;
 
 import com.intellij.lang.ExpressionTypeProvider;
 import com.intellij.openapi.util.text.StringUtil;
-import com.intellij.psi.PsiElement;
-import com.intellij.psi.PsiExpression;
-import com.intellij.psi.PsiType;
-import com.intellij.psi.SyntaxTraverser;
+import com.intellij.psi.*;
 import org.jetbrains.annotations.NotNull;
 
 import java.util.List;
@@ -46,6 +43,19 @@ public class JavaTypeProvider extends ExpressionTypeProvider<PsiExpression> {
   @NotNull
   @Override
   public List<PsiExpression> getExpressionsAt(@NotNull PsiElement elementAt) {
-    return SyntaxTraverser.psiApi().parents(elementAt).filter(PsiExpression.class).toList();
+    return SyntaxTraverser.psiApi().parents(elementAt)
+      .filter(PsiExpression.class)
+      .filter(JavaTypeProvider::isLargestNonTrivialExpression)
+      .toList();
+  }
+
+  private static boolean isLargestNonTrivialExpression(@NotNull PsiExpression e) {
+    PsiElement p = e.getParent();
+    if (p instanceof PsiPostfixExpression) return false;
+    if (p instanceof PsiPrefixExpression) return false;
+    if (p instanceof PsiMethodCallExpression && ((PsiMethodCallExpression)p).getMethodExpression() == e) {
+      return false;
+    }
+    return true;
   }
 }
index 1c2d0ae16fda186d441c2e121e9d0b243cef04ed..e88f81906ae6fb6a0286d83fcd2c502bccaa9e5c 100644 (file)
@@ -242,22 +242,11 @@ public class AddSingleMemberStaticImportAction extends BaseElementAtCaretIntenti
                   aClass = PsiUtil.resolveClassInClassTypeOnly(((PsiVariable)aClass).getType());
                 }
                 if (aClass instanceof PsiClass && InheritanceUtil.isInheritorOrSelf((PsiClass)aClass, resolvedClass, true)) {
-                  boolean foundMemberByName = false;
-                  if (referent instanceof PsiMember) {
-                    final String memberName = ((PsiMember)referent).getName();
-                    final PsiClass containingClass = PsiTreeUtil.getParentOfType(reference, PsiClass.class);
-                    if (containingClass != null) {
-                      foundMemberByName |= containingClass.findFieldByName(memberName, true) != null;
-                      foundMemberByName |= containingClass.findMethodsByName(memberName, true).length > 0;
-                    }
+                  try {
+                    qualifierExpression.delete();
                   }
-                  if (!foundMemberByName) {
-                    try {
-                      qualifierExpression.delete();
-                    }
-                    catch (IncorrectOperationException e) {
-                      LOG.error(e);
-                    }
+                  catch (IncorrectOperationException e) {
+                    LOG.error(e);
                   }
                 }
               }
index 4c06bebf3e7f962f96287f755db4cd4b81b9efa3..65fb408644da516f14de3321a752516ff6e777b8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * 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.
@@ -24,19 +24,19 @@ import static com.intellij.codeInsight.template.postfix.util.JavaPostfixTemplate
 
 public class WhileStatementPostfixTemplate extends StringBasedPostfixTemplate {
   public WhileStatementPostfixTemplate() {
-    super("while", "while (expr)", selectorTopmost(IS_BOOLEAN));
+    super("while", "while (expr) {}", selectorTopmost(IS_BOOLEAN));
   }
 
 
   @Nullable
   @Override
   public String getTemplateString(@NotNull PsiElement element) {
-    return "while ($expr$)$END$";
+    return "while ($expr$) {\n$END$\n}";
   }
 
   @Override
   protected boolean shouldReformat() {
-    return false;
+    return true;
   }
 }
 
index 2d41d411d3e801ad420eaca4ba0053c54fe4ba22..b0bb7ba19c66b6f4c72659d4d074c0943fe2f767 100644 (file)
@@ -45,6 +45,7 @@ import com.intellij.psi.util.PsiUtilCore;
 import com.intellij.refactoring.safeDelete.SafeDeleteHandler;
 import com.intellij.ui.HyperlinkAdapter;
 import com.intellij.ui.ScrollPaneFactory;
+import com.intellij.util.ArrayUtil;
 import com.intellij.util.IncorrectOperationException;
 import com.intellij.util.containers.HashMap;
 import com.intellij.util.containers.HashSet;
@@ -246,7 +247,12 @@ public class UnusedDeclarationPresentation extends DefaultInspectionToolPresenta
         PsiElement psiElement = refElement instanceof RefElement ? ((RefElement)refElement).getElement() : null;
         if (psiElement == null) continue;
         if (getFilter().getElementProblemCount((RefJavaElement)refElement) == 0) continue;
-        commentOutDead(psiElement);
+
+        final RefEntity owner = refElement.getOwner();
+        if (!(owner instanceof RefElement && ArrayUtil.find(refElements, owner) > -1)) {
+          commentOutDead(psiElement);
+        }
+
         refElement.getRefManager().removeRefElement((RefElement)refElement, deletedRefs);
       }
 
index 9bb62217944c1620983cf1e027cba5fdb3f94810..34acba1f3c8fc5d4f30f91e75da793b24875c0f2 100644 (file)
@@ -22,6 +22,7 @@ import com.intellij.codeInsight.daemon.GroupNames;
 import com.intellij.codeInsight.daemon.QuickFixBundle;
 import com.intellij.codeInspection.*;
 import com.intellij.codeInspection.reference.*;
+import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel;
 import com.intellij.codeInspection.util.SpecialAnnotationsUtil;
 import com.intellij.codeInspection.util.SpecialAnnotationsUtilBase;
 import com.intellij.openapi.application.ApplicationManager;
@@ -58,6 +59,8 @@ public class EmptyMethodInspection extends GlobalJavaBatchInspectionTool {
   private final BidirectionalMap<Boolean, QuickFix> myQuickFixes = new BidirectionalMap<Boolean, QuickFix>();
 
   public final JDOMExternalizableStringList EXCLUDE_ANNOS = new JDOMExternalizableStringList();
+  @SuppressWarnings("PublicField")
+  public boolean commentsAreContent = false;
   @NonNls private static final String QUICK_FIX_NAME = InspectionsBundle.message("inspection.empty.method.delete.quickfix");
   private static final Logger LOG = Logger.getInstance("#com.intellij.codeInspection.emptyMethod.EmptyMethodInspection");
 
@@ -172,6 +175,10 @@ public class EmptyMethodInspection extends GlobalJavaBatchInspectionTool {
       }
     }
 
+    if (commentsAreContent && PsiTreeUtil.findChildOfType(owner, PsiComment.class) != null) {
+      return false;
+    }
+
     return true;
   }
 
@@ -251,7 +258,7 @@ public class EmptyMethodInspection extends GlobalJavaBatchInspectionTool {
 
   @Override
   public void writeSettings(@NotNull Element node) throws WriteExternalException {
-    if (!EXCLUDE_ANNOS.isEmpty()) {
+    if (!EXCLUDE_ANNOS.isEmpty() || commentsAreContent) {
       super.writeSettings(node);
     }
   }
@@ -289,6 +296,7 @@ public class EmptyMethodInspection extends GlobalJavaBatchInspectionTool {
       .createSpecialAnnotationsListControl(EXCLUDE_ANNOS, InspectionsBundle.message("special.annotations.annotations.list"));
 
     final JPanel panel = new JPanel(new BorderLayout(2, 2));
+    panel.add(new SingleCheckboxOptionsPanel("Comments and javadoc count as content", this, "commentsAreContent"), BorderLayout.NORTH);
     panel.add(listPanel, BorderLayout.CENTER);
     return panel;
   }
index 62e83a2649f56e74abcf991c072d8e91fb626dc5..cefbbc77a9b346a7012f7015c28c2a6e760526b7 100644 (file)
  */
 package com.intellij.codeInspection.ui;
 
+import com.intellij.codeHighlighting.HighlightDisplayLevel;
 import com.intellij.codeInspection.deadCode.DummyEntryPointsEP;
 import com.intellij.codeInspection.ex.GlobalInspectionContextImpl;
 import com.intellij.codeInspection.ex.GlobalInspectionToolWrapper;
 import com.intellij.codeInspection.ex.InspectionToolWrapper;
 import com.intellij.icons.AllIcons;
+import com.intellij.util.containers.FactoryMap;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
@@ -49,4 +51,9 @@ public class EntryPointsNode extends InspectionNode {
   public String getCustomizedTailText() {
     return "";
   }
+
+  @Override
+  public void visitProblemSeverities(FactoryMap<HighlightDisplayLevel, Integer> counter) {
+    //do nothing here
+  }
 }
index 53c059e95aa88a845f014c98bce19c0af5d87287..516b6cf27ae97c71ca0c9e8b98d35a02b4051cd1 100644 (file)
@@ -24,6 +24,7 @@ import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.*;
 import com.intellij.psi.util.ProximityLocation;
 import com.intellij.psi.util.PsiTreeUtil;
+import com.intellij.psi.util.PsiUtil;
 import com.intellij.psi.util.PsiUtilCore;
 import com.intellij.util.NotNullFunction;
 import com.intellij.util.NullableFunction;
@@ -58,9 +59,11 @@ public class ExplicitlyImportedWeigher extends ProximityWeigher {
         if (importList == null) return Collections.emptyList();
 
         List<String> importedNames = ContainerUtil.newArrayList();
-        for (final PsiImportStatement importStatement : importList.getImportStatements()) {
-          ContainerUtil.addIfNotNull(importedNames, importStatement.getQualifiedName());
+        for (PsiImportStatementBase statement : importList.getAllImportStatements()) {
+          PsiJavaCodeReferenceElement reference = statement.getImportReference();
+          ContainerUtil.addIfNotNull(importedNames, reference == null ? null : reference.getQualifiedName());
         }
+
         return importedNames;
       }
     });
@@ -126,6 +129,11 @@ public class ExplicitlyImportedWeigher extends ProximityWeigher {
 
     }
     if (element instanceof PsiMember) {
+      String qname = PsiUtil.getMemberQualifiedName((PsiMember)element);
+      if (qname != null && PLACE_IMPORTED_NAMES.getValue(location).contains(qname)) {
+        return 400;
+      }
+
       final PsiPackage placePackage = PLACE_PACKAGE.getValue(location);
       if (placePackage != null) {
         Module elementModule = ModuleUtilCore.findModuleForPsiElement(element);
index bf3cbe8ff4da047c08ff4b80e1d0945379102c23..c6d73d3df141699b9281e9d27cb77204331ca07a 100644 (file)
@@ -348,7 +348,10 @@ public class ExtractMethodSignatureSuggester {
       if (name == null) {
 
         final PsiType type = GenericsUtil.getVariableTypeByExpressionType(expr.getType());
-        if (type == null || type == PsiType.NULL || PsiUtil.resolveClassInType(type) instanceof PsiAnonymousClass) return null;
+        if (type == null ||
+            type == PsiType.NULL ||
+            PsiUtil.resolveClassInType(type) instanceof PsiAnonymousClass ||
+            LambdaUtil.notInferredType(type)) return null;
 
         copies.add(myElementFactory.createExpressionFromText(expr.getText(), body));
 
index 900cd9d5cb4447f161ab08694d1d864189bea3a4..1b81e04a0bd6483c6b7586728fe93469a390c23f 100644 (file)
@@ -45,7 +45,7 @@ class JavaResolveSnapshot extends ResolveSnapshotProvider.ResolveSnapshot {
         if (!refExpr.isQualified()) {
           JavaResolveResult resolveResult = refExpr.advancedResolve(false);
           final PsiElement resolved = resolveResult.getElement();
-          if (resolved instanceof PsiField && resolveResult.isStaticsScopeCorrect()) {
+          if ((resolved instanceof PsiField || resolved instanceof PsiClass) && resolveResult.isStaticsScopeCorrect()) {
             SmartPsiElementPointer key = pointerManager.createSmartPsiElementPointer(refExpr);
             SmartPsiElementPointer value = pointers.get(resolved);
             if (value == null) {
@@ -68,12 +68,12 @@ class JavaResolveSnapshot extends ResolveSnapshotProvider.ResolveSnapshot {
   }
 
   private static void qualify(PsiElement referent, PsiElement referee, String hidingLocalName) {
-    if (referent instanceof PsiReferenceExpression && referee instanceof PsiField) {
+    if (referent instanceof PsiReferenceExpression && referee instanceof PsiMember) {
       PsiReferenceExpression ref = ((PsiReferenceExpression) referent);
       if (!ref.isQualified() && hidingLocalName.equals(ref.getReferenceName())) {
         final PsiElement newlyResolved = ref.resolve();
         if (referee.getManager().areElementsEquivalent(newlyResolved, referee)) return;
-        RenameJavaMemberProcessor.qualifyMember((PsiField)referee, referent, hidingLocalName);
+        RenameJavaMemberProcessor.qualifyMember((PsiMember)referee, referent, hidingLocalName);
       }
     }
   }
index 63559c3a27668d20de48d492d642458b779eaca2..a3bf756deb309256fa7f9c2fbb8f3f0835872c53 100644 (file)
@@ -19,10 +19,12 @@ import com.intellij.lang.ASTNode;
 import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.*;
 import com.intellij.psi.codeStyle.JavaCodeStyleManager;
+import com.intellij.psi.impl.search.JavaFunctionalExpressionSearcher;
 import com.intellij.psi.impl.source.tree.JavaElementType;
 import com.intellij.psi.impl.source.tree.StdTokenSets;
 import com.intellij.psi.impl.source.tree.TreeUtil;
 import com.intellij.psi.util.PsiTreeUtil;
+import com.intellij.psi.util.PsiUtil;
 import com.intellij.refactoring.RefactoringBundle;
 import com.intellij.usageView.UsageInfo;
 import com.intellij.util.containers.HashSet;
@@ -41,9 +43,11 @@ public class AutomaticVariableRenamer extends AutomaticRenamer {
 
   public AutomaticVariableRenamer(PsiClass aClass, String newClassName, Collection<UsageInfo> usages) {
     final String oldClassName = aClass.getName();
+    final Set<PsiFile> files = new HashSet<>();
     for (final UsageInfo info : usages) {
       final PsiElement element = info.getElement();
       if (!(element instanceof PsiJavaCodeReferenceElement)) continue;
+      files.add(element.getContainingFile());
       final PsiDeclarationStatement statement = PsiTreeUtil.getParentOfType(element, PsiDeclarationStatement.class);
       if (statement != null) {
         for(PsiElement declaredElement: statement.getDeclaredElements()) {
@@ -64,6 +68,23 @@ public class AutomaticVariableRenamer extends AutomaticRenamer {
         }
       }
     }
+
+    if (files.size() < JavaFunctionalExpressionSearcher.SMART_SEARCH_THRESHOLD && oldClassName != null) {
+      for (PsiFile file : files) {
+        for (PsiLambdaExpression expression : SyntaxTraverser.psiTraverser().withRoot(file).filter(PsiLambdaExpression.class)) {
+          final PsiParameter[] parameters = expression.getParameterList().getParameters();
+          for (PsiParameter parameter : parameters) {
+            if (aClass.equals(PsiUtil.resolveClassInType(parameter.getType()))) {
+              final String parameterName = parameter.getName();
+              if (parameterName != null && StringUtil.containsIgnoreCase(parameterName, oldClassName)) {
+                myElements.add(parameter);
+              }
+            }
+          }
+        }
+      }
+    }
+
     suggestAllNames(oldClassName, newClassName);
   }
 
index 22f23d0fb46e96e7db06862bcc06531a43990f7c..60ec2387c3974acf1109f07b991c8662b8a9e16a 100644 (file)
@@ -330,6 +330,9 @@ public class JavaSafeDeleteProcessor extends SafeDeleteProcessorDelegateBase {
       else if (usage instanceof SafeDeleteParameterCallHierarchyUsageInfo) {
         delegatingParams.add((SafeDeleteParameterCallHierarchyUsageInfo)usage);
       }
+      else if (usage instanceof SafeDeleteAnnotation) {
+        result.add(new SafeDeleteAnnotation((PsiAnnotation)usage.getElement(), ((SafeDeleteAnnotation)usage).getReferencedElement(), true));
+      }
       else {
         result.add(usage);
       }
@@ -518,6 +521,8 @@ public class JavaSafeDeleteProcessor extends SafeDeleteProcessorDelegateBase {
 
   private static void findClassUsages(final PsiClass psiClass, final PsiElement[] allElementsToDelete, final List<UsageInfo> usages) {
     final boolean justPrivates = containsOnlyPrivates(psiClass);
+    final String qualifiedName = psiClass.getQualifiedName();
+    final boolean annotationType = psiClass.isAnnotationType() && qualifiedName != null;
 
     ReferencesSearch.search(psiClass).forEach(new Processor<PsiReference>() {
       public boolean process(final PsiReference reference) {
@@ -547,7 +552,14 @@ public class JavaSafeDeleteProcessor extends SafeDeleteProcessorDelegateBase {
                                       classes[0] == psiClass && 
                                       element.getContainingFile() == containingFile;
           }
-          usages.add(new SafeDeleteReferenceJavaDeleteUsageInfo(element, psiClass, sameFileWithSingleClass || isInNonStaticImport(element)));
+
+          final boolean safeDelete = sameFileWithSingleClass || isInNonStaticImport(element);
+          if (annotationType && parent instanceof PsiAnnotation) {
+            usages.add(new SafeDeleteAnnotation((PsiAnnotation)parent, psiClass, safeDelete));
+          }
+          else {
+            usages.add(new SafeDeleteReferenceJavaDeleteUsageInfo(element, psiClass, safeDelete));
+          }
         }
         return true;
       }
diff --git a/java/java-impl/src/com/intellij/refactoring/safeDelete/usageInfo/SafeDeleteAnnotation.java b/java/java-impl/src/com/intellij/refactoring/safeDelete/usageInfo/SafeDeleteAnnotation.java
new file mode 100644 (file)
index 0000000..10afca4
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+package com.intellij.refactoring.safeDelete.usageInfo;
+
+import com.intellij.psi.PsiAnnotation;
+import com.intellij.psi.PsiElement;
+import com.intellij.util.IncorrectOperationException;
+
+public class SafeDeleteAnnotation extends SafeDeleteReferenceUsageInfo  {
+  public SafeDeleteAnnotation(PsiAnnotation element, PsiElement referencedElement, boolean safeDelete) {
+    super(element, referencedElement, safeDelete);
+  }
+
+  @Override
+  public void deleteElement() throws IncorrectOperationException {
+    final PsiElement element = getElement();
+    if (element != null) {
+      element.delete();
+    }
+  }
+}
index 18ce275ed5e8ed02c1a854e41bc2aa5554e3cd7b..aa321e900d471be56e7d0e9d71d069a15a6e2397 100644 (file)
@@ -34,8 +34,6 @@ import com.intellij.lexer.FlexLexer;
 %implements FlexLexer
 %function advance
 %type IElementType
-%eof{  return;
-%eof}
 
 WHITE_SPACE_CHAR=[\ \n\r\t\f]
 
@@ -53,4 +51,4 @@ END_OF_LINE_COMMENT="#"[^\r\n]*
 
 <YYINITIAL> "."                   { return JavaTokenType.DOT; }
 
-<YYINITIAL> .                     { return JavaTokenType.BAD_CHARACTER; }
+<YYINITIAL> [^]                   { return JavaTokenType.BAD_CHARACTER; }
index edf61fe9f9a52343fff88494b860b62d34260af1..e90163a3f7193d984b337516ecf0c801ef5902d5 100644 (file)
@@ -55,7 +55,6 @@ public class JavaFunctionalExpressionSearcher extends QueryExecutorBase<PsiFunct
    * and more advanced ways of searching become necessary: e.g. first searching for methods where the functional interface class is used
    * and then for their usages,
     */
-  @VisibleForTesting
   public static final int SMART_SEARCH_THRESHOLD = 5;
 
   @Override
index eacb2687408cdbbab6be6da855ce3c311998928c..178c107a927894d80d520773d907e832509b84ab 100644 (file)
@@ -67,6 +67,7 @@ public interface PsiMethod extends PsiMember, PsiNameIdentifierOwner, PsiModifie
    *
    * @return the parameter list instance.
    */
+  @Override
   @NotNull
   PsiParameterList getParameterList();
 
@@ -83,6 +84,7 @@ public interface PsiMethod extends PsiMember, PsiNameIdentifierOwner, PsiModifie
    *
    * @return the method body, or null if the method belongs to a compiled class.
    */
+  @Override
   @Nullable
   PsiCodeBlock getBody();
 
index 6986cb09a2ec91229fb980e7a3a2aec62dfb8406..bfb7fd780cb440fb0de0aef672eef3a669a3fd46 100644 (file)
@@ -162,7 +162,12 @@ class _JavaDocLexer implements FlexLexer {
   /** 
    * Translates characters to character classes
    */
-  private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
+  private static final int ZZ_SX = 0x0700;
+  private static final int ZZ_MX = 0x10000;
+  private static final int ZZ_LX = 0x110000;
+  private static char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED, ZZ_SX);
+  private static class M { static final char [] MAP = zzUnpackCMap(ZZ_CMAP_PACKED, ZZ_MX); }
+  private static class L { static final char [] MAP = zzUnpackCMap(ZZ_CMAP_PACKED, ZZ_LX); }
 
   /** 
    * Translates DFA states to action switch labels.
@@ -412,14 +417,14 @@ class _JavaDocLexer implements FlexLexer {
    * @param packed   the packed character translation table
    * @return         the unpacked character translation table
    */
-  private static char [] zzUnpackCMap(String packed) {
-    char [] map = new char[0x110000];
+  private static char [] zzUnpackCMap(String packed, int limit) {
+    char [] map = new char[limit];
     int i = 0;  /* index in packed string  */
     int j = 0;  /* index in unpacked array */
-    while (i < 2172) {
+    while (i < 2172 && j < limit) {
       int  count = packed.charAt(i++);
       char value = packed.charAt(i++);
-      do map[j++] = value; while (--count > 0);
+      do map[j++] = value; while (--count > 0 && j < limit);
     }
     return map;
   }
@@ -546,18 +551,6 @@ class _JavaDocLexer implements FlexLexer {
   }
 
 
-  /**
-   * Contains user EOF-code, which will be executed exactly once,
-   * when the end of file is reached
-   */
-  private void zzDoEOF() {
-    if (!zzEOFDone) {
-      zzEOFDone = true;
-    
-    }
-  }
-
-
   /**
    * Resumes scanning until the next regular expression is matched,
    * the end of input is encountered or an I/O-Error occurs.
@@ -626,6 +619,7 @@ class _JavaDocLexer implements FlexLexer {
               zzCurrentPosL += Character.charCount(zzInput);
             }
           }
+          if (zzInput >= zzCMapL.length) ZZ_CMAP = zzCMapL = zzInput >= ZZ_MX ? L.MAP : M.MAP;
           int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
           if (zzNext == -1) break zzForAction;
           zzState = zzNext;
@@ -645,7 +639,6 @@ class _JavaDocLexer implements FlexLexer {
 
       if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
         zzAtEOF = true;
-        zzDoEOF();
         return null;
       }
       else {
index 2f428e7faf62eb7950274c75e13d09e24a0483c3..dba6eee549586e6ea1da2dfef0fad16a4a55d0b0 100644 (file)
@@ -55,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\104\1\1\1\6\16\3\4\0\1\1\1\60"+
+    "\11\3\1\1\1\6\1\0\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"+
@@ -63,147 +63,151 @@ 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\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\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\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"+
-    "\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"+
+    "\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"+
     "\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\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"+
+    "\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\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"+
+    "\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
    */
-  private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
+  private static final int ZZ_SX = 0x0700;
+  private static final int ZZ_MX = 0x10000;
+  private static final int ZZ_LX = 0x110000;
+  private static char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED, ZZ_SX);
+  private static class M { static final char [] MAP = zzUnpackCMap(ZZ_CMAP_PACKED, ZZ_MX); }
+  private static class L { static final char [] MAP = zzUnpackCMap(ZZ_CMAP_PACKED, ZZ_LX); }
 
   /** 
    * Translates DFA states to action switch labels.
@@ -260,46 +264,46 @@ class _JavaLexer implements FlexLexer {
   private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
 
   private static final String ZZ_ROWMAP_PACKED_0 =
-    "\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";
+    "\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";
 
   private static int [] zzUnpackRowMap() {
     int [] result = new int[320];
@@ -332,385 +336,337 @@ 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\111\0\1\3\4\0\1\3\101\0"+
+    "\1\57\1\60\1\61\105\0\1\3\4\0\1\3\77\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\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"+
+    "\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"+
     "\1\67\1\70\1\71\1\72\10\0\1\72\1\67\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\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\4\1\0\1\4\3\0\5\4\1\113\1\114\4\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"+
+    "\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"+
     "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\13\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"+
+    "\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"+
     "\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\26\0\1\4\2\0"+
+    "\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"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\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"+
+    "\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"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\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"+
+    "\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"+
     "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\13\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"+
+    "\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"+
     "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\7\4"+
-    "\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"+
-    "\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"+
+    "\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"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\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"+
+    "\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"+
     "\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\26\0\1\4\2\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"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\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"+
+    "\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"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\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"+
+    "\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"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\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"+
+    "\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"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\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\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"+
+    "\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"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\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"+
+    "\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"+
     "\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"+
+    "\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\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"+
+    "\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"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\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"+
+    "\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"+
-    "\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"+
+    "\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"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\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"+
+    "\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"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\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"+
+    "\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"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\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"+
-    "\3\0\3\4\1\362\24\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\363\11\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\364\20\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\365\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\366\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\4\1\367"+
-    "\26\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\370\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\371\24\4\26\0\1\4\2\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"+
+    "\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"+
+    "\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"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\1\4\1\372\26\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\373"+
-    "\25\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\374\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\375\24\4\26\0\1\4\2\0"+
+    "\16\4\1\363\11\4\27\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\7\4\1\364\20\4\27\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\5\4\1\376\22\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\377"+
-    "\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\u0100\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\u0101\27\4\26\0\1\4\2\0\2\4"+
+    "\17\4\1\365\10\4\27\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\1\366\27\4\27\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\4"+
+    "\1\367\26\4\27\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\5\4\1\370\22\4\27\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\3\4"+
+    "\1\371\24\4\27\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\1\4\1\372\26\4\27\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\2\4"+
+    "\1\373\25\4\27\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\6\4\1\374\21\4\27\0\2\4"+
     "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\3\4"+
-    "\1\u0102\24\4\26\0\1\4\4\257\1\260\1\340\100\257"+
-    "\2\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
-    "\3\0\17\4\1\u0103\10\4\26\0\1\4\2\0\2\4"+
+    "\1\375\24\4\27\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\5\4\1\376\22\4\27\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\17\4"+
+    "\1\377\10\4\27\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\5\4\1\u0100\22\4\27\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\u0101"+
+    "\27\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+
+    "\1\4\3\0\3\4\1\u0102\24\4\25\0\4\257\1\260"+
+    "\1\340\76\257\2\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\17\4\1\u0103\10\4\27\0\2\4"+
     "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\7\4"+
-    "\1\u0104\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\u0105\17\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\u0106\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\u0107\21\4\26\0\1\4\2\0\2\4"+
+    "\1\u0104\20\4\27\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\10\4\1\u0105\17\4\27\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\20\4"+
+    "\1\u0106\7\4\27\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\6\4\1\u0107\21\4\27\0\2\4"+
     "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\u0108"+
-    "\27\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\u0109\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\u010a\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\u010b\15\4\26\0\1\4\2\0\2\4\3\0\11\4"+
+    "\27\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+
+    "\1\4\3\0\5\4\1\u0109\22\4\27\0\2\4\3\0"+
+    "\11\4\1\0\1\4\1\0\1\4\3\0\1\u010a\27\4"+
+    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\12\4\1\u010b\15\4\27\0\2\4\3\0\11\4"+
     "\1\0\1\4\1\0\1\4\3\0\1\4\1\u010c\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\u010d\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\u010e\24\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\u010f\22\4\26\0\1\4\2\0\2\4\3\0\11\4"+
+    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\16\4\1\u010d\11\4\27\0\2\4\3\0\11\4"+
+    "\1\0\1\4\1\0\1\4\3\0\3\4\1\u010e\24\4"+
+    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\5\4\1\u010f\22\4\27\0\2\4\3\0\11\4"+
     "\1\0\1\4\1\0\1\4\3\0\10\4\1\u0110\17\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\u0111\23\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\u0112\17\4\26\0\1\4\2\0\2\4"+
-    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\21\4"+
-    "\1\u0113\6\4\26\0\1\4\2\0\2\4\3\0\11\4"+
-    "\1\0\1\4\1\0\1\4\3\0\1\u0114\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\u0115\21\4\26\0\1\4\2\0"+
+    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\4\4\1\u0111\23\4\27\0\2\4\3\0\11\4"+
+    "\1\0\1\4\1\0\1\4\3\0\10\4\1\u0112\17\4"+
+    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\21\4\1\u0113\6\4\27\0\2\4\3\0\11\4"+
+    "\1\0\1\4\1\0\1\4\3\0\1\u0114\27\4\27\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\3\4\1\u0116\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\u0117"+
-    "\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\u0118\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\u0119\15\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\u011a\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\u011b\10\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\u011c\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\u011d\20\4\26\0\1\4\2\0\2\4"+
-    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\15\4"+
-    "\1\u011e\12\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\u011f\15\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\u0120\23\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\u0121\14\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\u0122\17\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\u0123\25\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\u0124\22\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\u0125\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\u0126\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\u0127\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\u0128\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\u0129\24\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\u012a\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\u012b\21\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\u012c\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\u012d"+
-    "\27\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\u012e\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\u012f\17\4\26\0\1\4\2\0"+
+    "\6\4\1\u0115\21\4\27\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\3\4\1\u0116\24\4\27\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\3\4\1\u0130\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\u0131"+
-    "\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\u0132\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\u0133\17\4\26\0\1\4\2\0"+
+    "\12\4\1\u0117\15\4\27\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\1\u0118\27\4\27\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\12\4"+
+    "\1\u0119\15\4\27\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\23\4\1\u011a\4\4\27\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\17\4"+
+    "\1\u011b\10\4\27\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\3\4\1\u011c\24\4\27\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\7\4"+
+    "\1\u011d\20\4\27\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\15\4\1\u011e\12\4\27\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\12\4"+
+    "\1\u011f\15\4\27\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\4\4\1\u0120\23\4\27\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\13\4"+
+    "\1\u0121\14\4\27\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\10\4\1\u0122\17\4\27\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\2\4"+
+    "\1\u0123\25\4\27\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\5\4\1\u0124\22\4\27\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\12\4"+
+    "\1\u0125\15\4\27\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\3\4\1\u0126\24\4\27\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\u0127"+
+    "\27\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+
+    "\1\4\3\0\1\u0128\27\4\27\0\2\4\3\0\11\4"+
+    "\1\0\1\4\1\0\1\4\3\0\3\4\1\u0129\24\4"+
+    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\3\4\1\u012a\24\4\27\0\2\4\3\0\11\4"+
+    "\1\0\1\4\1\0\1\4\3\0\6\4\1\u012b\21\4"+
+    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\10\4\1\u012c\17\4\27\0\2\4\3\0\11\4"+
+    "\1\0\1\4\1\0\1\4\3\0\1\u012d\27\4\27\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\3\4\1\u0134\24\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\u0135"+
-    "\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\u0136\27\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\u0137\10\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\u0138\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\u0139\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\u013a\27\4\26\0\1\4\2\0"+
+    "\24\4\1\u012e\3\4\27\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\10\4\1\u012f\17\4\27\0"+
     "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
-    "\20\4\1\u013b\7\4\26\0\1\4\2\0\2\4\3\0"+
-    "\11\4\1\0\1\4\1\0\1\4\3\0\27\4\1\u013c"+
-    "\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\u013d\23\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\u013e\20\4\26\0\1\4\2\0\2\4"+
+    "\3\4\1\u0130\24\4\27\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\12\4\1\u0131\15\4\27\0"+
+    "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
+    "\3\4\1\u0132\24\4\27\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\10\4\1\u0133\17\4\27\0"+
+    "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
+    "\3\4\1\u0134\24\4\27\0\2\4\3\0\11\4\1\0"+
+    "\1\4\1\0\1\4\3\0\3\4\1\u0135\24\4\27\0"+
+    "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+
+    "\1\u0136\27\4\27\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\17\4\1\u0137\10\4\27\0\2\4"+
     "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\3\4"+
-    "\1\u013f\24\4\26\0\1\4\2\0\2\4\3\0\11\4"+
+    "\1\u0138\24\4\27\0\2\4\3\0\11\4\1\0\1\4"+
+    "\1\0\1\4\3\0\13\4\1\u0139\14\4\27\0\2\4"+
+    "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\u013a"+
+    "\27\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+
+    "\1\4\3\0\20\4\1\u013b\7\4\27\0\2\4\3\0"+
+    "\11\4\1\0\1\4\1\0\1\4\3\0\27\4\1\u013c"+
+    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\4\4\1\u013d\23\4\27\0\2\4\3\0\11\4"+
+    "\1\0\1\4\1\0\1\4\3\0\7\4\1\u013e\20\4"+
+    "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+
+    "\3\0\3\4\1\u013f\24\4\27\0\2\4\3\0\11\4"+
     "\1\0\1\4\1\0\1\4\3\0\20\4\1\u0140\7\4"+
-    "\26\0\1\4";
+    "\25\0";
 
   private static int [] zzUnpackTrans() {
-    int [] result = new int[16310];
+    int [] result = new int[15844];
     int offset = 0;
     offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
     return result;
@@ -842,14 +798,14 @@ class _JavaLexer implements FlexLexer {
    * @param packed   the packed character translation table
    * @return         the unpacked character translation table
    */
-  private static char [] zzUnpackCMap(String packed) {
-    char [] map = new char[0x110000];
+  private static char [] zzUnpackCMap(String packed, int limit) {
+    char [] map = new char[limit];
     int i = 0;  /* index in packed string  */
     int j = 0;  /* index in unpacked array */
-    while (i < 2886) {
+    while (i < 2878 && j < limit) {
       int  count = packed.charAt(i++);
       char value = packed.charAt(i++);
-      do map[j++] = value; while (--count > 0);
+      do map[j++] = value; while (--count > 0 && j < limit);
     }
     return map;
   }
@@ -976,19 +932,6 @@ class _JavaLexer implements FlexLexer {
   }
 
 
-  /**
-   * Contains user EOF-code, which will be executed exactly once,
-   * when the end of file is reached
-   */
-  private void zzDoEOF() {
-    if (!zzEOFDone) {
-      zzEOFDone = true;
-      return;
-
-    }
-  }
-
-
   /**
    * Resumes scanning until the next regular expression is matched,
    * the end of input is encountered or an I/O-Error occurs.
@@ -1057,6 +1000,7 @@ class _JavaLexer implements FlexLexer {
               zzCurrentPosL += Character.charCount(zzInput);
             }
           }
+          if (zzInput >= zzCMapL.length) ZZ_CMAP = zzCMapL = zzInput >= ZZ_MX ? L.MAP : M.MAP;
           int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
           if (zzNext == -1) break zzForAction;
           zzState = zzNext;
@@ -1076,7 +1020,6 @@ class _JavaLexer implements FlexLexer {
 
       if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
         zzAtEOF = true;
-        zzDoEOF();
         return null;
       }
       else {
index ee6f54a030e53696f33b8c32bd8263f05e5f93c7..57cb857cba189cfdf00c1482a874b751f880ccda 100644 (file)
@@ -52,6 +52,14 @@ public class OverrideImplementExploreUtil {
       PsiUtilCore.ensureValid(method);
 
       if (method.hasModifierProperty(PsiModifier.STATIC) || !resolveHelper.isAccessible(method, aClass, aClass)) continue;
+      for (HierarchicalMethodSignature superMethodSignature : signature.getSuperSignatures()) {
+        final PsiMethod superMethod = superMethodSignature.getMethod();
+        if (PsiUtil.getAccessLevel(superMethod.getModifierList()) > PsiUtil.getAccessLevel(method.getModifierList())) {
+          method = superMethod;
+          break;
+        }
+      }
+
       PsiClass hisClass = method.getContainingClass();
       if (hisClass == null) continue;
       // filter non-immediate super constructors
index 653a304b469b7a2b984507c424a192f00a98d60e..a82675a706eeba76dce5aec7f0b9149b30160790 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2015 JetBrains s.r.o.
+ * 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.
@@ -181,9 +181,6 @@ public class JavaLexer extends LexerBase {
       myTokenEndOffset = myFlexLexer.getTokenEnd();
     }
     catch (IOException e) { /* impossible */ }
-    catch (Error e) {
-      throw new IllegalArgumentException("Non-parsable text `" + myBuffer + "`", e);
-    }
   }
 
   private int getClosingParenthesis(int offset, char c) {
index d69efd67cc30027463447a8c0cb09071b018d4ab..b2a94e26f240f5f1df6c7f578509b11ddd641a09 100644 (file)
@@ -34,8 +34,6 @@ import com.intellij.psi.tree.IElementType;
 %unicode
 %function advance
 %type IElementType
-%eof{ return;
-%eof}
 
 %state COMMENT_DATA_START
 %state COMMENT_DATA
index 4329534a2b1704a2d12abc3eb01be1812011837a..d3d5d414ba9c8de676feb74b92540c36fe9eaa5d 100644 (file)
@@ -46,10 +46,6 @@ import com.intellij.lexer.FlexLexer;
 %function advance
 %type IElementType
 
-%eof{
-  return;
-%eof}
-
 WHITE_SPACE_CHAR = [\ \n\r\t\f]
 
 IDENTIFIER = [:jletter:] [:jletterdigit:]*
@@ -205,4 +201,4 @@ STRING_LITERAL = \" ([^\\\"\r\n] | {ESCAPE_SEQUENCE})* (\"|\\)?
 <YYINITIAL> "::" { return JavaTokenType.DOUBLE_COLON; }
 <YYINITIAL> "->" { return JavaTokenType.ARROW; }
 
-<YYINITIAL> . { return JavaTokenType.BAD_CHARACTER; }
+<YYINITIAL> [^]  { return JavaTokenType.BAD_CHARACTER; }
index 672991f96f25bd87b5f0fd22c053868b9ed93594..732f0cf02dbe71123ba5dee4d85a6c7c71fc419d 100644 (file)
@@ -118,7 +118,13 @@ public class ReferenceParser {
       parseJavaCodeReference(builder, isSet(flags, EAT_LAST_DOT), true, false, false, false, isSet(flags, DIAMONDS), typeInfo);
     }
     else if (isSet(flags, DIAMONDS) && tokenType == JavaTokenType.GT) {
-      emptyElement(builder, JavaElementType.DIAMOND_TYPE);
+      if (anno == null) {
+        emptyElement(builder, JavaElementType.DIAMOND_TYPE);
+      }
+      else {
+        error(builder, JavaErrorMessages.message("expected.identifier"));
+        typeInfo.hasErrors = true;
+      }
       type.done(JavaElementType.TYPE);
       typeInfo.marker = type;
       return typeInfo;
diff --git a/java/java-tests/testData/codeInsight/completion/normalSorting/PreferBooleanKeywordsWhenExpectedBoolean.java b/java/java-tests/testData/codeInsight/completion/normalSorting/PreferBooleanKeywordsWhenExpectedBoolean.java
new file mode 100644 (file)
index 0000000..440cd80
--- /dev/null
@@ -0,0 +1,7 @@
+class Test {
+  {
+    String factory = null;
+    bar(fa<caret>);
+  }
+  void bar(boolean b) {}
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/codeInsight/completion/normalSorting/PreferExplicitlyImportedStaticMembers.java b/java/java-tests/testData/codeInsight/completion/normalSorting/PreferExplicitlyImportedStaticMembers.java
new file mode 100644 (file)
index 0000000..a43bac7
--- /dev/null
@@ -0,0 +1,8 @@
+import static ContainerUtil.newHashSet;
+
+public class TestClass {
+  public static void main(String[] args) {
+    newHashSet();
+    newHashSet<caret>
+  }
+}
\ No newline at end of file
index 797f0d69dab6b29bb5229e26ee42d3de2d41cf35..187b8dd0661a6906cf833d950a1f352a96c41961 100644 (file)
@@ -7,6 +7,6 @@ class A{
  public void foo(boolean bol){}
 
  {
-  foo(<caret>equals);
+  foo(x<caret>equals);
  }
 }
\ No newline at end of file
index 3f8b1910551544ddd76d2e6f7bfe20db1ed19fa1..2505d147dce593cb5e888d188470e92c9e28546e 100644 (file)
@@ -7,6 +7,6 @@ class A{
  public void foo(boolean bol){}
 
  {
-  foo(<caret>true);
+  foo(x<caret>true);
  }
 }
\ No newline at end of file
index 6555d6c4fa39c94e2deaca2f5c4f6340df534f68..92ae30d8e4b15a0f80e2e1e53ba34c1a2a52688f 100644 (file)
@@ -7,6 +7,6 @@ class A{
  public void foo(boolean bol){}
 
  {
-  foo(<caret>equals(null));
+  foo(x<caret>equals(null));
  }
 }
\ No newline at end of file
diff --git a/java/java-tests/testData/codeInsight/completion/variables/SuggestVariablesInTypePosition.java b/java/java-tests/testData/codeInsight/completion/variables/SuggestVariablesInTypePosition.java
new file mode 100644 (file)
index 0000000..126130a
--- /dev/null
+++ b/