CDT 6.0 from cdt_6_0 branch (eclipse.org cvs repository). This overwrites previous CDT 6.0 merges.
authortimkelly
Wed, 05 Aug 2009 17:35:39 -0500
changeset 51 49c226a8748e
parent 50 fcb77f9783d2
child 52 42077b7eab6e
CDT 6.0 from cdt_6_0 branch (eclipse.org cvs repository). This overwrites previous CDT 6.0 merges.
cdt/cdt_6_0_x/org.eclipse.cdt-feature/feature.xml
cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/utils/CdtVariableResolverTest.java
cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecTest.java
cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java
cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CSpecTest.java
cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java
cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java
cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/InclusionTests.java
cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/PreprocessorTestsBase.java
cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBindingResolutionTestBase.java
cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionTest.java
cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java
cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/DBTest.java
cdt/cdt_6_0_x/org.eclipse.cdt.core.win32/library/Win32ProcessEx.c
cdt/cdt_6_0_x/org.eclipse.cdt.core.win32/library/starter/starter.cpp
cdt/cdt_6_0_x/org.eclipse.cdt.core.win32/os/win32/x86/spawner.dll
cdt/cdt_6_0_x/org.eclipse.cdt.core.win32/os/win32/x86/starter.exe
cdt/cdt_6_0_x/org.eclipse.cdt.core/META-INF/MANIFEST.MF
cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/util/CElementBaseLabels.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/CLibraryFileEntry.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/APathEntry.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CElementDeltaBuilder.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeEntry.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeFileEntry.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryEntry.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/MacroEntry.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/MacroFileEntry.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntry.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryUtil.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/DescriptionScannerInfoProvider.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTNodeFactoryFactory.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTTypeUtil.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTTranslationUnit.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IArrayType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IFunctionType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/INodeFactory.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IPointerType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IQualifierType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ITypedef.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPNodeFactory.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPReferenceType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/IIndexChangeEvent.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/ResourceContainerRelativeLocationConverter.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IScannerInfo.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTEnumerator.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTQueries.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/DeclarationOptions.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ITypeContainer.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/NodeFactory.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ProblemBinding.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/Value.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/VariableReadWriteFlags.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArraySubscriptExpression.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFunctionCallExpression.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTUnaryExpression.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CArrayType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CFunctionType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CNodeFactory.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CPointerType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CQualifierType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CTypedef.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVariableReadWriteFlags.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousSimpleDeclaration.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTBinaryExpression.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionCallExpression.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNewExpression.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTUnaryExpression.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPArrayType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionSpecialization.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplate.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPImplicitFunction.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPImplicitTypedef.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPNodeFactory.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPParameter.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPParameterSpecialization.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPPointerType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPQualifierType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPReferenceType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSpecialization.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTypeParameter.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTypedef.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTypedefSpecialization.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ICPPInternalFunction.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/BaseClassLookup.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVariableReadWriteFlags.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/Conversions.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/LookupData.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/SemanticUtil.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/ArrayTypeClone.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/CPPReferenceTypeClone.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/CPPTypedefClone.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IIndexCPPBindingConstants.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IIndexFragment.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/PointerTypeClone.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/QualifierTypeClone.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/CompositeArrayType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/CompositeFunctionType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/CompositePointerType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/CompositeQualifierType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/CompositeTypeContainer.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/ICompositesFactory.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/c/CCompositesFactory.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/c/CompositeCTypedef.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CPPCompositesFactory.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPPointerToMemberType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPReferenceType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPTypedef.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/TemplateInstanceUtil.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/indexer/StandaloneIndexer.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/CPreprocessor.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/IncludeFileContent.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/IncludeSearchPathElement.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ScannerContext.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/AbstractIndexerTask.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/IndexUpdatePolicy.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOM.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMFileSet.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMWriter.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/BTree.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/Chunk.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/DBProperties.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/Database.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/IBTreeComparator.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/IBTreeVisitor.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/IString.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/ListItem.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/LongString.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/ShortString.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMArrayType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMPointerType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMQualifierType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunctionType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCTypedef.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPReferenceType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedef.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedefSpecialization.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUnknownBinding.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUnknownClassType.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePreferenceConstants.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/src/org/eclipse/cdt/core/formatter/DefaultCodeFormatterConstants.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CCorePluginResources.properties
cdt/cdt_6_0_x/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CCorePreferenceInitializer.java
cdt/cdt_6_0_x/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/cdtvariables/CdtVariableResolver.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/plugin.properties
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/plugin.xml
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/schema/BreakpointAction.exsd
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/schema/ExecutablesImporter.exsd
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/schema/ExecutablesProvider.exsd
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/schema/SourceFilesProvider.exsd
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/schema/SourceRemappingProvider.exsd
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/schema/SupportedSourceContainerTypes.exsd
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICDTLaunchConfigurationConstants.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/Executable.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/IExecutableImporter.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/IExecutablesChangeListener.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/IProjectExecutablesProvider.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/StandardExecutableProvider.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IMoveToAddress.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IMoveToLine.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IResumeAtAddress.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IResumeAtLine.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/executables/ExecutablesChangeEvent.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/executables/StandardExecutableProvider.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLookupDirector.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui.tests/core/org/eclipse/cdt/debug/core/tests/.cvsignore
cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesContentProvider.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesView.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesViewer.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/SourceFilesLabelProvider.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ActionsList.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ActionsPreferencePage.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ActionsPropertyPage.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/GlobalActionsList.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/IBreakpointActionPage.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/LogActionComposite.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/Messages.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/PreferenceConstants.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/PreferenceInitializer.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/SoundActionComposite.java
cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/SoundActionPage.java
cdt/cdt_6_0_x/org.eclipse.cdt.doc.isv/cdtconvert.txt
cdt/cdt_6_0_x/org.eclipse.cdt.doc.isv/reference/.cvsignore
cdt/cdt_6_0_x/org.eclipse.cdt.doc.isv/reference/extension-points/.cvsignore
cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/book.css
cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/concepts/cdt_c_indexer.htm
cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/concepts/cdt_c_indexer_fullindexer.htm
cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/concepts/cdt_c_indexer_open_close.htm
cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/concepts/cdt_c_indexer_prog_bar.htm
cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/concepts/cdt_o_concepts.htm
cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/tasks/cdt_t_set_src_fold.htm
cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/topics_Concepts.xml
cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF
cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/IGdbDebugPreferenceConstants.java
cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence.java
cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_0.java
cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/AbstractMIControl.java
cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/CLIRecord.java
cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/ExprMetaCommand.java
cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/ExprMetaGetValue.java
cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIExecContinue.java
cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIExecInterrupt.java
cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetPagination.java
cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetTargetAsync.java
cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/ExprMetaGetAttributesInfo.java
cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/ExprMetaGetChildCountInfo.java
cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/ExprMetaGetChildrenInfo.java
cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/ExprMetaGetValueInfo.java
cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/ExprMetaGetVarInfo.java
cdt/cdt_6_0_x/org.eclipse.cdt.dsf.ui/META-INF/MANIFEST.MF
cdt/cdt_6_0_x/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/memory/RefreshAction.java
cdt/cdt_6_0_x/org.eclipse.cdt.dsf/.options
cdt/cdt_6_0_x/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/concurrent/DsfExecutable.java
cdt/cdt_6_0_x/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/concurrent/Sequence.java
cdt/cdt_6_0_x/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/command/CommandCache.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf.pda.ui/.cvsignore
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf.pda.ui/src/org/eclipse/cdt/examples/dsf/pda/ui/PDAAdapterFactory.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf.pda.ui/src/org/eclipse/cdt/examples/dsf/pda/ui/PDAUIPlugin.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf.pda.ui/src/org/eclipse/cdt/examples/dsf/pda/ui/SessionAdapterSet.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/launch/PDALaunch.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/service/PDACommandControl.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/service/PDARunControl.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/dataviewer/AsyncDataViewer.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/dataviewer/DataGeneratorWithExecutor.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/dataviewer/DataGeneratorWithThread.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/dataviewer/IDataGenerator.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/dataviewer/SyncDataViewer.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/dataviewer/answers/AsyncDataViewer.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/dataviewer/answers/DataGeneratorWithExecutor.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/dataviewer/answers/DataGeneratorWithThread.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/dataviewer/answers/IDataGenerator.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/dataviewer/answers/SyncDataViewer.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/requestmonitor/Async2Plus2.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/requestmonitor/AsyncHelloWorld.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/requestmonitor/AsyncQuicksort.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/requestmonitor/answers/Async2Plus2.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/requestmonitor/answers/AsyncHelloWorld.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/requestmonitor/answers/AsyncQuicksort.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/timers/ServicesShutdownSequence.java
cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/timers/TimersVMProvider.java
cdt/cdt_6_0_x/org.eclipse.cdt.gnu.dsf-feature/feature.xml
cdt/cdt_6_0_x/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate.java
cdt/cdt_6_0_x/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchMessages.properties
cdt/cdt_6_0_x/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java
cdt/cdt_6_0_x/org.eclipse.cdt.make.ui/META-INF/MANIFEST.MF
cdt/cdt_6_0_x/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeView.java
cdt/cdt_6_0_x/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/makefile
cdt/cdt_6_0_x/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/objects.mk
cdt/cdt_6_0_x/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/sources.mk
cdt/cdt_6_0_x/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/subdir.mk
cdt/cdt_6_0_x/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IManagedOptionValueHandler.java
cdt/cdt_6_0_x/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/GnuMakefileGenerator.java
cdt/cdt_6_0_x/org.eclipse.cdt.master/feature.xml
cdt/cdt_6_0_x/org.eclipse.cdt.platform-feature/feature.xml
cdt/cdt_6_0_x/org.eclipse.cdt.releng/build.xml
cdt/cdt_6_0_x/org.eclipse.cdt.releng/buildsite.xml
cdt/cdt_6_0_x/org.eclipse.cdt.releng/c99/build.properties
cdt/cdt_6_0_x/org.eclipse.cdt.releng/crossgcc/build.properties
cdt/cdt_6_0_x/org.eclipse.cdt.releng/dsfgdb/build.properties
cdt/cdt_6_0_x/org.eclipse.cdt.releng/gdbjtag/build.properties
cdt/cdt_6_0_x/org.eclipse.cdt.releng/launch.remote/build.properties
cdt/cdt_6_0_x/org.eclipse.cdt.releng/lrparser.sdk/build.properties
cdt/cdt_6_0_x/org.eclipse.cdt.releng/lrparser/build.properties
cdt/cdt_6_0_x/org.eclipse.cdt.releng/master/build.properties
cdt/cdt_6_0_x/org.eclipse.cdt.releng/memory/build.properties
cdt/cdt_6_0_x/org.eclipse.cdt.releng/mylyn/build.properties
cdt/cdt_6_0_x/org.eclipse.cdt.releng/p2/build.properties
cdt/cdt_6_0_x/org.eclipse.cdt.releng/platform/build.properties
cdt/cdt_6_0_x/org.eclipse.cdt.releng/sdk/build.properties
cdt/cdt_6_0_x/org.eclipse.cdt.releng/testing/build.properties
cdt/cdt_6_0_x/org.eclipse.cdt.releng/upc.sdk/build.properties
cdt/cdt_6_0_x/org.eclipse.cdt.releng/upc/build.properties
cdt/cdt_6_0_x/org.eclipse.cdt.releng/util/build.properties
cdt/cdt_6_0_x/org.eclipse.cdt.releng/windows/build.properties
cdt/cdt_6_0_x/org.eclipse.cdt.releng/xlc.sdk/build.properties
cdt/cdt_6_0_x/org.eclipse.cdt.releng/xlc/build.properties
cdt/cdt_6_0_x/org.eclipse.cdt.sdk-feature/feature.xml
cdt/cdt_6_0_x/org.eclipse.cdt.sdk/META-INF/MANIFEST.MF
cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/resources/refactoring/ExtractConstantHistory.rts
cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/resources/refactoring/ExtractLocalVariableHistory.rts
cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/resources/refactoring/ExtractMethodDuplicates.rts
cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/resources/refactoring/ExtractMethodHistory.rts
cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/resources/refactoring/HideMethodHistory.rts
cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/RefactoringHistoryTest.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/extractconstant/ExtractConstantRefactoringTest.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/extractconstant/ExtractConstantTestSuite.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/extractfunction/ExtractFunctionRefactoringTest.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/extractfunction/ExtractFunctionTestSuite.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/extractlocalvariable/ExtractLocalVariableRefactoringTest.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/extractlocalvariable/ExtractLocalVariableTestSuite.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/gettersandsetters/GenerateGettersAndSettersTest.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/hidemethod/HideMethodRefactoringTest.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/hidemethod/HideMethodTestSuite.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/implementmethod/ImplementMethodRefactoringTest.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameRegressionTests.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/search/BasicSearchTest.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/.settings/org.eclipse.pde.api.tools.prefs
cdt/cdt_6_0_x/org.eclipse.cdt.ui/META-INF/MANIFEST.MF
cdt/cdt_6_0_x/org.eclipse.cdt.ui/plugin.properties
cdt/cdt_6_0_x/org.eclipse.cdt.ui/plugin.xml
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginImages.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/StatusDialog.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/AppearancePreferencePage.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/PreferencesMessages.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/PreferencesMessages.properties
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/CCompositeChange.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/CRefactoring.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/CRefactoringContribution.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/CRefactoringDescription.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/ModificationCollector.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/RefactoringRunner.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractconstant/ExtractConstantRefactoring.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractconstant/ExtractConstantRefactoringContribution.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractconstant/ExtractConstantRefactoringDescription.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractconstant/ExtractConstantRefactoringRunner.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/ChooserComposite.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/ExtractFunctionComposite.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/ExtractFunctionInputPage.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/ExtractFunctionRefactoring.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/ExtractFunctionRefactoringContribution.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/ExtractFunctionRefactoringDescription.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/ExtractFunctionRefactoringRunner.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/Messages.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/SimilarFinderVisitor.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/messages.properties
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractlocalvariable/ExtractLocalVariableRefactoring.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractlocalvariable/ExtractLocalVariableRefactoringContribution.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractlocalvariable/ExtractLocalVariableRefactoringDescription.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractlocalvariable/ExtractLocalVariableRefactoringRunner.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GenerateGettersAndSettersRefactoring.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GenerateGettersAndSettersRefactoringRunner.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/hidemethod/HideMethodRefactoring.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/hidemethod/HideMethodRefactoringContribution.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/hidemethod/HideMethodRefactoringDescription.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/hidemethod/HideMethodRefactoringRunner.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/ImplementMethodRefactoring.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/ImplementMethodRefactoringRunner.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/ASTManager.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/LineSearchElement.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/PDOMSearchLabelProvider.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/PDOMSearchListLabelProvider.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/PDOMSearchPatternQuery.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/PDOMSearchQuery.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/PDOMSearchTreeLabelProvider.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CReconciler.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/EditorUtility.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementImageProvider.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/dialogfields/ListDialogField.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractCPropertyTab.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractLangsListTab.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractPage.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ConfigMultiSelectionDialog.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ExPatternDialog.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/refactoring/actions/ExtractConstantAction.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/refactoring/actions/ExtractLocalVariableAction.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/refactoring/actions/GettersAndSettersAction.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/refactoring/actions/HideMethodAction.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/refactoring/actions/ImplementMethodAction.java
cdt/cdt_6_0_x/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/uitree/uiwidgets/UISelectWidget.java
cdt/cdt_6_0_x/org.eclipse.cdt/META-INF/MANIFEST.MF
--- a/cdt/cdt_6_0_x/org.eclipse.cdt-feature/feature.xml	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt-feature/feature.xml	Wed Aug 05 17:35:39 2009 -0500
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.cdt"
       label="%featureName"
-      version="6.1.0.qualifier"
+      version="6.0.0.qualifier"
       provider-name="%providerName"
       image="eclipse_update_120.jpg">
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/utils/CdtVariableResolverTest.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,186 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2009 Andrew Gvozdev (Quoin Inc.) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *
- *******************************************************************************/
-package org.eclipse.cdt.utils;
-
-import org.eclipse.cdt.core.cdtvariables.CdtVariableException;
-import org.eclipse.cdt.core.cdtvariables.ICdtVariableStatus;
-import org.eclipse.cdt.utils.cdtvariables.CdtVariableResolver;
-import org.eclipse.cdt.utils.cdtvariables.IVariableSubstitutor;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-public class CdtVariableResolverTest extends TestCase {
-
-	public static Test suite() {
-		return new TestSuite(CdtVariableResolverTest.class);
-	}
-
-	private class MockSubstitutor implements IVariableSubstitutor {
-
-		public String resolveToString(String macroName)
-				throws CdtVariableException {
-			if (macroName.equals("null")) {
-				return null;
-			}
-			if (macroName.equals("loop")) {
-				return "${LOOP}";
-			}
-			if (macroName.equals("LOOP")) {
-				return "${loop}";
-			}
-			if (macroName.equals("throw")) {
-				throw new CdtVariableException(ICdtVariableStatus.TYPE_MACRO_UNDEFINED,null,null,null);
-			}
-			return "#"+macroName+"#";
-		}
-
-		public String[] resolveToStringList(String macroName)
-				throws CdtVariableException {
-			
-			if (macroName.equals("null-to-list")) {
-				return null;
-			}
-
-			if (macroName.equals("PATH")) {
-				return new String[] {
-						"path0",
-						"path1",
-						"path2",
-				};
-			}
-			return new String[] {"@"+macroName+"@"};
-		}
-		
-	}
-	private MockSubstitutor mockSubstitutor = new MockSubstitutor();
-	
-	public void testResolveToString() throws CdtVariableException {
-		
-		assertEquals("",CdtVariableResolver.resolveToString(null, mockSubstitutor));
-		assertEquals("",CdtVariableResolver.resolveToString("", mockSubstitutor));
-		assertEquals("Text",CdtVariableResolver.resolveToString("Text", mockSubstitutor));
-		assertEquals("#Macro#",CdtVariableResolver.resolveToString("${Macro}", mockSubstitutor));
-		assertEquals("",CdtVariableResolver.resolveToString("${}", mockSubstitutor));
-		assertEquals("${Nomacro",CdtVariableResolver.resolveToString("${Nomacro", mockSubstitutor));
-		assertEquals("Nomacro}",CdtVariableResolver.resolveToString("Nomacro}", mockSubstitutor));
-		assertEquals("Text/#Macro#",CdtVariableResolver.resolveToString("Text/${Macro}", mockSubstitutor));
-		assertEquals("#Macro#/Text",CdtVariableResolver.resolveToString("${Macro}/Text", mockSubstitutor));
-		assertEquals("#Macro1#/#Macro2#",CdtVariableResolver.resolveToString("${Macro1}/${Macro2}", mockSubstitutor));
-		assertEquals("${Macro}",CdtVariableResolver.resolveToString("\\${Macro}", mockSubstitutor));
-		assertEquals("${Macro}:#Macro#",CdtVariableResolver.resolveToString("\\${Macro}:${Macro}", mockSubstitutor));
-		assertEquals("\\#Macro#",CdtVariableResolver.resolveToString("\\\\${Macro}", mockSubstitutor));
-		assertEquals("\\${Macro}",CdtVariableResolver.resolveToString("\\\\\\${Macro}", mockSubstitutor));
-		assertEquals("C:\\tmp\\",CdtVariableResolver.resolveToString("C:\\tmp\\", mockSubstitutor));
-		
-		assertEquals("#workspace_loc:#Macro##",CdtVariableResolver.resolveToString("${workspace_loc:${Macro}}", mockSubstitutor));
-		assertEquals("#workspace_loc:#Macro1#/#Macro2##",CdtVariableResolver.resolveToString("${workspace_loc:${Macro1}/${Macro2}}", mockSubstitutor));
-		assertEquals("#workspace_loc:#project_loc:/#Macro###",CdtVariableResolver.resolveToString("${workspace_loc:${project_loc:/${Macro}}}", mockSubstitutor));
-
-	}
-
-	public void testExceptions() throws CdtVariableException {
-		// test exceptions
-		try {
-			assertEquals("Unreacheable",CdtVariableResolver.resolveToString("${null}", mockSubstitutor));
-			fail("Exception expected");
-		} catch (CdtVariableException e) {
-			// expected behavior
-		}
-		try {
-			assertEquals("Unreacheable",CdtVariableResolver.resolveToString("${throw}", mockSubstitutor));
-			fail("Exception expected");
-		} catch (CdtVariableException e) {
-			// expected behavior
-		}
-		
-		// make sure there is no infinite loop
-		assertEquals("${LOOP}",CdtVariableResolver.resolveToString("${loop}", mockSubstitutor));
-	}
-
-	public void testAsList() throws CdtVariableException {
-		// Syntax ${var} implies using substitutor.resolveToStringList(...)
-		{
-			String[] list = CdtVariableResolver.resolveToStringList("${PATH}", mockSubstitutor);
-			
-			assertNotNull(list);
-			assertEquals(3,list.length);
-			assertEquals("path0",list[0]);
-			assertEquals("path1",list[1]);
-			assertEquals("path2",list[2]);
-		}
-		
-		// uses substitutor.resolveToString(...)
-		{
-			String[] list = CdtVariableResolver.resolveToStringList("Text", mockSubstitutor);
-			
-			assertNotNull(list);
-			assertEquals(1,list.length);
-			assertEquals("Text",list[0]);
-		}
-		
-		// uses substitutor.resolveToString(...)
-		{
-			String[] list = CdtVariableResolver.resolveToStringList("Text${PATH}", mockSubstitutor);
-			
-			assertNotNull(list);
-			assertEquals(1,list.length);
-			assertEquals("Text#PATH#",list[0]);
-		}
-		
-		// uses substitutor.resolveToString(...)
-		{
-			String[] list = CdtVariableResolver.resolveToStringList("${PATH}${PATH}", mockSubstitutor);
-			
-			assertNotNull(list);
-			assertEquals(1,list.length);
-			assertEquals("#PATH##PATH#",list[0]);
-		}
-		
-		// empty var delivers zero-length array
-		{
-			String[] list = CdtVariableResolver.resolveToStringList("${}", mockSubstitutor);
-			
-			assertNotNull(list);
-			assertEquals(0,list.length);
-		}
-		
-		// test exceptions
-		try {
-			CdtVariableResolver.resolveToStringList("${null-to-list}", mockSubstitutor);
-			fail("Exception expected");
-		} catch (CdtVariableException e) {
-			// expected behavior
-		}
-	}
-	
-	// These tests are very basic not intended to be comprehensive
-	public void testOtherBasic() throws CdtVariableException {
-		assertEquals("${Macro}",CdtVariableResolver.createVariableReference("Macro"));
-
-		{
-			String[] list = { "1","2","3" };
-			assertEquals("1;2;3",CdtVariableResolver.convertStringListToString(list,";"));
-		}
-
-		{
-			String[] list = { "${PATH}", "${Macro}" };
-			String[] result = CdtVariableResolver.resolveStringListValues(list, mockSubstitutor, true);
-			assertEquals(4,result.length);
-			assertEquals("path0",result[0]);
-			assertEquals("path1",result[1]);
-			assertEquals("path2",result[2]);
-			assertEquals("@Macro@",result[3]);
-		}
-	}
-
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecTest.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecTest.java	Wed Aug 05 17:35:39 2009 -0500
@@ -669,28 +669,28 @@
 		parse(getAboveComment(), ParserLanguage.CPP, false, 0);
 	}
 
-	//	class X; // X is an incomplete type
-	//	extern X* xp; // xp is a pointer to an incomplete type
-	//	extern int arr[]; // the type of arr is incomplete
-	//	typedef int UNKA[]; // UNKA is an incomplete type
-	//	UNKA* arrp; // arrp is a pointer to an incomplete type
-	//	UNKA** arrpp;
-	//	void foo() {
-	//		xp++; //ill-formed: X is incomplete
-	//		arrp++; //ill-formed: incomplete type
-	//		arrpp++; //OK: sizeof UNKA* is known
-	//	}
-	//	struct X {
-	//		int i; 
-	//	}; // now X is a complete type
-	//	int arr[10]; // now the type of arr is complete
-	//	X x;
-	//	void bar() {
-	//		xp = &x; // OK; type is ''pointer to X''
-	//		arrp = &arr; // ill-formed: different types
-	//		xp++; //OK: X is complete
-	//		arrp++; //ill-formed: UNKA can't be completed
-	//	}
+	// class X; // X is an incomplete type
+	// extern X* xp; // xp is a pointer to an incomplete type
+	// extern int arr[]; // the type of arr is incomplete
+	// typedef int UNKA[]; // UNKA is an incomplete type
+	// UNKA* arrp; // arrp is a pointer to an incomplete type
+	// UNKA** arrpp;
+	// void foo()
+	// {
+	// xp++; //illformed: X is incomplete
+	// arrp++; //illformed: incomplete type
+	// arrpp++; //OK: sizeof UNKA* is known
+	// }
+	// struct X { int i; }; // now X is a complete type
+	// int arr[10]; // now the type of arr is complete
+	// X x;
+	// void bar()
+	// {
+	// xp = &x; // OK; type is ''pointer to X''
+	// arrp = &arr; // illformed: different types
+	// xp++; //OK: X is complete
+	// arrp++; //illformed: UNKA can't be completed
+	// }
 	public void test3_9s7() throws Exception {
 		parse(getAboveComment(), ParserLanguage.CPP, true, 0);
 	}
@@ -797,7 +797,7 @@
 		assertNull(newExpr.getNewPlacement());
 		assertNull(newExpr.getNewInitializer());
 		IASTTypeId typeid= newExpr.getTypeId();
-		isTypeEqual(CPPVisitor.createType(typeid), "int (* [10])()");
+		isTypeEqual(CPPVisitor.createType(typeid), "int () * []");
 	}
 
 	// typedef int T;
@@ -835,7 +835,7 @@
 		newExpr= (ICPPASTNewExpression) expr;
 		assertNull(newExpr.getNewPlacement());
 		assertNull(newExpr.getNewInitializer());
-		isTypeEqual(CPPVisitor.createType(newExpr.getTypeId()), "int [5]");
+		isTypeEqual(CPPVisitor.createType(newExpr.getTypeId()), "int []");
 
 		// new (2,f) T[5];
 		expr= getExpressionOfStatement(fdef, 3);
@@ -843,7 +843,7 @@
 		newExpr= (ICPPASTNewExpression) expr;
 		assertInstance(newExpr.getNewPlacement(), IASTExpressionList.class);
 		assertNull(newExpr.getNewInitializer());
-		isTypeEqual(CPPVisitor.createType(newExpr.getTypeId()), "int [5]");
+		isTypeEqual(CPPVisitor.createType(newExpr.getTypeId()), "int []");
 	}
 
 	// int n=2;
@@ -1858,7 +1858,7 @@
 		
 		BindingAssertionHelper ba= new BindingAssertionHelper(code, true);
 		IFunction f= ba.assertNonProblem("f", 1, IFunction.class);
-		isTypeEqual(f.getType(), "void (int (*)(C))");
+		isTypeEqual(f.getType(), "void (int (C) *)");
 	}
 
 	// class C { };
@@ -1869,7 +1869,7 @@
 		parse(code, ParserLanguage.CPP, true, 0);
 		BindingAssertionHelper ba= new BindingAssertionHelper(code, true);
 		IFunction f= ba.assertNonProblem("h", 1, IFunction.class);
-		isTypeEqual(f.getType(), "void (int * (*)(C *))");
+		isTypeEqual(f.getType(), "void (int * (C *) *)");
 	}
 
 	// namespace A {
@@ -2054,7 +2054,7 @@
 	// *pi,
 	// f(),
 	// *fpi(int),
-	// (*pif)(const char*, const char*),
+	// (*pif)(const char*, const char*);
 	// (*fpif(int))(int);
 	public void test8_3_5s9a() throws Exception {
 		parse(getAboveComment(), ParserLanguage.CPP, true, 0);
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java	Wed Aug 05 17:35:39 2009 -0500
@@ -6,7 +6,7 @@
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *     Andrew Niefer (IBM Corporation) - initial API and implementation
+ *     IBM Corporation - initial API and implementation
  *     Ed Swartz (Nokia)
  *     Markus Schorn (Wind River Systems)
  *     Andrew Ferguson (Symbian)
@@ -121,6 +121,9 @@
 import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor;
 import org.eclipse.cdt.internal.core.parser.ParserException;
 
+/**
+ * @author aniefer
+ */
 public class AST2CPPTests extends AST2BaseTest {
 	
 	public AST2CPPTests() {
@@ -1086,7 +1089,7 @@
 		IFunction g = (IFunction) collector.getName(8).resolveBinding();
 		isTypeEqual(g.getType(), "void (char *)");
 		IFunction h = (IFunction) collector.getName(12).resolveBinding();
-		isTypeEqual(h.getType(), "void (int (*)())");
+		isTypeEqual(h.getType(), "void (int () *)");
 		
 		assertInstances(collector, f, 3);
 		assertInstances(collector, g, 2);
@@ -5743,10 +5746,10 @@
 		checkNewExpression(fdef, 10, IASTIdExpression.class, "int", IASTExpressionList.class);
 		checkNewExpression(fdef, 11, IASTIdExpression.class, "int", IASTIdExpression.class);
 
-		checkNewExpression(fdef, 12, null, "int [][]", null);
-		checkNewExpression(fdef, 13, IASTIdExpression.class, "int [][]", null);
-		checkNewExpression(fdef, 14, null, "int [][]", null);
-		checkNewExpression(fdef, 15, IASTIdExpression.class, "int [][]", null);
+		checkNewExpression(fdef, 12, null, "int [] []", null);
+		checkNewExpression(fdef, 13, IASTIdExpression.class, "int [] []", null);
+		checkNewExpression(fdef, 14, null, "int [] []", null);
+		checkNewExpression(fdef, 15, IASTIdExpression.class, "int [] []", null);
 	}
 
 	private void checkNewExpression(IASTFunctionDefinition fdef, int i_expr, Class<?> placement, String type, Class<?> init) {
@@ -7052,6 +7055,25 @@
 		parseAndCheckBindings(code, ParserLanguage.CPP);
 	}
 	
+	//	class C {
+	//		C& operator()() {return *this;}
+	//	};
+	//	void test() {
+	//		C c;
+	//		c()()()()()()()()()()()()()();
+	//	}
+	public void testNestedOverloadedFunctionCalls_Bug283324() throws Exception {
+		final String code = getAboveComment();
+		IASTTranslationUnit tu= parseAndCheckBindings(code, ParserLanguage.CPP);
+		IASTFunctionDefinition test= getDeclaration(tu, 1);
+		IASTExpressionStatement stmt= getStatement(test, 1);
+		long now= System.currentTimeMillis();
+		IType t= stmt.getExpression().getExpressionType();
+		assertInstance(t, ICPPReferenceType.class);
+		final long time = System.currentTimeMillis() - now;
+		assertTrue("Lasted " + time + "ms", time < 5000);
+	}
+	
 	
 	//	struct A { int a; };
 	//	struct B { int b; };
@@ -7122,7 +7144,7 @@
 	//		foo(L'a');
 	//	}
 	public void testWideCharacterLiteralTypes_Bug270892() throws Exception {
-		IASTTranslationUnit tu = parse( getAboveComment(), ParserLanguage.CPP ); 
+		IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); 
 		CPPNameCollector col = new CPPNameCollector();
 		tu.accept(col);
 		
@@ -7180,122 +7202,53 @@
     	parseAndCheckBindings(code, ParserLanguage.CPP);
 	}
 	
-	//	int foo(int x);
-	//	int bar(int x);
+	// typedef enum enum_name enum_name;
+	public void testTypedefRecursion_285457() throws Exception {
+		BindingAssertionHelper ba= new BindingAssertionHelper(getAboveComment(), true);
+		ba.assertProblem("enum_name", 9);
+	}
+
+	//	class A {
+	//	  friend inline void m(A p) {}
+	//	};
 	//
-	//	typedef int (*fp)(int);
-	//	struct A {
-	//	        operator fp() { return foo; }
-	//	} a;
-	//
-	//	int i = bar(a(1));  // problem on bar
-	public void testCallToObjectOfClassType_267389() throws Exception {
+	//	void test(A a) {
+	//	  m(a);
+	//	}
+	public void _testInlineFriendFunction_284690() throws Exception {
 		final String code = getAboveComment();
 		parseAndCheckBindings(code, ParserLanguage.CPP);
 	}
 
-
-	// typedef int T;
-	// class C {
-	//    C(T);  // ctor
-	//    C(s);  // instance s;
-    // };
-	public void testDeclarationAmbiguity_Bug269953() throws Exception {
-		final String code = getAboveComment();
-		IASTTranslationUnit tu= parseAndCheckBindings(code, ParserLanguage.CPP);
-		ICPPASTCompositeTypeSpecifier ct= getCompositeType(tu, 1);
-		ICPPClassType c= (ICPPClassType) ct.getName().resolveBinding();
-
-		ICPPMethod[] methods= c.getDeclaredMethods();
-		assertEquals(1, methods.length);
-		assertEquals("C", methods[0].getName());
-
-		ICPPField[] fields= c.getDeclaredFields();
-		assertEquals(1, fields.length);
-		assertEquals("s", fields[0].getName());
-	}	
-	
-	//	class C3 {
-	//		C3(int);
-	//	};
-	//	typedef C3 T3;
-	//	T3::C3(int) {
-	//	}
-	public void testCTorWithTypedef_Bug269953() throws Exception {
-		final String code = getAboveComment();
-		parseAndCheckBindings(code, ParserLanguage.CPP);
-	}
-	
-	//	template<class T> class Compare {
-	//	    Compare();
-	//	    ~Compare();
-	//	    bool check;
-	//	};
-	//	typedef Compare<int> MY_COMPARE;
-	//	template<> MY_COMPARE::Compare() {}
-	public void testTemplateCTorWithTypedef_Bug269953() throws Exception {
-		final String code = getAboveComment();
-		parseAndCheckBindings(code, ParserLanguage.CPP);
-	}
-	
-	//	class IBase {
-	//		public:
-	//			virtual void base() = 0;
-	//	};
+	//	void f(int t);
+	//	void f(unsigned int t);
+	//	void f(long t);
+	//
+	//	enum IntEnum { i1 };
+	//	enum UnsignedEnum { u1 = 0x7FFFFFFF, u2 };
+	//	enum LongEnum { l1 = -1, l2 = 0x7FFFFFFF, l3 };
 	//
-	//	class IDerived : virtual public IBase {
-	//		public:
-	//			virtual void derived() = 0;
-	//	};
-	//
-	//	class BaseImplHelper : virtual public IBase {
-	//		public:
-	//			virtual void base() {}
-	//	};
-	//
-	//	class Derived : virtual public IDerived, public BaseImplHelper {
-	//		public:
-	//			virtual void derived() {}
-	//	};
-	//
-	//	int main() {
-	//		Derived d;
-	//		d.base(); // Parser log reports ambiguity on 'base'
-	//		return 0;
+	//	void test() {
+	//	  f(i1);
+	//	  f(u1);
+	//	  f(l1);
 	//	}
-	public void testHiddenVirtualBase_Bug282993() throws Exception {
-		final String code = getAboveComment();
-		parseAndCheckBindings(code, ParserLanguage.CPP);
-	}
-	
-	//	class C {
-	//		C& operator()() {return *this;}
-	//	};
-	//	void test() {
-	//		C c;
-	//		c()()()()()()()()()()()()()();
-	//	}
-	public void testNestedOverloadedFunctionCalls_Bug283324() throws Exception {
-		final String code = getAboveComment();
-		IASTTranslationUnit tu= parseAndCheckBindings(code, ParserLanguage.CPP);
-		IASTFunctionDefinition test= getDeclaration(tu, 1);
-		IASTExpressionStatement stmt= getStatement(test, 1);
-		long now= System.currentTimeMillis();
-		IType t= stmt.getExpression().getExpressionType();
-		assertInstance(t, ICPPReferenceType.class);
-		final long time = System.currentTimeMillis() - now;
-		assertTrue("Lasted " + time + "ms", time < 5000);
-	}
-
-	//	class A {
-	//	  friend inline void m(A p1, A p2) {}
-	//	};
-	//
-	//	void test(A a1, A a2) {
-	//	  m(a1, a2);
-	//	}
-	public void _testInlineFriendFunction_284690() throws Exception {
-		final String code = getAboveComment();
-		parseAndCheckBindings(code, ParserLanguage.CPP);
+	public void testEnumToIntConversion_285368() throws Exception {
+		BindingAssertionHelper ba= new BindingAssertionHelper(getAboveComment(), true);
+    	ICPPFunction f1 = ba.assertNonProblem("f(i1)", 1, ICPPFunction.class);
+    	IType t1 = f1.getType().getParameterTypes()[0];
+    	assertTrue(t1 instanceof ICPPBasicType);
+    	assertEquals(IBasicType.t_int, ((ICPPBasicType) t1).getType());
+    	assertEquals(0, ((ICPPBasicType) t1).getQualifierBits());
+    	ICPPFunction f2 = ba.assertNonProblem("f(u1)", 1, ICPPFunction.class);
+    	IType t2 = f2.getType().getParameterTypes()[0];
+    	assertTrue(t2 instanceof ICPPBasicType);
+    	assertEquals(IBasicType.t_int, ((ICPPBasicType) t2).getType());
+    	assertEquals(ICPPBasicType.IS_UNSIGNED, ((ICPPBasicType) t2).getQualifierBits());
+    	ICPPFunction f3 = ba.assertNonProblem("f(l1)", 1, ICPPFunction.class);
+    	IType t3 = f3.getType().getParameterTypes()[0];
+    	assertTrue(t3 instanceof ICPPBasicType);
+    	assertEquals(IBasicType.t_int, ((ICPPBasicType) t3).getType());
+    	assertEquals(ICPPBasicType.IS_LONG, ((ICPPBasicType) t3).getQualifierBits());
 	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CSpecTest.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CSpecTest.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2008 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -1203,10 +1203,8 @@
 		buffer.append("for (int j = 0, k = n*m+300; j < k; j++)\n"); //$NON-NLS-1$
 		buffer.append("// a is a pointer to a VLA with n*m+300 elements\n"); //$NON-NLS-1$
 		buffer.append("a[i][j] += x;\n"); //$NON-NLS-1$
-		buffer.append("}\n");
-		String code = buffer.toString(); //$NON-NLS-1$
-		// no valid c++ code
-		parse(code, ParserLanguage.C, true, 0);
+		buffer.append("}\n"); //$NON-NLS-1$
+		parseCandCPP(buffer.toString(), true, 0);
 	}
 	
 	/**
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1971,7 +1971,8 @@
 		ICPPSpecialization spec = (ICPPSpecialization) col.getName(9).resolveBinding();
 		assertSame(spec.getSpecializedBinding(), ctor);
 		
-		ICPPParameter c = (ICPPParameter) col.getName(10).resolveBinding();
+		ICPPSpecialization c = (ICPPSpecialization) col.getName(10).resolveBinding();
+		assertSame(c.getSpecializedBinding(), g);
 		
 		assertSame(blah, col.getName(11).resolveBinding());
 		assertSame(c, col.getName(12).resolveBinding());
@@ -1979,7 +1980,8 @@
 		ICPPSpecialization spec2 = (ICPPSpecialization) col.getName(13).resolveBinding();
 		assertSame(spec.getSpecializedBinding(), ctor);
 		
-		ICPPParameter c2 = (ICPPParameter) col.getName(14).resolveBinding();
+		ICPPSpecialization c2 = (ICPPSpecialization) col.getName(14).resolveBinding();
+		assertSame(c2.getSpecializedBinding(), g);
 		
 		assertSame(blah, col.getName(15).resolveBinding());
 		assertSame(c2, col.getName(16).resolveBinding());
@@ -2202,6 +2204,7 @@
 		bh.assertNonProblem("make_pair(1", 9, ICPPFunction.class);
     }
 
+    
 	//	template<class T>
 	//	struct A {};
 	//
@@ -4054,7 +4057,7 @@
 	//	void test() {
 	//	  S(a);
 	//	}
-	public void testFunctionTemplateWithArrayReferenceParameter_269926() throws Exception {
+	public void _testFunctionTemplateWithArrayReferenceParameter_269926() throws Exception {
 		final String code = getAboveComment();
 		parseAndCheckBindings(code, ParserLanguage.CPP);		
 	}
@@ -4104,14 +4107,4 @@
 		final String code = getAboveComment();
 		parseAndCheckBindings(code, ParserLanguage.CPP);
 	}
-	
-	//	template <int N> void T(int (&array)[N]) {};
-	//	void test() {
-	//	  int a[2];
-	//	  T<2>(a); 
-	//	}
-	public void testInstantiationOfArraySize_269926() throws Exception {
-		final String code= getAboveComment();
-		parseAndCheckBindings(code, ParserLanguage.CPP);
-	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java	Wed Aug 05 17:35:39 2009 -0500
@@ -4008,7 +4008,7 @@
 				// for plain C this is actually not a problem, the second J has to be interpreted as a (useless) 
 				// parameter name.
 				assertInstance(typedef, ITypedef.class);
-				isTypeEqual(((ITypedef) typedef).getType(), "int (*)(int)");
+				isTypeEqual(((ITypedef) typedef).getType(), "int (int) *");
 			}
 		}
 	}
@@ -5123,19 +5123,19 @@
         	BindingAssertionHelper ba= new BindingAssertionHelper(comment, isCpp);
 
         	IFunction f= ba.assertNonProblem("f1", 2, IFunction.class);
-        	isTypeEqual(f.getType(), "int (int (*)(int))");
+        	isTypeEqual(f.getType(), "int (int (int) *)");
 
         	f= ba.assertNonProblem("f2", 2, IFunction.class);
-        	isTypeEqual(f.getType(), "int (int (*)(int))");
+        	isTypeEqual(f.getType(), "int (int (int) *)");
 
         	f= ba.assertNonProblem("f3", 2, IFunction.class);
-        	isTypeEqual(f.getType(), "int (int (*)(int))");
+        	isTypeEqual(f.getType(), "int (int (int) *)");
 
         	f= ba.assertNonProblem("f4", 2, IFunction.class);
         	isTypeEqual(f.getType(), "int (int)");
         	
         	f= ba.assertNonProblem("f5", 2, IFunction.class);
-        	isTypeEqual(f.getType(), "int (int * (*)(int *))");
+        	isTypeEqual(f.getType(), "int (int * (int *) *)");
     	}
     }
 
@@ -5145,7 +5145,7 @@
     	BindingAssertionHelper ba= new BindingAssertionHelper(getAboveComment(), true);
 
     	IFunction f= ba.assertNonProblem("f1", 2, IFunction.class);
-    	isTypeEqual(f.getType(), "void (int (*)(C))");
+    	isTypeEqual(f.getType(), "void (int (C) *)");
     }
 
     // int (*f1(int par))[5] {};
@@ -5157,10 +5157,10 @@
     		BindingAssertionHelper ba= new BindingAssertionHelper(getAboveComment(), isCpp);
 
     		IFunction f= ba.assertNonProblem("f1", 2, IFunction.class);
-    		isTypeEqual(f.getType(), "int (* (int))[5]");
+    		isTypeEqual(f.getType(), "int [] * (int)");
     		
     		f= ba.assertNonProblem("f1 ", 2, IFunction.class);
-    		isTypeEqual(f.getType(), "int (* (int))[5]");
+    		isTypeEqual(f.getType(), "int [] * (int)");
     	}
     }
     
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/InclusionTests.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/InclusionTests.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2008 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -49,7 +49,6 @@
 		super(name);
 	}
 
-	@Override
 	protected void tearDown() throws Exception {
 		if (fProject != null) {
 			CProjectHelper.delete(fProject);
@@ -78,36 +77,6 @@
     	return folder;
 	}
 
-    // #include "one.h"
-    // #include "f1/two.h"
-    // #include "f1/f2/three.h"
-    public void testIncludeVariables_69529() throws Exception	{    
-    	String content= getAboveComment();
-
-    	IFolder f0 = importFolder(".framework"); 
-    	importFolder("f1.framework"); 
-    	importFolder("f1"); 
-    	importFolder("f1.framework/f2"); 
-    	importFolder("f3"); 
-    	IFile base = importFile("base.cpp", content); 
-    	
-    	importFile(".framework/one.h", "1"); 
-    	importFile("f1.framework/two.h", "2"); 
-    	importFile("f1.framework/f2/three.h", "3"); 
-
-    	String[] path = {
-    			f0.getLocation().removeLastSegments(1) + "/__framework__.framework/__header__"
-    	};
-    	IScannerInfo scannerInfo = new ExtendedScannerInfo(Collections.EMPTY_MAP, path, new String[]{}, null);
-    	CodeReader reader= new CodeReader(base.getLocation().toString());
-    	initializeScanner(reader, ParserLanguage.C, ParserMode.COMPLETE_PARSE, scannerInfo);
-
-    	// first file is not picked up (no framework)
-    	validateInteger("2");
-    	validateInteger("3");
-    	validateEOF();
-    }
-
     public void testIncludeNext() throws Exception	{    	
     	String baseFile = "int zero; \n#include \"foo.h\""; //$NON-NLS-1$
     	String i1Next = "int one; \n#include_next <bar/foo.h>"; //$NON-NLS-1$
@@ -210,8 +179,8 @@
 
     	CodeReader reader= new CodeReader(base.getLocation().toString());
     	ParserLanguage lang[]= {ParserLanguage.C, ParserLanguage.CPP};
-    	for (ParserLanguage element : lang) {
-    		initializeScanner(reader, element, ParserMode.COMPLETE_PARSE, new ScannerInfo());
+    	for (int i = 0; i < lang.length; i++) {
+    		initializeScanner(reader, lang[i], ParserMode.COMPLETE_PARSE, new ScannerInfo());
     		validateToken(IToken.t_int);
     		validateIdentifier("var");
     		validateToken(IToken.tASSIGN);
@@ -232,22 +201,4 @@
     	validateEOF();
     }
     
-    // #include <inc/test.h>
-    public void testRelativeIncludes_243170() throws Exception	{    
-    	String content= getAboveComment();
-
-    	IFolder f0 = importFolder("f1"); 
-    	importFolder("f1/f2"); 
-    	importFolder("f1/f2/inc"); 
-    	importFile("f1/f2/inc/test.h", "1"); 
-    	IFile base = importFile("f1/base.cpp", getAboveComment()); 
-
-    	String[] path = {"f2"};  // relative include
-    	IScannerInfo scannerInfo = new ExtendedScannerInfo(Collections.EMPTY_MAP, path, new String[]{}, null);
-    	CodeReader reader= new CodeReader(base.getLocation().toString());
-    	initializeScanner(reader, ParserLanguage.C, ParserMode.COMPLETE_PARSE, scannerInfo);
-
-    	validateInteger("1");
-    	validateEOF();
-    }
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/PreprocessorTestsBase.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/PreprocessorTestsBase.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 Wind River Systems, Inc. and others.
+ * Copyright (c) 2007, 2008 Wind River Systems, Inc. and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -88,17 +88,9 @@
 	}
 
 	protected void initializeScanner() throws Exception {
-		initializeScanner(getAboveComment());
-	}
-
-	protected StringBuffer[] getTestContent(int sections) throws IOException {
 		StringBuffer[] input= TestSourceReader.getContentsForTest(
-				CTestPlugin.getDefault().getBundle(), "parser", getClass(), getName(), sections);
-		return input;
-	}
-
-	protected String getAboveComment() throws IOException {
-		return getTestContent(1)[0].toString();
+				CTestPlugin.getDefault().getBundle(), "parser", getClass(), getName(), 1);
+		initializeScanner(input[0].toString());
 	}
 
 	protected void fullyTokenize() throws Exception {
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBindingResolutionTestBase.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBindingResolutionTestBase.java	Wed Aug 05 17:35:39 2009 -0500
@@ -224,13 +224,17 @@
 	}
 	
 	protected static void assertTypeContainer(IType conType, String expQN, Class containerType, Class expContainedType, String expContainedTypeQN) {
-		assertInstance(conType, ITypeContainer.class);
-		assertInstance(conType, containerType);
-		IType containedType= ((ITypeContainer)conType).getType();
-		assertInstance(containedType, expContainedType);
-		if (expContainedTypeQN != null) {
-			assertInstance(containedType, IBinding.class);
-			assertQNEquals(expContainedTypeQN, (IBinding) containedType);
+		try {
+			assertInstance(conType, ITypeContainer.class);
+			assertInstance(conType, containerType);
+			IType containedType= ((ITypeContainer)conType).getType();
+			assertInstance(containedType, expContainedType);
+			if (expContainedTypeQN != null) {
+				assertInstance(containedType, IBinding.class);
+				assertQNEquals(expContainedTypeQN, (IBinding) containedType);
+			}
+		} catch (DOMException de) {
+			fail(de.getMessage());
 		}
 	}
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionTest.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionTest.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 Symbian Software Systems and others.
+ * Copyright (c) 2007, 2008 Symbian Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -24,7 +24,6 @@
 import org.eclipse.cdt.core.dom.ast.ICompositeType;
 import org.eclipse.cdt.core.dom.ast.IEnumeration;
 import org.eclipse.cdt.core.dom.ast.IEnumerator;
-import org.eclipse.cdt.core.dom.ast.IFunction;
 import org.eclipse.cdt.core.dom.ast.IPointerType;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.core.dom.ast.IValue;
@@ -1364,19 +1363,6 @@
 		assertNotNull(numericalValue);
 		assertEquals(i, numericalValue.intValue());
 	}
-	
-	// void f(int (&v)[1]);
-	// void f(int (&v)[2]);
-	
-	// void test() {
-	//   int a[1], b[2];
-	//   f(a); f(b);
-	// }
-	public void testArrayTypeWithSize_269926() throws Exception {
-    	IFunction f1= getBindingFromASTName("f(a)", 1, IFunction.class);
-    	IFunction f2= getBindingFromASTName("f(b)", 1, IFunction.class);
-    	assertFalse(f1.equals(f2));
-	}
 
 	/* CPP assertion helpers */
 	/* ##################################################################### */
@@ -1470,14 +1456,18 @@
  	 * @param qn may be null
  	 */
 	static protected void assertPTM(IType type, String cqn, String qn) {
-		assertTrue(type instanceof ICPPPointerToMemberType);
-		ICPPPointerToMemberType ptmt = (ICPPPointerToMemberType) type;
-		ICPPClassType classType = (ICPPClassType) ptmt.getMemberOfClass();
-		assertQNEquals(cqn, classType);
-		if(qn!=null) {
-			assert(ptmt.getType() instanceof ICPPBinding);
-			ICPPBinding tyBinding = (ICPPBinding) ptmt.getType();
-			assertQNEquals(qn, tyBinding);
+		try {
+			assertTrue(type instanceof ICPPPointerToMemberType);
+			ICPPPointerToMemberType ptmt = (ICPPPointerToMemberType) type;
+			ICPPClassType classType = (ICPPClassType) ptmt.getMemberOfClass();
+			assertQNEquals(cqn, classType);
+			if(qn!=null) {
+				assert(ptmt.getType() instanceof ICPPBinding);
+				ICPPBinding tyBinding = (ICPPBinding) ptmt.getType();
+				assertQNEquals(qn, tyBinding);
+			}
+		} catch(DOMException de) {
+			fail(de.getMessage());
 		}
 	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1597,7 +1597,7 @@
 	public void testDefaultTemplateArgInHeader_264988() throws Exception { 
 		ICPPTemplateInstance ti= getBindingFromASTName("XT<>", 4, ICPPTemplateInstance.class);
 	}
-
+	
 	// typedef int TInt;
 	// template <typename T> class XT {
 	//    void m();
@@ -1609,76 +1609,6 @@
 	public void testParentScopeOfSpecialization_267013() throws Exception { 
 		ITypedef ti= getBindingFromASTName("TInt", 4, ITypedef.class);
 	}
-
-	//	struct __true_type {};
-	//	struct __false_type {};
-	//
-	//	template<typename, typename>
-	//	struct __are_same {
-	//	  enum { __value = 0 };
-	//	  typedef __false_type __type;
-	//	};
-	//
-	//	template<typename _Tp>
-	//	struct __are_same<_Tp, _Tp> {
-	//	  enum { __value = 1 };
-	//	  typedef __true_type __type;
-	//	};
-	//
-	//	template<bool, typename>
-	//	struct __enable_if {};
-	//
-	//	template<typename _Tp>
-	//	struct __enable_if<true, _Tp> {
-	//	  typedef _Tp __type;
-	//	};
-	//
-	//	template<typename _Iterator, typename _Container>
-	//	struct __normal_iterator {
-	//	  template<typename _Iter>
-	//	    __normal_iterator(
-	//	        const __normal_iterator<
-	//	            _Iter,
-	//	            typename __enable_if<
-	//	                __are_same<_Iter, typename _Container::pointer>::__value,
-	//	                _Container
-	//	            >::__type
-	//	        >& __i);
-	//	};
-	//
-	//	template<typename _Tp>
-	//	struct allocator {
-	//	  typedef _Tp* pointer;
-	//	  typedef const _Tp* const_pointer;
-	//
-	//	  template<typename _Tp1>
-	//	  struct rebind
-	//	  { typedef allocator<_Tp1> other; };
-	//	};
-	//
-	//	template<typename _Tp, typename _Alloc = allocator<_Tp> >
-	//	struct vector {
-	//	  typedef vector<_Tp, _Alloc> vector_type;
-	//	  typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
-	//
-	//	  typedef typename _Tp_alloc_type::pointer pointer;
-	//	  typedef typename _Tp_alloc_type::const_pointer const_pointer;
-	//	  typedef __normal_iterator<pointer, vector_type> iterator;
-	//	  typedef __normal_iterator<const_pointer, vector_type> const_iterator;
-	//
-	//	  iterator begin();
-	//	  const_iterator begin() const;
-	//	};
-
-	//	void f(vector<int>::const_iterator p);
-	//
-	//	void test() {
-	//	  vector<int> v;
-	//	  f(v.begin());
-	//	}
-	public void testTemplateMetaprogramming_284686() throws Exception { 
-		getBindingFromASTName("f(v.begin())", 1, ICPPFunction.class);
-	}
 	
 	//	template<typename T> class op {
 	//  public:
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/DBTest.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/DBTest.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 QNX Software Systems
+ * Copyright (c) 2005, 2008 QNX Software Systems
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -33,7 +33,6 @@
 public class DBTest extends BaseTestCase {
 	protected Database db;
 	
-	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
 		db = new Database(getTestDir().append(getName()+System.currentTimeMillis()+".dat").toFile(),
@@ -53,7 +52,6 @@
 		return path;
 	}
 	
-	@Override
 	protected void tearDown() throws Exception {
 		db.close();
 		if(!db.getLocation().delete()) {
@@ -74,8 +72,8 @@
 		assertEquals(-blocksize, db.getShort(mem - Database.BLOCK_HEADER_SIZE));
 		db.free(mem);
 		assertEquals(blocksize, db.getShort(mem - Database.BLOCK_HEADER_SIZE));
-		assertEquals(mem, db.getRecPtr((deltas-Database.MIN_BLOCK_DELTAS+1) * Database.INT_SIZE));
-		assertEquals(mem + blocksize, db.getRecPtr((freeDeltas-Database.MIN_BLOCK_DELTAS+1) * Database.INT_SIZE));
+		assertEquals(mem - Database.BLOCK_HEADER_SIZE, db.getRecPtr((deltas-Database.MIN_BLOCK_DELTAS+1) * Database.INT_SIZE));
+		assertEquals(mem - Database.BLOCK_HEADER_SIZE + blocksize, db.getRecPtr((freeDeltas-Database.MIN_BLOCK_DELTAS+1) * Database.INT_SIZE));
 	}
 
 	public void testBug192437() throws IOException {
@@ -112,10 +110,10 @@
 		long mem2 = db.malloc(realsize);
 		db.free(mem1);
 		db.free(mem2);
-		assertEquals(mem2, db.getRecPtr((deltas-Database.MIN_BLOCK_DELTAS+1) * Database.INT_SIZE));
+		assertEquals(mem2 - Database.BLOCK_HEADER_SIZE, db.getRecPtr((deltas-Database.MIN_BLOCK_DELTAS+1) * Database.INT_SIZE));
 		assertEquals(0, db.getRecPtr(mem2));
-		assertEquals(mem1, db.getRecPtr(mem2 + Database.INT_SIZE));
-		assertEquals(mem2, db.getRecPtr(mem1));
+		assertEquals(mem1 - Database.BLOCK_HEADER_SIZE, db.getRecPtr(mem2 + Database.INT_SIZE));
+		assertEquals(mem2 - Database.BLOCK_HEADER_SIZE, db.getRecPtr(mem1));
 		assertEquals(0, db.getRecPtr(mem1 + Database.INT_SIZE));
 	}
 	
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core.win32/library/Win32ProcessEx.c	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core.win32/library/Win32ProcessEx.c	Wed Aug 05 17:35:39 2009 -0500
@@ -39,11 +39,10 @@
 	int uid; // quasi-unique process ID; we have to create it to avoid duplicated pid 
 	         // (actually this impossible from OS point of view but it is still possible
 			 // a clash of new created and already finished process with one and the same PID.
-	// 4 events connected to this process (see starter)
-	HANDLE eventBreak;			// signaled when Spawner.interrupt() is called; mildest of the terminate requests (SIGINT signal in UNIX world)
+	// 3 events connected to this process (see starter)
+	HANDLE eventBreak;
 	HANDLE eventWait;
-	HANDLE eventTerminate;		// signaled when Spawner.terminate() is called; more forceful terminate request (SIGTERM signal in UNIX world)
-	HANDLE eventKill;			// signaled when Spawner.kill() is called; most forceful terminate request (SIGKILL signal in UNIX world)
+	HANDLE eventTerminate;
 } procInfo_t, * pProcInfo_t;
 
 static int procCounter = 0; // Number of running processes
@@ -147,7 +146,6 @@
 	wchar_t eventBreakName[20];
 	wchar_t eventWaitName[20];
 	wchar_t eventTerminateName[20];
-	wchar_t eventKillName[20];
 #ifdef DEBUG_MONITOR
 	wchar_t buffer[1000];
 #endif
@@ -219,14 +217,14 @@
 	swprintf(eventBreakName, L"SABreak%p", pCurProcInfo);
 	swprintf(eventWaitName, L"SAWait%p", pCurProcInfo);
 	swprintf(eventTerminateName, L"SATerm%p", pCurProcInfo);
-	swprintf(eventKillName, L"SAKill%p", pCurProcInfo);
+	pCurProcInfo -> eventBreak = CreateEventW(NULL, TRUE, FALSE, eventBreakName);
+	ResetEvent(pCurProcInfo -> eventBreak);   
+	pCurProcInfo -> eventWait = CreateEventW(NULL, TRUE, FALSE, eventWaitName);
+	ResetEvent(pCurProcInfo -> eventWait);   
+	pCurProcInfo -> eventTerminate = CreateEventW(NULL, TRUE, FALSE, eventTerminateName);
+	ResetEvent(pCurProcInfo -> eventTerminate);   
 
-	pCurProcInfo->eventBreak     = CreateEventW(NULL, FALSE, FALSE, eventBreakName);
-	pCurProcInfo->eventWait      = CreateEventW(NULL, TRUE,  FALSE, eventWaitName);
-	pCurProcInfo->eventTerminate = CreateEventW(NULL, FALSE, FALSE, eventTerminateName);
-	pCurProcInfo->eventKill      = CreateEventW(NULL, FALSE, FALSE, eventKillName);
-
-	swprintf(szCmdLine, L"\"%sstarter.exe\" %i %i %s %s %s %s ", path, pid, nLocalCounter, eventBreakName, eventWaitName, eventTerminateName, eventKillName);
+	swprintf(szCmdLine, L"\"%sstarter.exe\" %i %i %s %s %s ", path, pid, nLocalCounter, eventBreakName, eventWaitName, eventTerminateName);
 	nPos = wcslen(szCmdLine);
 
 	// Prepare command line
@@ -669,34 +667,22 @@
 			// Temporary do nothing
 			ret = 0;
 			break;
+		case SIG_KILL:
 		case SIG_TERM:
 #ifdef DEBUG_MONITOR
-			swprintf(buffer, _T("Spawner received TERM signal for process %i\n"),
+			swprintf(buffer, _T("Spawner received KILL or TERM signal for process %i\n"), 
 				pCurProcInfo -> pid);
 			OutputDebugStringW(buffer);
 #endif
 		    SetEvent(pCurProcInfo -> eventTerminate);
 #ifdef DEBUG_MONITOR
-			OutputDebugStringW(_T("Spawner signalled TERM event\n"));
-#endif
-			ret = 0;
-			break;
-
-		case SIG_KILL:
-#ifdef DEBUG_MONITOR
-			swprintf(buffer, _T("Spawner received KILL signal for process %i\n"),
-				pCurProcInfo -> pid);
-			OutputDebugStringW(buffer);
-#endif
-		    SetEvent(pCurProcInfo -> eventKill);
-#ifdef DEBUG_MONITOR
 			OutputDebugStringW(_T("Spawner signalled KILL event\n"));
 #endif
 			ret = 0;
 			break;
 		case SIG_INT:
 		    ResetEvent(pCurProcInfo -> eventWait);
-			SetEvent(pCurProcInfo -> eventBreak);
+			PulseEvent(pCurProcInfo -> eventBreak);
 			ret = (WaitForSingleObject(pCurProcInfo -> eventWait, 100) == WAIT_OBJECT_0);
 			break;
 		default:
@@ -855,12 +841,6 @@
 		pCurProcInfo -> eventTerminate = 0;
 		}
 
-	if(0 != pCurProcInfo -> eventKill)
-		{
-		CloseHandle(pCurProcInfo -> eventKill);
-		pCurProcInfo -> eventKill = 0;
-		}
-
 	pCurProcInfo -> pid = 0;
 }
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core.win32/library/starter/starter.cpp	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core.win32/library/starter/starter.cpp	Wed Aug 05 17:35:39 2009 -0500
@@ -139,8 +139,8 @@
 	wchar_t ** argv = CommandLineToArgvW(GetCommandLine(), &argc);
 
 	// Make sure that we've been passed the right number of arguments
-	if (argc < 8) {
-		_tprintf(_T("Usage: %s (four inheritable event handles) (CommandLineToSpawn)\n"),
+	if (argc < 7) {
+		_tprintf(_T("Usage: %s (Three InheritableEventHandles) (CommandLineToSpawn)\n"),
 				argv[0]);
 		return(0);
 	}
@@ -151,7 +151,7 @@
 	szCmdLine[0]= 0;
 	int nPos = 0;
 
-	for(int i = 7; i < argc; ++i)
+	for(int i = 6; i < argc; ++i)
 	{
 		int nCpyLen;
 		int len= wcslen(argv[i]);
@@ -192,11 +192,9 @@
 
 	BOOL exitProc = FALSE;
 	HANDLE waitEvent = OpenEventW(EVENT_ALL_ACCESS, TRUE, argv[4]);
-	HANDLE h[4];
-	h[0] = OpenEventW(EVENT_ALL_ACCESS, TRUE, argv[3]);	// simulated SIGINT
-//  h[1] we reserve for the process handle
-	h[2] = OpenEventW(EVENT_ALL_ACCESS, TRUE, argv[5]); // simulated SIGTERM
-	h[3] = OpenEventW(EVENT_ALL_ACCESS, TRUE, argv[6]); // simulated SIGKILL
+	HANDLE h[3];
+	h[0] = OpenEventW(EVENT_ALL_ACCESS, TRUE, argv[3]);
+	h[2] = OpenEventW(EVENT_ALL_ACCESS, TRUE, argv[5]); // This is a terminate event
 	SetConsoleCtrlHandler(HandlerRoutine, TRUE);
 
 	int parentPid = wcstol(argv[1], NULL, 10);
@@ -308,10 +306,9 @@
 		{
 			// Wait for the spawned-process to die or for the event
 			// indicating that the processes should be forcibly killed.
-			DWORD event = WaitForMultipleObjects(4, h, FALSE, INFINITE);
-			switch (event)
+			switch (WaitForMultipleObjects(3, h, FALSE, INFINITE))
 			{
-			case WAIT_OBJECT_0 + 0: // SIGINT
+			case WAIT_OBJECT_0 + 0: // Send Ctrl-C
 #ifdef DEBUG_MONITOR
 				swprintf(buffer, _T("starter (PID %i) received CTRL-C event\n"), currentPID);
 				OutputDebugStringW(buffer);
@@ -341,23 +338,16 @@
 				GetExitCodeProcess(pi.hProcess, &dwExitCode);
 				exitProc = TRUE;
 				break;
-
-			// Terminate and Kill behavior differ only for cygwin processes, where
-			// we use the cygwin 'kill' command. We send a SIGKILL in one case,
-			// SIGTERM in the other. For non-cygwin processes, both requests
-			// are treated exactly the same
-			case WAIT_OBJECT_0 + 2:	// TERM
-			case WAIT_OBJECT_0 + 3:	// KILL
-			{
-				const wchar_t* signal = (event == WAIT_OBJECT_0 + 2) ? L"TERM" : L"KILL";
+				
+			case WAIT_OBJECT_0 + 2: // Kill
 #ifdef DEBUG_MONITOR
-				swprintf(buffer, _T("starter received %s event (PID %i)\n"), signal, currentPID);
+				swprintf(buffer, _T("starter received KILL event (PID %i)\n"), currentPID);
 				OutputDebugStringW(buffer);
 #endif
 				if (isCygwin(h[1])) {
 					// Need to issue a kill command
 					wchar_t kill[1024];
-					swprintf(kill, L"kill -%s %d", signal, pi.dwProcessId);
+					swprintf(kill, L"kill -SIGTERM %d", pi.dwProcessId);
 					if (!runCygwinCommand(kill)) {
 						// fall back to console event
 						GenerateConsoleCtrlEvent(CTRL_C_EVENT, 0);
@@ -375,13 +365,10 @@
 						DisplayErrorMessage();
 #endif
 					}
-				}
-
-				// Note that we keep trucking until the child process terminates (case WAIT_OBJECT_0 + 1)
+				} else
+				exitProc = TRUE;
 				break;
-			}
-
-			default:
+				default:
 				// Unexpected code
 #ifdef DEBUG_MONITOR
 				DisplayErrorMessage();
@@ -391,6 +378,7 @@
 			}
 
 		}
+		CloseHandle(pi.hProcess);
 	} else {
 #ifdef DEBUG_MONITOR
 		swprintf(buffer, _T("Cannot start: %s\n"), szCmdLine);
@@ -409,7 +397,6 @@
 	CloseHandle(h[0]);
 	CloseHandle(h[1]);
 	CloseHandle(h[2]);
-	CloseHandle(h[3]);
 
 	return(dwExitCode);
 }
Binary file cdt/cdt_6_0_x/org.eclipse.cdt.core.win32/os/win32/x86/spawner.dll has changed
Binary file cdt/cdt_6_0_x/org.eclipse.cdt.core.win32/os/win32/x86/starter.exe has changed
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/META-INF/MANIFEST.MF	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/META-INF/MANIFEST.MF	Wed Aug 05 17:35:39 2009 -0500
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.cdt.core; singleton:=true
-Bundle-Version: 5.2.0.qualifier
+Bundle-Version: 5.1.1.qualifier
 Bundle-Activator: org.eclipse.cdt.core.CCorePlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/util/CElementBaseLabels.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/util/CElementBaseLabels.java	Wed Aug 05 17:35:39 2009 -0500
@@ -33,7 +33,6 @@
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
 
 /**
  * Creates labels for ICElement objects.
@@ -759,14 +758,7 @@
 		if (rootQualified) {
 			buf.append(container.getPath().makeRelative().toString());
 		} else {
-			if (CCorePlugin.showSourceRootsAtTopOfProject()) {
-				buf.append(container.getElementName());
-			}
-			else {
-				String elementName = container.getElementName();
-				IPath path = new Path(elementName);
-				buf.append(path.lastSegment());
-			}
+			buf.append(container.getElementName());
 			if (getFlag(flags, ROOT_QUALIFIED)) {
 				if (resource != null && container instanceof ISourceRoot && isReferenced((ISourceRoot)container)) {
 					buf.append(CONCAT_STRING);
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/CLibraryFileEntry.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/CLibraryFileEntry.java	Wed Aug 05 17:35:39 2009 -0500
@@ -93,18 +93,6 @@
 	}
 
 	@Override
-	public int hashCode() {
-		final int prime = 31;
-		int result = super.hashCode();
-		result = prime * result + ((fSourceAttachmentPath == null) ? 0 : fSourceAttachmentPath.hashCode());
-		result = prime * result
-				+ ((fSourceAttachmentPrefixMapping == null) ? 0 : fSourceAttachmentPrefixMapping.hashCode());
-		result = prime * result
-				+ ((fSourceAttachmentRootPath == null) ? 0 : fSourceAttachmentRootPath.hashCode());
-		return result;
-	}
-
-	@Override
 	public boolean equals(Object other) {
 		if(other == this)
 			return true;
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/APathEntry.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/APathEntry.java	Wed Aug 05 17:35:39 2009 -0500
@@ -81,16 +81,6 @@
 	}
 
 	@Override
-	public int hashCode() {
-		final int prime = 31;
-		int result = super.hashCode();
-		result = prime * result + ((basePath == null) ? 0 : basePath.hashCode());
-		result = prime * result + ((baseRef == null) ? 0 : baseRef.hashCode());
-		result = prime * result + Arrays.hashCode(exclusionPatterns);
-		return result;
-	}
-
-	@Override
 	public boolean equals(Object obj) {
 		if (obj instanceof APathEntry) {
 			APathEntry otherEntry = (APathEntry)obj;
@@ -135,6 +125,16 @@
 		return super.equals(obj);
 	}
 	
+	@Override
+	public int hashCode() {
+		int hashCode = Arrays.hashCode(exclusionPatterns);
+		if (basePath != null)
+			hashCode += basePath.hashCode();
+		if (baseRef != null)
+			hashCode += baseRef.hashCode();
+		return hashCode + super.hashCode();
+	}
+
 	/* (non-Javadoc)
 	 * @see java.lang.Object#toString()
 	 */
@@ -150,5 +150,4 @@
 		}
 		return sb.toString();
 	}
-
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CElementDeltaBuilder.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CElementDeltaBuilder.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2002, 2008 IBM Corporation and others.
+ * Copyright (c) 2002, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeEntry.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeEntry.java	Wed Aug 05 17:35:39 2009 -0500
@@ -49,16 +49,6 @@
 		return isSystemInclude;
 	}
 
-@Override
-	public int hashCode() {
-		final int prime = 31;
-		int result = super.hashCode();
-		result = prime * result
-				+ ((includePath == null) ? 0 : includePath.hashCode());
-		result = prime * result + (isSystemInclude ? 1231 : 1237);
-		return result;
-	}
-
 	@Override
 	public boolean equals(Object obj) {
 		if (obj instanceof IIncludeEntry) {
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeFileEntry.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeFileEntry.java	Wed Aug 05 17:35:39 2009 -0500
@@ -41,16 +41,6 @@
 	}
 
 	@Override
-	public int hashCode() {
-		final int prime = 31;
-		int result = super.hashCode();
-		result = prime * result
-				+ ((includeFilePath == null) ? 0 : includeFilePath.hashCode());
-		return result;
-	}
-
-
-	@Override
 	public boolean equals(Object obj) {
 		if (obj instanceof IIncludeFileEntry) {
 			IIncludeFileEntry otherEntry = (IIncludeFileEntry) obj;
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryEntry.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryEntry.java	Wed Aug 05 17:35:39 2009 -0500
@@ -133,17 +133,6 @@
 		return super.equals(obj);
 	}
 
-	@Override
-	public int hashCode() {
-		final int prime = 31;
-		int result = super.hashCode();
-		result = prime * result + ((libraryPath == null) ? 0 : libraryPath.hashCode());
-		result = prime * result + ((sourceAttachmentPath == null) ? 0 : sourceAttachmentPath.hashCode());
-		result = prime * result
-				+ ((sourceAttachmentRootPath == null) ? 0 : sourceAttachmentRootPath.hashCode());
-		return result;
-	}
-
 	public IPath getFullLibraryPath() {
 		IPath p;
 		IPath lib = getLibraryPath();
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/MacroEntry.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/MacroEntry.java	Wed Aug 05 17:35:39 2009 -0500
@@ -45,17 +45,6 @@
 	}
 
 	@Override
-	public int hashCode() {
-		final int prime = 31;
-		int result = super.hashCode();
-		result = prime * result
-				+ ((macroName == null) ? 0 : macroName.hashCode());
-		result = prime * result
-				+ ((macroValue == null) ? 0 : macroValue.hashCode());
-		return result;
-	}
-
-	@Override
 	public boolean equals(Object obj) {
 		if (obj instanceof IMacroEntry) {
 			IMacroEntry otherEntry = (IMacroEntry)obj;
@@ -85,6 +74,11 @@
 		return super.equals(obj);
 	}
 	
+	@Override
+	public int hashCode() {
+		return macroName.hashCode() + macroValue.hashCode() + super.hashCode();
+	}
+
 	/* (non-Javadoc)
 	 * @see java.lang.Object#toString()
 	 */
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/MacroFileEntry.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/MacroFileEntry.java	Wed Aug 05 17:35:39 2009 -0500
@@ -40,15 +40,6 @@
 	}
 
 	@Override
-	public int hashCode() {
-		final int prime = 31;
-		int result = super.hashCode();
-		result = prime * result
-				+ ((macroFilePath == null) ? 0 : macroFilePath.hashCode());
-		return result;
-	}
-
-	@Override
 	public boolean equals(Object obj) {
 		if (obj instanceof IMacroFileEntry) {
 			IMacroFileEntry otherEntry = (IMacroFileEntry) obj;
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntry.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntry.java	Wed Aug 05 17:35:39 2009 -0500
@@ -73,12 +73,7 @@
 	
 	@Override
 	public int hashCode() {
-		final int prime = 31;
-		int result = 1;
-		result = prime * result + entryKind;
-		result = prime * result + (isExported ? 1231 : 1237);
-		result = prime * result + ((path == null) ? 0 : path.hashCode());
-		return result;
+		return path.hashCode() + entryKind * 17 + (isExported ? 3 : 2);
 	}
 
 	/**
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryUtil.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryUtil.java	Wed Aug 05 17:35:39 2009 -0500
@@ -12,12 +12,9 @@
 package org.eclipse.cdt.internal.core.model;
 
 import java.io.File;
-import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Set;
 
 import org.eclipse.cdt.core.CCorePlugin;
 import org.eclipse.cdt.core.model.CModelException;
@@ -338,17 +335,17 @@
 	public static ICModelStatus validatePathEntry(ICProject cProject, IPathEntry[] entries) {
 
 		// Check duplication.
-		Set<IPathEntry> entrySet = new HashSet<IPathEntry>(entries.length);
 		for (IPathEntry entry : entries) {
-			if (entry != null) {
-				if (entrySet.contains(entry)) {
-					return new CModelStatus(ICModelStatusConstants.INVALID_PATHENTRY, 
-							MessageFormat.format("{0}{1}", //$NON-NLS-1$
-									CCorePlugin.getResourceString("CoreModel.PathEntry.DuplicateEntry"), //$NON-NLS-1$
-									entry.getPath().toString()));
+			if (entry == null) {
+				continue;
+			}
+			for (IPathEntry otherEntry : entries) {
+				if (otherEntry == null) {
+					continue;
 				}
-				else {
-					entrySet.add(entry);
+				if (entry != otherEntry && otherEntry.equals(entry)) {
+					StringBuffer errMesg = new StringBuffer(CCorePlugin.getResourceString("CoreModel.PathEntry.DuplicateEntry")); //$NON-NLS-1$
+					return new CModelStatus(ICModelStatusConstants.INVALID_PATHENTRY, errMesg.toString());
 				}
 			}
 		}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1793,15 +1793,14 @@
 			newEntries = EMPTY_LANGUAGE_SETTINGS_ENTRIES_ARRAY;
 		}
 
-		Set<ICLanguageSettingEntry> newEntrySet = new HashSet<ICLanguageSettingEntry>(Arrays.asList(newEntries));
-		Set<ICLanguageSettingEntry> oldEntrySet = new HashSet<ICLanguageSettingEntry>(Arrays.asList(oldEntries));
-
 		// Check the removed entries.
-		for (ICLanguageSettingEntry oldEntry : oldEntries) {
+		for (int i = 0; i < oldEntries.length; i++) {
 			boolean found = false;
-			if (newEntrySet.contains(oldEntry)) {
-				found = true;
-				break;
+			for (int j = 0; j < newEntries.length; j++) {
+				if (oldEntries[i].equals(newEntries[j])) {
+					found = true;
+					break;
+				}
 			}
 			if(!found){
 				result[1] = true;
@@ -1810,11 +1809,13 @@
 		}
 
 		// Check the new entries.
-		for (ICLanguageSettingEntry newEntry : newEntries) {
+		for (int i = 0; i < newEntries.length; i++) {
 			boolean found = false;
-			if (oldEntrySet.contains(newEntry)) {
-				found = true;
-				break;
+			for (int j = 0; j < oldEntries.length; j++) {
+				if (newEntries[i].equals(oldEntries[j])) {
+					found = true;
+					break;
+				}
 			}
 			if(!found){
 				result[0] = true;
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/DescriptionScannerInfoProvider.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/DescriptionScannerInfoProvider.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 Intel Corporation and others.
+ * Copyright (c) 2007 Intel Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -33,7 +33,6 @@
 import org.eclipse.cdt.core.settings.model.ICProjectDescriptionListener;
 import org.eclipse.cdt.core.settings.model.ICResourceDescription;
 import org.eclipse.cdt.core.settings.model.ICSettingBase;
-import org.eclipse.cdt.core.settings.model.ICSettingEntry;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IWorkspaceRoot;
@@ -45,7 +44,7 @@
 	private IProject fProject;
 	private ICProjectDescription fProjDes;
 	private ICConfigurationDescription fCfgDes;
-	private Map<Object, IScannerInfo> fIdToLanguageSettingsMap = Collections.synchronizedMap(new HashMap<Object, IScannerInfo>());
+	private Map fIdToLanguageSettingsMap = Collections.synchronizedMap(new HashMap());
 	private String fCurrentFileDescriptionId;
 	private IScannerInfo fCurrentFileScannerInfo;
 	private static final ScannerInfo INEXISTENT_SCANNER_INFO = new ScannerInfo();
@@ -110,9 +109,9 @@
 		
 		IScannerInfo info;
 		if(useMap)
-			info = fIdToLanguageSettingsMap.get(mapKey);
+			info = (IScannerInfo)fIdToLanguageSettingsMap.get(mapKey);
 		else {
-			if(fCurrentFileScannerInfo != null && rcDes != null){
+			if(fCurrentFileScannerInfo != null){
 				if(rcDes.getId().equals(fCurrentFileDescriptionId))
 					info = fCurrentFileScannerInfo;
 				else {
@@ -128,7 +127,7 @@
 			info = createScannerInfo(ls);
 			if(useMap)
 				fIdToLanguageSettingsMap.put(mapKey, info);
-			else if (rcDes != null){
+			else {
 				fCurrentFileScannerInfo = info;
 				fCurrentFileDescriptionId = rcDes.getId();
 			}
@@ -145,7 +144,7 @@
 	}
 
 	private static ICMacroEntry[] getMacroEntries(ICLanguageSetting ls){
-		ICLanguageSettingEntry entries[] = ls.getResolvedSettingEntries(ICSettingEntry.MACRO);
+		ICLanguageSettingEntry entries[] = ls.getResolvedSettingEntries(ICLanguageSettingEntry.MACRO);
 		ICMacroEntry macroEntries[] = new ICMacroEntry[entries.length];
 		System.arraycopy(entries, 0, macroEntries, 0, entries.length);
 		
@@ -155,37 +154,37 @@
 	private IScannerInfo createProjectScannerInfo(){
 		ICFolderDescription foDes = fCfgDes.getRootFolderDescription();
 		ICLanguageSetting[] lSettings = foDes.getLanguageSettings();
-		ICLanguageSettingPathEntry pathEntries[] = getPathEntries(lSettings, ICSettingEntry.INCLUDE_PATH);
+		ICLanguageSettingPathEntry pathEntries[] = getPathEntries(lSettings, ICLanguageSettingEntry.INCLUDE_PATH);
 		String incs[] = getValues(pathEntries);
 		
-		pathEntries = getPathEntries(lSettings, ICSettingEntry.INCLUDE_FILE);
+		pathEntries = getPathEntries(lSettings, ICLanguageSettingEntry.INCLUDE_FILE);
 		String incFiles[] = getValues(pathEntries);
 
-		pathEntries = getPathEntries(lSettings, ICSettingEntry.MACRO_FILE);
+		pathEntries = getPathEntries(lSettings, ICLanguageSettingEntry.MACRO_FILE);
 		String macroFiles[] = getValues(pathEntries);
 		
 		ICMacroEntry macroEntries[] = getMacroEntries(lSettings);
-		Map<String, String> macrosMap = getValues(macroEntries);
+		Map macrosMap = getValues(macroEntries);
 		
 		return new ExtendedScannerInfo(macrosMap, incs, macroFiles, incFiles);
 	}
 	
 	
 	private ICMacroEntry[] getMacroEntries(ICLanguageSetting[] settings){
-		LinkedHashSet<ICLanguageSettingEntry> set = getEntriesSet(ICSettingEntry.MACRO, settings);
-		return set.toArray(new ICMacroEntry[set.size()]);
+		LinkedHashSet set = getEntriesSet(ICLanguageSettingEntry.MACRO, settings);
+		return (ICMacroEntry[])set.toArray(new ICMacroEntry[set.size()]);
 	}
 
 	private ICLanguageSettingPathEntry[] getPathEntries(ICLanguageSetting[] settings, int kind){
-		LinkedHashSet<ICLanguageSettingEntry> set = getEntriesSet(kind, settings);
-		return set.toArray(new ICLanguageSettingPathEntry[set.size()]);
+		LinkedHashSet set = getEntriesSet(kind, settings);
+		return (ICLanguageSettingPathEntry[])set.toArray(new ICLanguageSettingPathEntry[set.size()]);
 	}
 	
-	private LinkedHashSet<ICLanguageSettingEntry> getEntriesSet(int kind, ICLanguageSetting[] settings){
-		LinkedHashSet<ICLanguageSettingEntry> set = new LinkedHashSet<ICLanguageSettingEntry>();
+	private LinkedHashSet getEntriesSet(int kind, ICLanguageSetting[] settings){
+		LinkedHashSet set = new LinkedHashSet();
 		ICLanguageSettingEntry[] langEntries;
-		for (ICLanguageSetting setting : settings) {
-			langEntries = setting.getResolvedSettingEntries(kind);
+		for(int i = 0; i < settings.length; i++){
+			langEntries = settings[i].getResolvedSettingEntries(kind);
 			if(langEntries.length != 0){
 				set.addAll(Arrays.asList(langEntries));
 			}
@@ -197,29 +196,29 @@
 		if(ls == null)
 			return createProjectScannerInfo();
 		
-		ICLanguageSettingPathEntry pathEntries[] = getPathEntries(ls, ICSettingEntry.INCLUDE_PATH);
+		ICLanguageSettingPathEntry pathEntries[] = getPathEntries(ls, ICLanguageSettingEntry.INCLUDE_PATH);
 		String incs[] = getValues(pathEntries);
 		
-		pathEntries = getPathEntries(ls, ICSettingEntry.INCLUDE_FILE);
+		pathEntries = getPathEntries(ls, ICLanguageSettingEntry.INCLUDE_FILE);
 		String incFiles[] = getValues(pathEntries);
 
-		pathEntries = getPathEntries(ls, ICSettingEntry.MACRO_FILE);
+		pathEntries = getPathEntries(ls, ICLanguageSettingEntry.MACRO_FILE);
 		String macroFiles[] = getValues(pathEntries);
 		
 		ICMacroEntry macroEntries[] = getMacroEntries(ls);
-		Map<String, String> macrosMap = getValues(macroEntries);
+		Map macrosMap = getValues(macroEntries);
 		
 		return new ExtendedScannerInfo(macrosMap, incs, macroFiles, incFiles);
 	}
 
-	private Map<String, String> getValues(ICMacroEntry macroEntries[]){
-		Map<String, String> macrosMap = new HashMap<String, String>(macroEntries.length);
+	private Map getValues(ICMacroEntry macroEntries[]){
+		Map macrosMap = new HashMap(macroEntries.length);
 		String name;
 		String value;
 		
-		for (ICMacroEntry macroEntry : macroEntries) {
-			name = macroEntry.getName();
-			value = macroEntry.getValue();
+		for(int i = 0; i < macroEntries.length; i++){
+			name = macroEntries[i].getName();
+			value = macroEntries[i].getValue();
 			macrosMap.put(name, value);
 		}
 		return macrosMap;
@@ -229,13 +228,13 @@
 		String values[] = new String[pathEntries.length];
 		IPath path;
 		int num = 0;
-		for (ICLanguageSettingPathEntry pathEntry : pathEntries) {
-			String p = pathEntry.getValue();
+		for(int i = 0; i < pathEntries.length; i++){
+			String p = pathEntries[i].getValue();
 			if(p == null)
 				continue;
 			//TODO: obtain location from pathEntries when entries are resolved
-			path = new Path(p);//p.getLocation();
-			if(pathEntry.isValueWorkspacePath()){
+			path = new Path(p);//pathEntries[i].getLocation();
+			if(pathEntries[i].isValueWorkspacePath()){
 				IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
 				IResource rc = root.findMember(path);
 				if(rc != null){
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTNodeFactoryFactory.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Wind River Systems, Inc. and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Markus Schorn - initial API and implementation
- *******************************************************************************/ 
-package org.eclipse.cdt.core.dom.ast;
-
-import org.eclipse.cdt.core.dom.ast.c.ICNodeFactory;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPNodeFactory;
-import org.eclipse.cdt.internal.core.dom.parser.c.CNodeFactory;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory;
-
-/**
- * Provides access to the node factories.
- * 
- * @noextend This class is not intended to be subclassed by clients.
- * @noinstantiate This class is not intended to be instantiated by clients.
- * @since 5.2
- */
-public class ASTNodeFactoryFactory {
-
-	ASTNodeFactoryFactory() {}
-
-	public static ICNodeFactory getDefaultCNodeFactory() {
-		return CNodeFactory.getDefault();
-	}
-
-	public static ICPPNodeFactory getDefaultCPPNodeFactory() {
-		return CPPNodeFactory.getDefault();
-	}
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTTypeUtil.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTTypeUtil.java	Wed Aug 05 17:35:39 2009 -0500
@@ -13,10 +13,7 @@
 
 import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.TDEF;
 
-import java.util.ArrayList;
-import java.util.BitSet;
 import java.util.LinkedList;
-import java.util.List;
 
 import org.eclipse.cdt.core.dom.ast.c.ICArrayType;
 import org.eclipse.cdt.core.dom.ast.c.ICBasicType;
@@ -39,7 +36,6 @@
 import org.eclipse.cdt.core.parser.Keywords;
 import org.eclipse.cdt.core.parser.util.ArrayUtil;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
-import org.eclipse.cdt.internal.core.dom.parser.Value;
 import org.eclipse.cdt.internal.core.dom.parser.c.CASTTypeId;
 import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor;
 import org.eclipse.cdt.internal.core.dom.parser.c.ICInternalBinding;
@@ -59,6 +55,7 @@
 	private static final String COMMA_SPACE = ", "; //$NON-NLS-1$
 	private static final String EMPTY_STRING = ""; //$NON-NLS-1$
 	private static final String SPACE = " "; //$NON-NLS-1$
+	private static final String[] EMPTY_STRING_ARRAY = new String[0];
 	private static final int DEAULT_ITYPE_SIZE = 2;
 
 	/**
@@ -183,7 +180,13 @@
 	 * @see #getType(IType, boolean)
 	 */
 	public static String[] getParameterTypeStringArray(IFunctionType type) {
-		IType[] parms = type.getParameterTypes();
+		IType[] parms = null;
+		try {
+			parms = type.getParameterTypes();
+		} catch (DOMException e) {
+			return EMPTY_STRING_ARRAY;
+		}
+		
 		String[] result = new String[parms.length];
 		
 		for (int i = 0; i < parms.length; i++) {
@@ -203,23 +206,22 @@
 			result.append(Keywords.cpLBRACKET);
 			if (type instanceof ICArrayType) {
 				try {
-					final ICArrayType catype = (ICArrayType) type;
-					if (catype.isConst()) {
+					if (((ICArrayType) type).isConst()) {
 						result.append(Keywords.CONST); needSpace = true;
 					}
-					if (catype.isRestrict()) {
+					if (((ICArrayType) type).isRestrict()) {
 						if (needSpace) {
 							result.append(SPACE); needSpace = false;
 						}
 						result.append(Keywords.RESTRICT); needSpace = true;
 					}
-					if (catype.isStatic()) {
+					if (((ICArrayType) type).isStatic()) {
 						if (needSpace) {
 							result.append(SPACE); needSpace = false;
 						}
 						result.append(Keywords.STATIC); needSpace = true;
 					}
-					if (catype.isVolatile()) {
+					if (((ICArrayType) type).isVolatile()) {
 						if (needSpace) {
 							result.append(SPACE); needSpace = false;
 						}
@@ -227,23 +229,6 @@
 					}
 				} catch (DOMException e) {
 				}
-			} 
-			IValue val= ((IArrayType) type).getSize();
-			if (val != null && val != Value.UNKNOWN) {
-				if (normalize) {
-					if (needSpace) {
-						result.append(SPACE); needSpace = false;
-					}
-					result.append(val.getSignature());
-				} else {
-					Long v= val.numericalValue();
-					if (v != null) {
-						if (needSpace) {
-							result.append(SPACE); needSpace = false;
-						}
-						result.append(v.longValue());
-					}
-				}
 			}
 			result.append(Keywords.cpRBRACKET);
 		} else if (type instanceof IBasicType) {
@@ -394,13 +379,23 @@
 			result.append(SPACE);
 			result.append(getNameForAnonymous((IEnumeration) type));
 		} else if (type instanceof IFunctionType) {
-			String temp = getParameterTypeString((IFunctionType) type);
-			if (temp != null && !temp.equals(EMPTY_STRING)) {
-				result.append(temp); needSpace = false;
-			}
-			if (type instanceof ICPPFunctionType) {
-				ICPPFunctionType ft= (ICPPFunctionType) type;
-				needSpace= appendCVQ(result, needSpace, ft.isConst(), ft.isVolatile());
+			try {
+				String temp = getType(((IFunctionType) type).getReturnType(), normalize);
+				if (temp != null && !temp.equals(EMPTY_STRING)) {
+					result.append(temp); needSpace = true;
+				}
+				if (needSpace) {
+					result.append(SPACE); needSpace = false;
+				}
+				temp = getParameterTypeString((IFunctionType) type);
+				if (temp != null && !temp.equals(EMPTY_STRING)) {
+					result.append(temp); needSpace = false;
+				}
+				if (type instanceof ICPPFunctionType) {
+					ICPPFunctionType ft= (ICPPFunctionType) type;
+					needSpace= appendCVQ(result, needSpace, ft.isConst(), ft.isVolatile());
+				}
+			} catch (DOMException e) {
 			}
 		} else if (type instanceof IPointerType) {
 			if (type instanceof ICPPPointerToMemberType) {
@@ -515,67 +510,31 @@
 				}
 			}
 			if (type instanceof ITypeContainer) {
-				type = ((ITypeContainer) type).getType();
-			} else if (type instanceof IFunctionType) {
-				type= ((IFunctionType) type).getReturnType();
+				try {
+					type = ((ITypeContainer) type).getType();
+				} catch (DOMException e) {
+					type= null;
+				}
 			} else {
 				type= null;
 			}
 		}	 
 		
 		// pop all of the types off of the stack, and build the string representation while doing so
-		List<IType> postfix= null;
-		BitSet parenthesis= null;
-		boolean needParenthesis= false;
 		for (int j = types.length - 1; j >= 0; j--) {
-			IType tj = types[j];
-			if (tj != null) {
-				if (j > 0 && types[j - 1] instanceof IQualifierType) {
-					if (result.length() > 0)
-						result.append(SPACE); // only add a space if this is not the first type being added
-					result.append(getTypeString(types[j - 1], normalize));
-					result.append(SPACE);
-					result.append(getTypeString(tj, normalize));
-					--j;
-				} else {
-					// handle post-fix 
-					if (tj instanceof IFunctionType || tj instanceof IArrayType) {
-						if (j == 0) {
-							if (result.length() > 0)
-								result.append(SPACE); // only add a space if this is not the first type being added
-							result.append(getTypeString(tj, normalize));
-						} else {
-							if (postfix == null) {
-								postfix= new ArrayList<IType>();
-							}
-							postfix.add(tj);
-							needParenthesis= true;
-						}
-					} else {
-						if (result.length() > 0)
-							result.append(SPACE); // only add a space if this is not the first type being added
-						if (needParenthesis && postfix != null) {
-							result.append('(');
-							if (parenthesis == null) {
-								parenthesis= new BitSet();
-							}
-							parenthesis.set(postfix.size()-1);
-						}
-						result.append(getTypeString(tj, normalize));
-						needParenthesis= false;
-					}
-				}
-			}
-		}
+			if (types[j] != null && result.length() > 0)
+				result.append(SPACE); // only add a space if this is not the first type being added
 
-		if (postfix != null) {
-			for (int j = postfix.size() - 1; j >= 0; j--) {
-				if (parenthesis != null && parenthesis.get(j)) {
-					result.append(')');
-				}
-				IType tj = postfix.get(j);
-				result.append(getTypeString(tj, normalize));
-			}
+			if (types[j] != null) {
+                if (j > 0 && types[j - 1] instanceof IQualifierType) {
+                    result.append(getTypeString(types[j - 1], normalize));
+                    result.append(SPACE);
+                    result.append(getTypeString(types[j], normalize));
+                    --j;
+                } else {
+                    result.append(getTypeString(types[j], normalize));
+                }
+            }
 		}
 
 		return result.toString();
@@ -667,24 +626,54 @@
 	}
 	
 	/**
-	 * @deprecated don't use it does something strange
+	 * This can be used to invoke the IType's isConst() if it has an isConst() method.
+     * This returns the result of that invoked isConst() method.
+     * It is a convenience function so that the structure of IType does not need
+	 * to be known to determine if the IType is const or not.
+     *
+     * Note:  false is returned if no isConst() method is found
+     * 
+	 * @param type
 	 */
-	@Deprecated
 	public static boolean isConst(IType type) {
 		if (type instanceof IQualifierType) {
 			return ((IQualifierType) type).isConst();
 		} else if (type instanceof ITypeContainer) {
-			return isConst(((ITypeContainer) type).getType());
+			try {
+				return isConst(((ITypeContainer) type).getType());
+			} catch (DOMException e) {
+				return false;
+			}
 		} else if (type instanceof IArrayType) {
-			return isConst(((IArrayType) type).getType());
+			try {
+				return isConst(((IArrayType) type).getType());
+			} catch (DOMException e) {
+				return false;
+			}
 		} else if (type instanceof ICPPReferenceType) {
-			return isConst(((ICPPReferenceType) type).getType());
+			try {
+				return isConst(((ICPPReferenceType) type).getType());
+			} catch (DOMException e) {
+				return false;
+			}
 		} else if (type instanceof IFunctionType) {
-			return isConst(((IFunctionType) type).getReturnType());
+			try {
+				return isConst(((IFunctionType) type).getReturnType());
+			} catch (DOMException e) {
+				return false;
+			}
 		} else if (type instanceof IPointerType) {
-			return isConst(((IPointerType) type).getType());
+			try {
+				return isConst(((IPointerType) type).getType());
+			} catch (DOMException e) {
+				return false;
+			}
 		} else if (type instanceof ITypedef) {
-			return isConst(((ITypedef) type).getType());
+			try {
+				return isConst(((ITypedef) type).getType());
+			} catch (DOMException e) {
+				return false;
+			}
 		} else {
 			return false;
 		}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTTranslationUnit.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTTranslationUnit.java	Wed Aug 05 17:35:39 2009 -0500
@@ -271,7 +271,9 @@
 
 	/**
 	 * Returns the node factory that was used to build the AST.
-	 * @since 5.2
+	 * 
+	 * @noreference This method is not intended to be referenced by clients.
+	 * @since 5.1
 	 */
 	public INodeFactory getASTNodeFactory();
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IArrayType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IArrayType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -7,7 +7,6 @@
  *
  * Contributors:
  *     Andrew Niefer (IBM Corporation) - initial API and implementation
- *     Markus Schorn (Wind River Systems)
  *******************************************************************************/
 package org.eclipse.cdt.core.dom.ast;
 
@@ -18,14 +17,9 @@
 public interface IArrayType extends IType {
     /**
      * get the type that this is an array of
+     * @throws DOMException
      */
-    IType getType();
-    
-    /**
-     * Returns the value for the size of the array type, or <code>null</code> if it is unspecified.
-     * @since 5.2
-     */
-    IValue getSize();
+    IType getType() throws DOMException;
     
     /**
      * get the expression that represents the size of this array
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IFunctionType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IFunctionType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -18,12 +18,14 @@
 	
     /**
      * get the return type of this function type
+     * @throws DOMException
      */
-    public IType getReturnType();
+    public IType getReturnType() throws DOMException;
     
     /**
      * get the adjusted parameter types
      * ISO C99 6.7.5.3, ISO C++98 8.3.4-3 
+     * @throws DOMException
      */
-    public IType[] getParameterTypes();
+    public IType[] getParameterTypes() throws DOMException;
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/INodeFactory.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/INodeFactory.java	Wed Aug 05 17:35:39 2009 -0500
@@ -12,8 +12,6 @@
 
 import org.eclipse.cdt.core.dom.ast.IASTEnumerationSpecifier.IASTEnumerator;
 import org.eclipse.cdt.core.dom.ast.gnu.IGNUASTCompoundStatementExpression;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.core.parser.IToken;
 
 
 /**
@@ -48,18 +46,11 @@
 	public IASTName newName(char[] name);
 	
 	/**
-	 * @deprecated use {@link #newTranslationUnit(IScanner)}, instead.
+	 * Calling the method getASTNodeFactory() on the translation unit returned by this
+	 * method will return the node factory that was used to create the IASTTranslationUnit.
 	 */
-	@Deprecated
 	public IASTTranslationUnit newTranslationUnit();
-
-	/**
-	 * Creates a new translation unit that cooperates with the given scanner in order
-	 * to track macro-expansions and location information.
-	 * @param scanner the preprocessor the translation unit interacts with.
-	 * @since 5.2
-	 */
-	public IASTTranslationUnit newTranslationUnit(IScanner scanner);
+	
 
 	public IASTLiteralExpression newLiteralExpression(int kind, String rep);
 	
@@ -167,39 +158,4 @@
 	
 	public IASTCompositeTypeSpecifier newCompositeTypeSpecifier(int key, IASTName name);
 
-	/**
-	 * Provides the offsets for a node. The offsets are artificial numbers that identify the
-	 * position of a node in the translation unit. They are not file-offsets. You can obtain
-	 * valid offsets via {@link IToken#getOffset()} or {@link IToken#getEndOffset()} from tokens
-	 * provided by the scanner for this translation unit.
-	 * <par> May throw an exception when the node provided was not created by this factory.
-	 * @param node a node created by this factory
-	 * @param offset the offset (inclusive) for the node
-	 * @param endOffset the end offset (exclusive) for the node
-	 * @see #newTranslationUnit(IScanner)
-	 * @since 5.2
-	 */
-	public void setOffsets(IASTNode node, int offset, int endOffset);
-
-	/**
-	 * Provides the end offset for a node. The offset is an artificial numbers that identifies the
-	 * position of a node in the translation unit. It is not a file-offset. You can obtain a
-	 * valid offset via {@link IToken#getEndOffset()} from a token provided by the scanner for 
-	 * this translation unit.
-	 * <par> May throw an exception when the node provided was not created by this factory.
-	 * @param node a node created by this factory
-	 * @param endOffset the end offset (exclusive) for the node
-	 * @see #newTranslationUnit(IScanner)
-	 * @since 5.2
-	 */
-	void setEndOffset(IASTNode node, int endOffset);   
-	
-	/**
-	 * Adjusts the end-offset of a node to be the same as the end-offset of a given node.
-	 * <par> May throw an exception when either one of the nodes provided was not created by this factory.
-	 * @param node a node created by this factory
-	 * @param endNode a node created by this factory defining the end for the other node.
-	 * @since 5.2
-	 */
-	void setEndOffset(IASTNode node, IASTNode endNode);
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IPointerType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IPointerType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -17,8 +17,9 @@
 public interface IPointerType extends IType {
     /**
      * get the type that this is a pointer to
+     * @throws DOMException
      */
-    public IType getType();
+    public IType getType() throws DOMException;
     
     /**
      * is this a const pointer
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IQualifierType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IQualifierType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -30,6 +30,7 @@
     
     /** 
      * get the type that this is qualifying
+     * @throws DOMException
      */
-    public IType getType();
+    public IType getType() throws DOMException;
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ITypedef.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ITypedef.java	Wed Aug 05 17:35:39 2009 -0500
@@ -19,6 +19,6 @@
 	/**
 	 * Returns the type that this thing is a typedef of
 	 */
-	public IType getType();
+	public IType getType() throws DOMException;
 	
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPNodeFactory.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPNodeFactory.java	Wed Aug 05 17:35:39 2009 -0500
@@ -26,7 +26,6 @@
 import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTPointer;
 import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTPointerToMember;
 import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTSimpleDeclSpecifier;
-import org.eclipse.cdt.core.parser.IScanner;
 
 /**
  * Factory for AST nodes for the C++ programming language.
@@ -38,19 +37,7 @@
  */
 public interface ICPPNodeFactory extends INodeFactory {
 	
-	/**
-	 * @deprecated use {@link #newTranslationUnit(IScanner)}, instead.
-	 */
-	@Deprecated
 	public ICPPASTTranslationUnit newTranslationUnit();
-
-	/**
-	 * Creates a new translation unit that cooperates with the given scanner in order
-	 * to track macro-expansions and location information.
-	 * @scanner the preprocessor the translation unit interacts with.
-	 * @since 5.2
-	 */
-	public ICPPASTTranslationUnit newTranslationUnit(IScanner scanner);
 	
 	public ICPPASTLiteralExpression newLiteralExpression(int kind, String rep);
 	
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPReferenceType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPReferenceType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.cdt.core.dom.ast.cpp;
 
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IType;
 
 /**
@@ -20,6 +21,8 @@
 	
 	/**
 	 * get the type that this is a reference of
+	 * 
+	 * @throws DOMException
 	 */
-	public IType getType();
+	public IType getType() throws DOMException;
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/IIndexChangeEvent.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/IIndexChangeEvent.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 Wind River Systems, Inc. and others.
+ * Copyright (c) 2006, 2008 Wind River Systems, Inc. and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -51,10 +51,4 @@
 	 * <code>true</code>, the files of the set have been written after the index was cleared.
 	 */
 	public Set<IIndexFileLocation> getFilesWritten();
-
-	/**
-	 * Returns <code>true</code> when a new file had been added to the index.
-	 * @since 5.2
-	 */
-	public boolean hasNewFile();
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/ResourceContainerRelativeLocationConverter.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/ResourceContainerRelativeLocationConverter.java	Wed Aug 05 17:35:39 2009 -0500
@@ -7,15 +7,15 @@
  *
  * Contributors:
  * Andrew Ferguson (Symbian) - Initial implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.index;
+ *******************************************************************************/
+package org.eclipse.cdt.core.index;
 import org.eclipse.cdt.internal.core.index.IndexFileLocation;
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IWorkspaceRoot;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Path;
 /**
  * A location converter for converting project resource locations to be relative to a specified container.
  * Resources outside of the associated project will not be converted (ignored).
@@ -35,7 +35,7 @@
 	public ResourceContainerRelativeLocationConverter(IContainer container) {
 		this.fullPath = container.getFullPath();
 		this.root = ResourcesPlugin.getWorkspace().getRoot();
-	}
+	}
 	/*
 	 * (non-Javadoc)
 	 * @see org.eclipse.cdt.core.index.IIndexLocationConverter#fromInternalFormat(java.lang.String)
@@ -43,7 +43,7 @@
 	public IIndexFileLocation fromInternalFormat(String raw) {
 		IResource member= root.getFile(fullPath.append(raw)); 
 		return new IndexFileLocation(member.getLocationURI(), member.getFullPath().toString());
-	}
+	}
 	/*
 	 * (non-Javadoc)
 	 * @see org.eclipse.cdt.core.index.IIndexLocationConverter#toInternalFormat(org.eclipse.cdt.core.index.IIndexFileLocation)
@@ -58,4 +58,4 @@
 		}
 		return null;
 	}
-}
+}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IScannerInfo.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IScannerInfo.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2002, 2009 IBM Corporation and others.
+ * Copyright (c) 2002, 2008 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -30,15 +30,6 @@
 	/**
 	 * Returns an array of paths that are searched when processing an include directive.
 	 * see {@link IExtendedScannerInfo#getLocalIncludePath()}
-	 * <p>
-	 * In order to handle framework includes used on Apple Computers you can make use of
-	 * the two variables: '__framework__' and '__header__'. 
-	 * <br> E.g.:  /System/Library/Frameworks/__framework__.framework/Headers/__header__,
-	 * /System/Library/Frameworks/__framework__.framework/PrivateHeaders/__header__
-	 * would handle the framework search for '/System/Library/Frameworks'
-	 * <br> The variables are handled only, if a search path element makes use of both of the variables. 
-	 * The __framework__ variable will receive the first segment of the include, the __header__ variable
-	 * the rest. Such a search path element is not used for directives with a single segment (e.g. 'header.h')
 	 */
 	public String[] getIncludePaths();
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTEnumerator.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTEnumerator.java	Wed Aug 05 17:35:39 2009 -0500
@@ -123,7 +123,7 @@
 
 	private void createEnumValues(IASTEnumerationSpecifier parent) {
 		IASTEnumerator[] etors= parent.getEnumerators();
-		int cv= -1;
+		long cv= -1;
 		boolean isknown= true;
 		for (IASTEnumerator etor : etors) {
 			cv++;
@@ -134,7 +134,7 @@
 				isknown= false;
 				if (nv != null) {
 					isknown= true;
-					cv= nv.intValue();
+					cv= nv.longValue();
 				}
 			}
 			if (etor instanceof ASTEnumerator) {
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTQueries.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTQueries.java	Wed Aug 05 17:35:39 2009 -0500
@@ -19,7 +19,6 @@
 import org.eclipse.cdt.core.dom.ast.IASTFunctionDeclarator;
 import org.eclipse.cdt.core.dom.ast.IASTName;
 import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.core.parser.util.ArrayUtil;
 import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor;
@@ -137,12 +136,4 @@
 		}
 		return active;
 	}
-
-	public static boolean isSameType(IType type1, IType type2) {
-		if (type1 == type2)
-			return true;
-		if (type1 == null || type2 == null)
-			return false;
-		return type1.isSameType(type2);
-	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java	Wed Aug 05 17:35:39 2009 -0500
@@ -33,7 +33,6 @@
 import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
 import org.eclipse.cdt.core.dom.ast.IASTDefaultStatement;
 import org.eclipse.cdt.core.dom.ast.IASTDoStatement;
-import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
 import org.eclipse.cdt.core.dom.ast.IASTEnumerationSpecifier;
 import org.eclipse.cdt.core.dom.ast.IASTExpression;
 import org.eclipse.cdt.core.dom.ast.IASTExpressionList;
@@ -94,35 +93,21 @@
 			fDeclarator= d;
 		}
 	}
-	
-    protected static class Decl extends Exception {
-    	public Decl() {
-    	}
+    protected static class FoundDeclaratorException extends Exception {
+    	private static final long serialVersionUID = 0;
     	
-        public IASTDeclSpecifier fDeclSpec1;
-		public IASTDeclSpecifier fDeclSpec2;
-
-		public IASTDeclarator fDtor1;
-		public IASTDeclarator fDtor2;
-        public IToken fDtorToken1;
+        public IASTDeclSpecifier declSpec;
+        public IASTDeclarator declarator;
 
-        public Decl set(IASTDeclSpecifier declspec, IASTDeclarator dtor, IToken dtorToken) {
-        	fDeclSpec1= declspec;
-        	fDtor1= dtor;
-        	fDtorToken1= dtorToken;
-        	fDeclSpec2= null;
-        	fDtor2= null;
-			return this;
-		}
+		public IASTDeclSpecifier altSpec;
+		public IASTDeclarator altDeclarator;
+        
+        public IToken currToken;
 
-		public Decl set(IASTDeclSpecifier declspec1, IASTDeclarator dtor1, IASTDeclSpecifier declspec2,	IASTDeclarator dtor2) {
-			fDeclSpec1= declspec1;
-			fDtor1= dtor1;
-			fDtorToken1= null;
-			fDeclSpec2= declspec2;
-			fDtor2= dtor2;
-			return this;
-		}
+        public FoundDeclaratorException(IASTDeclarator d, IToken t) {
+            this.declarator = d;
+            this.currToken =t;
+        }
     }
     
 	private static final ASTVisitor MARK_INACTIVE = new ASTGenericVisitor(true) {
@@ -1399,9 +1384,36 @@
         return compoundStatement();
     }
 
-    protected abstract IASTDeclarator initDeclarator(IASTDeclSpecifier declSpec, DeclarationOptions option) 
+    protected abstract IASTDeclarator initDeclarator(DeclarationOptions option) 
     		throws EndOfFileException, BacktrackException, FoundAggregateInitializer;
 
+    /**
+     * @param option the options with which to parse the declaration
+     * @throws FoundDeclaratorException encountered EOF while looking ahead
+     * @throws FoundAggregateInitializer found aggregate initializer, needs special treatment
+     *   because of scalability.
+     */
+    protected void lookAheadForDeclarator(final DeclarationOptions option) 
+    		throws FoundDeclaratorException, FoundAggregateInitializer {
+        IToken mark = null;
+        try {
+            mark = mark();
+            final IASTDeclarator dtor= initDeclarator(option);
+            final IToken la = LA(1);
+            if (la == null || la == mark)
+            	return;
+
+            if (verifyLookaheadDeclarator(option, dtor, la))
+            	throw new FoundDeclaratorException(dtor, la);
+        } catch (BacktrackException bte) {
+        } catch (EndOfFileException e) {
+        } finally {
+        	if (mark != null)
+        		backup(mark);
+        }
+    }
+
+	protected abstract boolean verifyLookaheadDeclarator(DeclarationOptions option, IASTDeclarator d, IToken nextToken);
     
     /**
      * Parse an enumeration specifier, as according to the ANSI specs in C &
@@ -1518,98 +1530,7 @@
 
 
     protected abstract IASTDeclaration declaration(DeclarationOptions option) throws BacktrackException, EndOfFileException;
-    
-    /**
-     * Parses for two alternatives of a declspec sequence. If there is a second alternative the token after the second alternative
-     * is returned, such that the parser can continue after both variants.
-     */
-    protected abstract Decl declSpecifierSeq(DeclarationOptions option) throws BacktrackException, EndOfFileException;
-    
-    /**
-     * Parses for two alternatives of a declspec sequence followed by a initDeclarator. 
-     * A second alternative is accepted only, if it ends at the same point of the first alternative. Otherwise the
-     * longer alternative is selected.
-     */
-    protected Decl declSpecifierSequence_initDeclarator(final DeclarationOptions option, boolean acceptCompoundWithoutDtor) throws EndOfFileException, FoundAggregateInitializer, BacktrackException {
-    	Decl result= declSpecifierSeq(option);
-
-		final int lt1 = LTcatchEOF(1);
-		if (lt1 == IToken.tEOC)
-			return result;
-		
-    	// support simple declarations without declarators
-    	final boolean acceptEmpty = acceptCompoundWithoutDtor && specifiesCompound(result.fDeclSpec1);
-		if (acceptEmpty) {
-			switch(lt1) {
-			case 0:
-			case IToken.tEOC:
-			case IToken.tSEMI:
-				return result;
-			}
-		}
-		
-		final IToken dtorMark1= mark();
-		final IToken dtorMark2= result.fDtorToken1;
-		final IASTDeclSpecifier declspec1= result.fDeclSpec1;
-		final IASTDeclSpecifier declspec2= result.fDeclSpec2;
-		IASTDeclarator dtor1, dtor2;
-		try {
-			// declarator for first variant
-			dtor1= initDeclarator(declspec1, option);
-    	} catch (FoundAggregateInitializer e) {
-    		e.fDeclSpec= declspec1;
-    		throw e;
-		} catch (BacktrackException e) {
-			if (acceptEmpty) {
-				backup(dtorMark1);
-				return result.set(declspec1, null, null);
-			}
-
-			// try second variant, if possible
-			if (dtorMark2 == null)
-				throw e;
-
-			backup(dtorMark2);
-			dtor2= initDeclarator(declspec2, option);
-			return result.set(declspec2, dtor2, dtorMark2);
-		}
-    	
-    	// first variant was a success. If possible, try second one.
-		if (dtorMark2 == null) {
-			return result.set(declspec1, dtor1, dtorMark1);
-		}
-
-		final IToken end1= mark();
-    	backup(dtorMark2);
-    	try {
-    		dtor2= initDeclarator(declspec2, option);
-    	} catch (BacktrackException e) {
-    		backup(end1);
-    		return result.set(declspec1, dtor1, dtorMark1);
-    	}
-    	
-    	final IToken end2= mark();
-    	if (end1 == end2) {
-			return result.set(declspec1, dtor1, declspec2, dtor2);
-		}
-		if (end1.getEndOffset() > end2.getEndOffset()) {
-    		backup(end1);
-    		return result.set(declspec1, dtor1, dtorMark1);
-		}
-		
-		return result.set(declspec2, dtor2, dtorMark2);
-    }
-    
-	protected boolean specifiesCompound(IASTDeclSpecifier declSpec) {
-		if (declSpec instanceof IASTCompositeTypeSpecifier)
-			return true;
-		if (declSpec instanceof IASTElaboratedTypeSpecifier)
-			return true;
-		if (declSpec instanceof IASTEnumerationSpecifier)
-			return true;
-		
-		return false;
-	}
+    protected abstract IASTDeclSpecifier declSpecifierSeq(DeclarationOptions option) throws BacktrackException, EndOfFileException, FoundDeclaratorException, FoundAggregateInitializer;
 
     protected IASTDeclaration[] problemDeclaration(int offset, BacktrackException bt, DeclarationOptions option) {
     	failParse();
@@ -1693,15 +1614,25 @@
 
 	
 	protected IASTDeclaration functionStyleAsmDeclaration() throws BacktrackException, EndOfFileException {
+
 		final int offset= LA(1).getOffset();
-		IASTDeclSpecifier declSpec;
+		IASTDeclSpecifier declSpec= null;
 		IASTDeclarator dtor;
     	try {
-    		Decl decl= declSpecifierSequence_initDeclarator(DeclarationOptions.FUNCTION_STYLE_ASM, false);
-    		declSpec= decl.fDeclSpec1;
-    		dtor= decl.fDtor1;
-    	} catch (FoundAggregateInitializer lie) {
-    		declSpec= lie.fDeclSpec;
+			declSpec = declSpecifierSeq(DeclarationOptions.FUNCTION_STYLE_ASM);
+    		dtor = initDeclarator(DeclarationOptions.FUNCTION_STYLE_ASM);
+    	} catch (FoundDeclaratorException e) {
+        	if (e.altSpec != null) {
+        		declSpec= e.altSpec;
+        		dtor= e.altDeclarator;
+        	} else {
+        		declSpec = e.declSpec;
+        		dtor= e.declarator;
+        	}
+            backup( e.currToken );
+        } catch (FoundAggregateInitializer lie) {
+        	if (declSpec == null)
+        		declSpec= lie.fDeclSpec;
         	dtor= addInitializer(lie, DeclarationOptions.FUNCTION_STYLE_ASM);
     	}
 
@@ -1709,7 +1640,7 @@
     		throwBacktrack(LA(1));
 
     	final IASTDeclarator fdtor= ASTQueries.findTypeRelevantDeclarator(dtor);
-    	if (!(fdtor instanceof IASTFunctionDeclarator))
+    	if (dtor instanceof IASTFunctionDeclarator == false)
     		throwBacktrack(offset, LA(1).getEndOffset() - offset);
 
     	final int compoundOffset= LA(1).getOffset();
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/DeclarationOptions.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/DeclarationOptions.java	Wed Aug 05 17:35:39 2009 -0500
@@ -27,7 +27,7 @@
 
     public static final DeclarationOptions 
     	GLOBAL=     new DeclarationOptions(ALLOW_EMPTY_SPECIFIER | ALLOW_CONSTRUCTOR_INITIALIZER),
-    	FUNCTION_STYLE_ASM= new DeclarationOptions(ALLOW_EMPTY_SPECIFIER | NO_INITIALIZER | ALLOW_ABSTRACT),
+    	FUNCTION_STYLE_ASM= new DeclarationOptions(ALLOW_EMPTY_SPECIFIER | NO_INITIALIZER),
     	C_MEMBER=   new DeclarationOptions(ALLOW_BITFIELD | ALLOW_ABSTRACT),
     	CPP_MEMBER= new DeclarationOptions(ALLOW_EMPTY_SPECIFIER | ALLOW_BITFIELD),
     	LOCAL=	    new DeclarationOptions(ALLOW_CONSTRUCTOR_INITIALIZER),
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ITypeContainer.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ITypeContainer.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,29 +1,36 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2008 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *     Andrew Niefer (IBM Corporation) - initial API and implementation
- *     Markus Schorn (Wind River Systems)
+ *     IBM Corporation - initial API and implementation
  *******************************************************************************/
+
+/*
+ * Created on Dec 13, 2004
+ */
 package org.eclipse.cdt.internal.core.dom.parser;
 
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IType;
 
 /**
  * Internal interface representing types that contain other types
+ * @author aniefer
  */
 public interface ITypeContainer extends IType {
     /**
      * get the type this contains
+     * @throws DOMException
      */
-    IType getType();
+    IType getType() throws DOMException;
 
     /**
      * set the type this contains
+     * @param type
      */
     void setType(IType type);
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/NodeFactory.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Wind River Systems, Inc. and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Markus Schorn - initial API and implementation
- *******************************************************************************/ 
-package org.eclipse.cdt.internal.core.dom.parser;
-
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.INodeFactory;
-
-/**
- * Abstract base class for node factories.
- */
-public abstract class NodeFactory implements INodeFactory {
-
-	public final void setOffsets(IASTNode node, int offset, int endOffset) {
-		((ASTNode) node).setOffsetAndLength(offset, endOffset-offset);
-	}
-
-	public final void setEndOffset(IASTNode node, int endOffset) {
-		ASTNode a= (ASTNode) node;
-		a.setLength(endOffset - a.getOffset());
-	}
-
-	public final void setEndOffset(IASTNode node, IASTNode endNode) {
-		ASTNode a= (ASTNode) node;
-		ASTNode e= (ASTNode) endNode;
-		a.setLength(e.getOffset() + e.getLength() - a.getOffset());
-	}
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ProblemBinding.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ProblemBinding.java	Wed Aug 05 17:35:39 2009 -0500
@@ -41,7 +41,7 @@
     protected char[] arg;
     protected IASTNode node;
     private final String message = null;
-	private IBinding[] candidateBindings;
+	private final IBinding[] candidateBindings;
     
     public ProblemBinding(IASTName name, int id) {
     	this(name, id, null, null);
@@ -73,10 +73,6 @@
 	public IBinding[] getCandidateBindings() {
 		return candidateBindings != null ? candidateBindings : IBinding.EMPTY_BINDING_ARRAY;
 	}
-	
-	public void setCandidateBindings(IBinding[] foundBindings) {
-		candidateBindings= foundBindings;
-	}
 
     protected static final String[] errorMessages;
     static {
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/Value.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/Value.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Wind River Systems, Inc. and others.
+ * Copyright (c) 2008 Wind River Systems, Inc. and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -45,7 +45,6 @@
 public class Value implements IValue {
 	public static final int MAX_RECURSION_DEPTH = 25;
 	public final static IValue UNKNOWN= new Value("<unknown>".toCharArray(), ICPPUnknownBinding.EMPTY_UNKNOWN_BINDING_ARRAY); //$NON-NLS-1$
-	public final static IValue NOT_INITIALIZED= new Value("<__>".toCharArray(), ICPPUnknownBinding.EMPTY_UNKNOWN_BINDING_ARRAY); //$NON-NLS-1$
 	
 	private static final String SCOPE_OP = "::"; //$NON-NLS-1$
 	private static final char UNIQUE_CHAR = '_';
@@ -226,8 +225,8 @@
 	 */
 	public static boolean referencesTemplateParameter(IValue tval) {
 		final char[] rep= tval.getInternalExpression();
-		for (char element : rep) {
-			if (element == TEMPLATE_PARAM_CHAR)
+		for (int i = 0; i < rep.length; i++) {
+			if (rep[i] == TEMPLATE_PARAM_CHAR)
 				return true;
 		}
 		return false;
@@ -238,7 +237,8 @@
 	 */
 	public static boolean isDependentValue(IValue nonTypeValue) {
 		final char[] rep= nonTypeValue.getInternalExpression();
-		for (final char c : rep) {
+		for (int i = 0; i < rep.length; i++) {
+			final char c = rep[i];
 			if (c == REFERENCE_CHAR || c == TEMPLATE_PARAM_CHAR)
 				return true;
 		}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/VariableReadWriteFlags.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/VariableReadWriteFlags.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 Wind River Systems, Inc. and others.
+ * Copyright (c) 2007 Wind River Systems, Inc. and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -162,16 +162,20 @@
 	}
 
 	protected int rwArgumentForFunctionCall(final IASTFunctionCallExpression func, int parameterIdx, int indirection) {
-		final IASTExpression functionNameExpression = func.getFunctionNameExpression();
-		if (functionNameExpression != null) {
-			final IType type= functionNameExpression.getExpressionType();
-			if (type instanceof IFunctionType) {
-				IType[] ptypes= ((IFunctionType) type).getParameterTypes();
-				if (ptypes != null && ptypes.length > parameterIdx) {
-					return rwAssignmentToType(ptypes[parameterIdx], indirection);
+		try {
+			final IASTExpression functionNameExpression = func.getFunctionNameExpression();
+			if (functionNameExpression != null) {
+				final IType type= functionNameExpression.getExpressionType();
+				if (type instanceof IFunctionType) {
+					IType[] ptypes= ((IFunctionType) type).getParameterTypes();
+					if (ptypes != null && ptypes.length > parameterIdx) {
+						return rwAssignmentToType(ptypes[parameterIdx], indirection);
+					}
 				}
 			}
 		}
+		catch (DOMException e) {
+		}
 		return READ | WRITE; // fallback
 	}
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArraySubscriptExpression.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArraySubscriptExpression.java	Wed Aug 05 17:35:39 2009 -0500
@@ -13,6 +13,7 @@
 package org.eclipse.cdt.internal.core.dom.parser.c;
 
 import org.eclipse.cdt.core.dom.ast.ASTVisitor;
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IASTArraySubscriptExpression;
 import org.eclipse.cdt.core.dom.ast.IASTExpression;
 import org.eclipse.cdt.core.dom.ast.IASTNode;
@@ -113,10 +114,14 @@
     
     public IType getExpressionType() {
 		IType t = getArrayExpression().getExpressionType();
-		if (t instanceof IPointerType)
-			return ((IPointerType)t).getType();
-		else if (t instanceof IArrayType)
-			return ((IArrayType)t).getType();
+		try {
+			if (t instanceof IPointerType)
+				return ((IPointerType)t).getType();
+			else if (t instanceof IArrayType)
+				return ((IArrayType)t).getType();
+		} catch (DOMException e) {
+			return e.getProblem();
+		}
 		return t;
     }
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFunctionCallExpression.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFunctionCallExpression.java	Wed Aug 05 17:35:39 2009 -0500
@@ -13,6 +13,7 @@
 package org.eclipse.cdt.internal.core.dom.parser.c;
 
 import org.eclipse.cdt.core.dom.ast.ASTVisitor;
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IASTExpression;
 import org.eclipse.cdt.core.dom.ast.IASTFunctionCallExpression;
 import org.eclipse.cdt.core.dom.ast.IASTNode;
@@ -114,10 +115,14 @@
 
 	public IType getExpressionType() {
 		IType type = getFunctionNameExpression().getExpressionType();
-		while (type instanceof ITypeContainer)
-			type = ((ITypeContainer) type).getType();
-		if (type instanceof IFunctionType)
-			return ((IFunctionType) type).getReturnType();
+		try {
+			while (type instanceof ITypeContainer)
+				type = ((ITypeContainer) type).getType();
+			if (type instanceof IFunctionType)
+				return ((IFunctionType) type).getReturnType();
+		} catch (DOMException e) {
+			return e.getProblem();
+		}
 		return null;
 	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTUnaryExpression.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTUnaryExpression.java	Wed Aug 05 17:35:39 2009 -0500
@@ -13,6 +13,7 @@
 package org.eclipse.cdt.internal.core.dom.parser.c;
 
 import org.eclipse.cdt.core.dom.ast.ASTVisitor;
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IASTExpression;
 import org.eclipse.cdt.core.dom.ast.IASTNode;
 import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
@@ -101,10 +102,14 @@
 	public IType getExpressionType() {
 		IType type = getOperand().getExpressionType();
 		int op = getOperator();
-		if (op == IASTUnaryExpression.op_star && (type instanceof IPointerType || type instanceof IArrayType)) {
-			return ((ITypeContainer) type).getType();
-		} else if (op == IASTUnaryExpression.op_amper) {
-			return new CPointerType(type, 0);
+		try {
+			if (op == IASTUnaryExpression.op_star && (type instanceof IPointerType || type instanceof IArrayType)) {
+				return ((ITypeContainer) type).getType();
+			} else if (op == IASTUnaryExpression.op_amper) {
+				return new CPointerType(type, 0);
+			}
+		} catch (DOMException e) {
+			return e.getProblem();
 		}
 		return type;
 	}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CArrayType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CArrayType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -6,7 +6,7 @@
  *  http://www.eclipse.org/legal/epl-v10.html
  * 
  *  Contributors:
- *     Devin Steffler (IBM Corporation) - initial API and implementation
+ *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.dom.parser.c;
 
@@ -16,14 +16,14 @@
 import org.eclipse.cdt.core.dom.ast.IArrayType;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.core.dom.ast.ITypedef;
-import org.eclipse.cdt.core.dom.ast.IValue;
 import org.eclipse.cdt.core.dom.ast.c.ICASTArrayModifier;
 import org.eclipse.cdt.core.dom.ast.c.ICArrayType;
-import org.eclipse.cdt.core.parser.util.CharArrayUtils;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
-import org.eclipse.cdt.internal.core.dom.parser.Value;
 import org.eclipse.cdt.internal.core.index.IIndexType;
 
+/**
+ * @author dsteffle
+ */
 public class CArrayType implements ICArrayType, ITypeContainer {
 	IType type;
 	ICASTArrayModifier mod;
@@ -35,7 +35,7 @@
     public boolean isSameType(IType obj) {
         if (obj == this)
             return true;
-        if (obj instanceof ITypedef || obj instanceof IIndexType)
+        if (obj instanceof ITypedef)
             return obj.isSameType(this);
         if (obj instanceof ICArrayType) {
         	ICArrayType at = (ICArrayType) obj;
@@ -46,24 +46,18 @@
         		if (isVolatile() != at.isVolatile()) return false;
         		if (isVariableLength() != at.isVariableLength()) return false;
 
-        		return at.getType().isSameType(type) && hasSameSize(at);
+        		return at.getType().isSameType(type);
         	} catch (DOMException e) {
         		return false;
         	}
         }
+        // Workaround for bug 182976, no PDOMCArrayType.
+        else if (obj instanceof IArrayType && obj instanceof IIndexType) {
+        	return obj.isSameType(this);
+        }
     	return false;
     }
     
-	private boolean hasSameSize(IArrayType rhs) {
-		IValue s1 = getSize();
-		IValue s2 = rhs.getSize();
-		if (s1 == s2)
-			return true;
-		if (s1 == null || s2 == null)
-			return false;
-		return CharArrayUtils.equals(s1.getSignature(), s2.getSignature());
-	}
-
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.core.dom.ast.IArrayType#getType()
 	 */
@@ -123,17 +117,9 @@
         return mod;
     }
 
-    public IValue getSize() {
-    	if (mod != null) {
-    		IASTExpression sizeExpression = mod.getConstantExpression();
-    		if (sizeExpression != null) {
-    			return Value.create(sizeExpression, Value.MAX_RECURSION_DEPTH);
-    		}
-    	}
-    	return null;
-    }
-
-	@Deprecated
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.dom.ast.IArrayType#getArraySizeExpression()
+     */
     public IASTExpression getArraySizeExpression() {
         if (mod != null)
             return mod.getConstantExpression();
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CFunctionType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CFunctionType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,19 +1,23 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2008 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *     Devin Steffler (IBM Corporation) - initial API and implementation
+ *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.dom.parser.c;
 
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IFunctionType;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.core.dom.ast.ITypedef;
 
+/**
+ * @author dsteffle
+ */
 public class CFunctionType implements IFunctionType {
     IType[] parameters = null;
     IType returnType = null;
@@ -35,11 +39,19 @@
         if( o instanceof IFunctionType ){
             IFunctionType ft = (IFunctionType) o;
             IType [] fps;
-            fps = ft.getParameterTypes();
+            try {
+                fps = ft.getParameterTypes();
+            } catch ( DOMException e ) {
+                return false;
+            }
             if( fps.length != parameters.length )
                 return false;
-            if( ! returnType.isSameType( ft.getReturnType() ) )
-			    return false;
+            try {
+                if( ! returnType.isSameType( ft.getReturnType() ) )
+                    return false;
+            } catch ( DOMException e1 ) {
+                return false;
+            }
             for( int i = 0; i < parameters.length; i++ )
                 if( ! parameters[i].isSameType( fps[i] ) )
                     return false;
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CNodeFactory.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CNodeFactory.java	Wed Aug 05 17:35:39 2009 -0500
@@ -6,8 +6,7 @@
  *  http://www.eclipse.org/legal/epl-v10.html
  * 
  *  Contributors:
- *     Mike Kucera (IBM Corporation) - initial API and implementation
- *     Markus Schorn (Wind River Systems)
+ *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.dom.parser.c;
 
@@ -78,15 +77,15 @@
 import org.eclipse.cdt.core.dom.ast.gnu.c.ICASTKnRFunctionDeclarator;
 import org.eclipse.cdt.core.dom.ast.gnu.c.IGCCASTArrayRangeDesignator;
 import org.eclipse.cdt.core.dom.ast.gnu.c.IGCCASTSimpleDeclSpecifier;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.internal.core.dom.parser.NodeFactory;
 
 /**
  * Abstract factory implementation that creates AST nodes for C99.
  * These can be overridden in subclasses to change the 
  * implementations of the nodes.
+ * 
+ * @author Mike Kucera
  */
-public class CNodeFactory extends NodeFactory implements ICNodeFactory {
+public class CNodeFactory implements ICNodeFactory {
 
 	private static final CNodeFactory DEFAULT_INSTANCE = new CNodeFactory();
 	
@@ -94,16 +93,9 @@
 		return DEFAULT_INSTANCE;
 	}
 	
+	
 	public IASTTranslationUnit newTranslationUnit() {
-		return newTranslationUnit(null);
-	}
-	
-	public IASTTranslationUnit newTranslationUnit(IScanner scanner) {
 		CASTTranslationUnit tu = new CASTTranslationUnit();
-		
-		if (scanner != null) {
-			tu.setLocationResolver(scanner.getLocationResolver());
-		}
 		tu.setASTNodeFactory(this);
 		return tu;
 	}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CPointerType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CPointerType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,20 +1,24 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2008 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *    Devin Steffler (IBM Rational Software) - Initial API and implementation 
+ * IBM Rational Software - Initial API and implementation 
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.dom.parser.c;
 
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.core.dom.ast.ITypedef;
 import org.eclipse.cdt.core.dom.ast.c.ICPointerType;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
 
+/**
+ * @author dsteffle
+ */
 public class CPointerType implements ICPointerType, ITypeContainer {
 	static public final int IS_CONST       = 1;
 	static public final int IS_RESTRICT    = 1 << 1;
@@ -38,11 +42,15 @@
 	    
 	    if( obj instanceof ICPointerType ){
 	        ICPointerType pt = (ICPointerType) obj;
-            if( isConst() != pt.isConst() ) return false;
-			if( isRestrict() != pt.isRestrict() ) return false;
-			if( isVolatile() != pt.isVolatile() ) return false;
-         
-			return pt.getType().isSameType( nextType );
+            try {
+		        if( isConst() != pt.isConst() ) return false;
+		        if( isRestrict() != pt.isRestrict() ) return false;
+		        if( isVolatile() != pt.isVolatile() ) return false;
+            
+                return pt.getType().isSameType( nextType );
+            } catch ( DOMException e ) {
+                return false;
+            }
         }
     	return false;
 	}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CQualifierType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CQualifierType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,15 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2008 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *    Devin Steffler (IBM Rational Software) - Initial API and implementation 
+ * IBM Rational Software - Initial API and implementation 
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.dom.parser.c;
 
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
 import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
 import org.eclipse.cdt.core.dom.ast.IASTEnumerationSpecifier;
@@ -21,6 +22,9 @@
 import org.eclipse.cdt.core.dom.ast.c.ICQualifierType;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
 
+/**
+ * @author dsteffle
+ */
 public class CQualifierType implements ICQualifierType, ITypeContainer {
 
 	private boolean isConst;
@@ -53,13 +57,17 @@
 	    
 	    if( obj instanceof ICQualifierType ){
 	        ICQualifierType qt = (ICQualifierType) obj;
-            if( isConst() != qt.isConst() ) return false;
-			if( isRestrict() != qt.isRestrict() ) return false;
-			if( isVolatile() != qt.isVolatile() ) return false;
-         
-			if( type == null )
-				return false;
-			return type.isSameType( qt.getType() );
+            try {
+		        if( isConst() != qt.isConst() ) return false;
+		        if( isRestrict() != qt.isRestrict() ) return false;
+		        if( isVolatile() != qt.isVolatile() ) return false;
+            
+		        if( type == null )
+		        	return false;
+                return type.isSameType( qt.getType() );
+            } catch ( DOMException e ) {
+                return false;
+            }
         }
     	return false;
 	}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CTypedef.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CTypedef.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2008 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -86,12 +86,15 @@
     public boolean isSameType( IType t ) {
         if( t == this )
             return true;
-	    if( t instanceof ITypedef ) {
-			IType temp = getType();
-			if( temp != null )
-			    return temp.isSameType( ((ITypedef)t).getType());
-			return false;
-		}
+	    if( t instanceof ITypedef )
+            try {
+                IType temp = getType();
+                if( temp != null )
+                    return temp.isSameType( ((ITypedef)t).getType());
+                return false;
+            } catch ( DOMException e ) {
+                return false;
+            }
 	        
 	    IType temp = getType();
 	    if( temp != null )
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVariableReadWriteFlags.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVariableReadWriteFlags.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 Wind River Systems, Inc. and others.
+ * Copyright (c) 2007 Wind River Systems, Inc. and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,6 +10,7 @@
  *******************************************************************************/ 
 package org.eclipse.cdt.internal.core.dom.parser.c;
 
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IASTExpression;
 import org.eclipse.cdt.core.dom.ast.IASTExpressionList;
 import org.eclipse.cdt.core.dom.ast.IASTFunctionCallExpression;
@@ -81,17 +82,21 @@
 		if (indirection == 0) {
 			return READ;
 		}
-		while(indirection > 0 && (type instanceof IPointerType)) {
-			type= ((IPointerType) type).getType();
-			indirection--;
+		try {
+			while(indirection > 0 && (type instanceof IPointerType)) {
+				type= ((IPointerType) type).getType();
+				indirection--;
+			}
+			if (indirection == 0) {
+				if (type instanceof IQualifierType) {
+					return ((IQualifierType) type).isConst() ? READ : READ | WRITE;
+				}
+				else if (type instanceof IPointerType) {
+					return ((IPointerType) type).isConst() ? READ : READ | WRITE;
+				}
+			}
 		}
-		if (indirection == 0) {
-			if (type instanceof IQualifierType) {
-				return ((IQualifierType) type).isConst() ? READ : READ | WRITE;
-			}
-			else if (type instanceof IPointerType) {
-				return ((IPointerType) type).isConst() ? READ : READ | WRITE;
-			}
+		catch (DOMException e) {
 		}
 		return READ | WRITE;	// fallback
 	}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java	Wed Aug 05 17:35:39 2009 -0500
@@ -603,7 +603,11 @@
 		
 		IType type = fieldOwner.getExpressionType();
 	    while (type != null && type instanceof ITypeContainer) {
-    		type = ((ITypeContainer)type).getType();
+    		try {
+                type = ((ITypeContainer)type).getType();
+            } catch (DOMException e) {
+                return e.getProblem();
+            }
 	    }
 		
 		if (type != null && type instanceof ICompositeType) {
@@ -922,10 +926,14 @@
                         }
 					} else if (struct instanceof ITypeContainer) {
 						IType type;
-                        type = ((ITypeContainer)struct).getType();
-						while (type instanceof ITypeContainer && !(type instanceof CStructure)) {
-							type = ((ITypeContainer)type).getType();
-						}
+                        try {
+                            type = ((ITypeContainer)struct).getType();
+                            while (type instanceof ITypeContainer && !(type instanceof CStructure)) {
+    							type = ((ITypeContainer)type).getType();
+    						}
+                        } catch (DOMException e) {
+                            return e.getProblem();
+                        }
                         
 						
 						if (type instanceof CStructure)
@@ -1277,25 +1285,29 @@
         	IType paramType = type;
         	// Remove typedefs ready for subsequent processing.
         	while (paramType instanceof ITypedef) {
-        		paramType = ((ITypedef)paramType).getType();
+        		try {
+					paramType = ((ITypedef)paramType).getType();
+				} catch (DOMException e) {
+					paramType= null;
+				}
         	}
         	        	
             //C99: 6.7.5.3-7 a declaration of a parameter as "array of type" shall be adjusted to "qualified pointer to type", where the
     		//type qualifiers (if any) are those specified within the[and] of the array type derivation
             if (paramType instanceof IArrayType) { // the index does not yet return ICArrayTypes
 	            IArrayType at = (IArrayType) paramType;
-				int q= 0;
-				if (at instanceof ICArrayType) {
-					ICArrayType cat= (ICArrayType) at;
-					try {
+				try {
+					int q= 0;
+					if (at instanceof ICArrayType) {
+						ICArrayType cat= (ICArrayType) at;
 						if (cat.isConst()) q |= CPointerType.IS_CONST;
 						if (cat.isVolatile()) q |= CPointerType.IS_VOLATILE;
 						if (cat.isRestrict()) q |= CPointerType.IS_RESTRICT;
-					} catch (DOMException e) {
-						// ignore the qualifiers
 					}
+					type = new CPointerType(at.getType(), q);
+				} catch (DOMException e) {
+					// ignore the qualifiers
 				}
-				type = new CPointerType(at.getType(), q);
 	        } else if (paramType instanceof IFunctionType) {
 	            //-8 A declaration of a parameter as "function returning type" shall be adjusted to "pointer to function returning type"
 	            type = new CPointerType(paramType, 0);
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java	Wed Aug 05 17:35:39 2009 -0500
@@ -90,6 +90,7 @@
 import org.eclipse.cdt.internal.core.dom.parser.ASTInternal;
 import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
 import org.eclipse.cdt.internal.core.dom.parser.ASTQueries;
+import org.eclipse.cdt.internal.core.dom.parser.ASTTranslationUnit;
 import org.eclipse.cdt.internal.core.dom.parser.AbstractGNUSourceCodeParser;
 import org.eclipse.cdt.internal.core.dom.parser.BacktrackException;
 import org.eclipse.cdt.internal.core.dom.parser.DeclarationOptions;
@@ -291,31 +292,64 @@
         return simpleDeclaration(declOption);
     }
 
-	private IASTDeclaration simpleDeclaration(final DeclarationOptions declOption) throws BacktrackException, EndOfFileException {
+	private IASTDeclaration simpleDeclaration(final DeclarationOptions declOption) 
+			throws BacktrackException, EndOfFileException {
         if (LT(1) == IToken.tLBRACE)
             throwBacktrack(LA(1));
         
         final int firstOffset= LA(1).getOffset();
         int endOffset= firstOffset;
         boolean insertSemi= false;
+        boolean parseDtors= true;
 
         IASTDeclSpecifier declSpec= null;
         IASTDeclarator dtor= null;
         IASTDeclSpecifier altDeclSpec= null;
-        IASTDeclarator altDtor= null;
+        IASTDeclarator altDeclarator= null;
         IToken markBeforDtor= null;
         try {
-        	Decl decl= declSpecifierSequence_initDeclarator(declOption, true);
-        	markBeforDtor= decl.fDtorToken1;
-        	declSpec= decl.fDeclSpec1;
-        	dtor= decl.fDtor1;
-        	altDeclSpec= decl.fDeclSpec2;
-        	altDtor= decl.fDtor2;
+            declSpec = declSpecifierSeq(declOption);
+            final int lt1= LTcatchEOF(1);
+            switch(lt1) {
+            case 0: // eof
+            case IToken.tEOC:
+            case IToken.tSEMI:
+            	parseDtors= false;
+            	insertSemi= lt1==0;
+            	if (lt1 == IToken.tSEMI)
+            		endOffset= consume().getEndOffset();
+            	else 
+            		endOffset= calculateEndOffset(declSpec);
+            	break;
+            	
+            default:
+            	markBeforDtor= mark();
+            	try {
+            		dtor= initDeclarator(declOption);
+            	} catch (BacktrackException e) {
+            		backup(markBeforDtor);
+            	} catch (EndOfFileException e) {
+            		backup(markBeforDtor);
+            	}
+            }
         } catch (FoundAggregateInitializer lie) {
-        	declSpec= lie.fDeclSpec;
+        	if (declSpec == null)
+        		declSpec= lie.fDeclSpec;
         	// scalability: don't keep references to tokens, initializer may be large
         	declarationMark= null;
+        	markBeforDtor= null;
         	dtor= addInitializer(lie, declOption);
+        } catch (FoundDeclaratorException e) {
+        	if (e.altSpec != null) {
+        		declSpec= e.altSpec;
+        		dtor= e.altDeclarator;
+            	altDeclSpec= e.declSpec;
+            	altDeclarator= e.declarator;
+        	} else {
+        		declSpec = e.declSpec;
+        		dtor= e.declarator;
+        	}
+            backup( e.currToken );
         } catch (BacktrackException e) {
         	IASTNode node= e.getNodeBeforeProblem();
         	if (node instanceof IASTDeclSpecifier) {
@@ -327,12 +361,12 @@
         }
         
         IASTDeclarator[] declarators= IASTDeclarator.EMPTY_DECLARATOR_ARRAY;
-        if (dtor != null) {
+        if (parseDtors) {
         	declarators= new IASTDeclarator[]{dtor};
         	while (LTcatchEOF(1) == IToken.tCOMMA) {
         		consume();
         		try {
-        			dtor= initDeclarator(declSpec, declOption);
+        			dtor= initDeclarator(declOption);
         		} catch (FoundAggregateInitializer e) {
         	        // scalability: don't keep references to tokens, initializer may be large
         			declarationMark= null;
@@ -342,44 +376,44 @@
         		declarators= (IASTDeclarator[]) ArrayUtil.append( IASTDeclarator.class, declarators, dtor);
         	}
         	declarators= (IASTDeclarator[]) ArrayUtil.removeNulls( IASTDeclarator.class, declarators );
-        }
-        
-        final int lt1= LTcatchEOF(1);
-        switch (lt1) {
-        case IToken.tEOC:
-        	endOffset= figureEndOffset(declSpec, declarators);
-        	break;
-        case IToken.tSEMI:
-        	endOffset= consume().getEndOffset();
-        	break;
-        case IToken.tLBRACE:
-        	return functionDefinition(firstOffset, declSpec, declarators);
+
+        	final int lt1= LTcatchEOF(1);
+        	switch (lt1) {
+        	case IToken.tLBRACE:
+        		return functionDefinition(firstOffset, declSpec, declarators);
 
-        default:
-        	if (declOption != DeclarationOptions.LOCAL) {
-        		insertSemi= true;
-        		if (markBeforDtor != null) {
-        			endOffset= calculateEndOffset(declSpec);
-        			if (firstOffset != endOffset && !isOnSameLine(endOffset, markBeforDtor.getOffset())) {
-        				backup(markBeforDtor);
-        				declarators= IASTDeclarator.EMPTY_DECLARATOR_ARRAY;
+        	case IToken.tSEMI:
+        		endOffset= consume().getEndOffset();
+        		break;
+        	case IToken.tEOC:
+        		endOffset= figureEndOffset(declSpec, declarators);
+        		break;
+        	default:
+         		if (declOption != DeclarationOptions.LOCAL) {
+        			insertSemi= true;
+        			if (markBeforDtor != null) {
+    					endOffset= calculateEndOffset(declSpec);
+        				if (firstOffset != endOffset && !isOnSameLine(endOffset, markBeforDtor.getOffset())) {
+        					backup(markBeforDtor);
+        					declarators= IASTDeclarator.EMPTY_DECLARATOR_ARRAY;
+        					break;
+        				}
+        			}
+        			endOffset= figureEndOffset(declSpec, declarators);
+        			if (lt1 == 0) {
         				break;
         			}
-        		}
-        		endOffset= figureEndOffset(declSpec, declarators);
-        		if (lt1 == 0) {
-        			break;
-        		}
-        		if (firstOffset != endOffset) {
-        			if (!isOnSameLine(endOffset, LA(1).getOffset())) {
-        				break;
-        			}
-        			if (declarators.length == 1 && declarators[0] instanceof IASTFunctionDeclarator) {
-        				break;
+        			if (firstOffset != endOffset) {
+        				if (!isOnSameLine(endOffset, LA(1).getOffset())) {
+        					break;
+        				}
+        				if (declarators.length == 1 && declarators[0] instanceof IASTFunctionDeclarator) {
+        					break;
+        				}
         			}
         		}
+        		throwBacktrack(LA(1));
         	}
-        	throwBacktrack(LA(1));
         }
 
         // no function body
@@ -388,10 +422,10 @@
             simpleDeclaration.addDeclarator(declarator);
         
     	setRange(simpleDeclaration, firstOffset, endOffset);
-		if (altDeclSpec != null && altDtor != null) {
-			simpleDeclaration = new CASTAmbiguousSimpleDeclaration(simpleDeclaration, altDeclSpec, altDtor);
-			setRange(simpleDeclaration, firstOffset, endOffset);
-		}
+        if ( altDeclSpec != null && altDeclarator != null) {
+        	simpleDeclaration= new CASTAmbiguousSimpleDeclaration(simpleDeclaration, altDeclSpec, altDeclarator);
+        	setRange(simpleDeclaration, firstOffset, endOffset);
+        }
         
         if (insertSemi) {
     		IASTProblem problem= createProblem(IProblem.SYNTAX_ERROR, endOffset, 0);
@@ -432,7 +466,7 @@
 
 	@Override
 	protected void setupTranslationUnit() throws DOMException {
-		translationUnit = nodeFactory.newTranslationUnit(scanner);
+		translationUnit = nodeFactory.newTranslationUnit();
 		translationUnit.setIndex(index);
 
 		// add built-in names to the scope
@@ -444,6 +478,8 @@
 				ASTInternal.addBinding(tuScope, binding);
 			}
 		}
+		if(translationUnit instanceof ASTTranslationUnit)
+			((ASTTranslationUnit)translationUnit).setLocationResolver(scanner.getLocationResolver());
 	}
 
 
@@ -704,18 +740,24 @@
     	if (!canBeTypeSpecifier()) {
     		return null;
     	}
-    	final int offset = mark().getOffset();
+        IToken mark = mark();
+        int startingOffset = mark.getOffset();
         IASTDeclSpecifier declSpecifier = null;
         IASTDeclarator declarator = null;
 
     	fPreventKnrCheck++;
         try {
-        	Decl decl= declSpecifierSequence_initDeclarator(option, false);
-        	declSpecifier= decl.fDeclSpec1;
-        	declarator= decl.fDtor1;
-        } catch (FoundAggregateInitializer lie) {
-        	// type-ids have not compound initializers
-        	return null;
+            try {
+                declSpecifier= declSpecifierSeq(option);
+                declarator= declarator(option);
+            } catch (FoundDeclaratorException  e) {
+            	declSpecifier= e.declSpec;
+            	declarator= e.declarator;
+            	backup(e.currToken);
+            } catch (FoundAggregateInitializer lie) {
+                // type-ids have not compound initializers
+            	return null;
+            }
         } catch (BacktrackException bt) {
         	return null;
         } finally {
@@ -723,7 +765,8 @@
         }
 
         IASTTypeId result = nodeFactory.newTypeId(declSpecifier, declarator);
-        setRange(result, offset, figureEndOffset(declSpecifier, declarator));
+        ((ASTNode) result).setOffsetAndLength(startingOffset, figureEndOffset(
+                declSpecifier, declarator) - startingOffset);
         return result;
     }
 
@@ -788,283 +831,292 @@
 	    SHORT=0x10,	UNSIGNED= 0x20, SIGNED=0x40, COMPLEX=0x80, IMAGINARY=0x100;
 
     @Override
-	protected Decl declSpecifierSeq(final DeclarationOptions declOption) throws BacktrackException, EndOfFileException {
+	protected IASTDeclSpecifier declSpecifierSeq(final DeclarationOptions declOption)
+            throws BacktrackException, EndOfFileException, FoundDeclaratorException, FoundAggregateInitializer {
+
+        final int offset= LA(1).getOffset();
+        int endOffset= offset;
         int storageClass= IASTDeclSpecifier.sc_unspecified;
         int simpleType= IASTSimpleDeclSpecifier.t_unspecified;
         int options= 0;
         int isLong= 0;
 
-        IToken returnToken= null;
-    	IASTDeclSpecifier result= null;
-    	IASTDeclSpecifier altResult= null;
-    	try {
-    		IASTName identifier= null;
-    		IASTExpression typeofExpression= null;
-    		IASTProblem problem= null;
+        IASTName identifier= null;
+        IASTDeclSpecifier result= null;
+        IASTExpression typeofExpression= null;
+        IASTProblem problem= null;
         
-    		boolean encounteredRawType= false;
-    		boolean encounteredTypename= false;
-
-    		final int offset= LA(1).getOffset();
-    		int endOffset= offset;
+        boolean encounteredRawType= false;
+        boolean encounteredTypename= false;
 
-    		declSpecifiers: for (;;) {
-    			final int lt1= LTcatchEOF(1);
-    			switch (lt1) {
-    			case 0: // eof
-    				break declSpecifiers;
-    				// storage class specifiers
-    			case IToken.t_auto:
-    				storageClass = IASTDeclSpecifier.sc_auto;
-    				endOffset= consume().getEndOffset();
-    				break;
-    			case IToken.t_register:
-    				storageClass = IASTDeclSpecifier.sc_register;
-    				endOffset= consume().getEndOffset();
-    				break;
-    			case IToken.t_static:
-    				storageClass = IASTDeclSpecifier.sc_static;
-    				endOffset= consume().getEndOffset();
-    				break;
-    			case IToken.t_extern:
-    				storageClass = IASTDeclSpecifier.sc_extern;
-    				endOffset= consume().getEndOffset();
-    				break;
-    			case IToken.t_typedef:
-    				storageClass = IASTDeclSpecifier.sc_typedef;
-    				endOffset= consume().getEndOffset();
-    				break;
+        declSpecifiers: for (;;) {
+        	final int lt1= LTcatchEOF(1);
+            switch (lt1) {
+            case 0: // eof
+            	break declSpecifiers;
+            // storage class specifiers
+            case IToken.t_auto:
+                storageClass = IASTDeclSpecifier.sc_auto;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_register:
+                storageClass = IASTDeclSpecifier.sc_register;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_static:
+                storageClass = IASTDeclSpecifier.sc_static;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_extern:
+                storageClass = IASTDeclSpecifier.sc_extern;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_typedef:
+                storageClass = IASTDeclSpecifier.sc_typedef;
+                endOffset= consume().getEndOffset();
+                break;
 
-    				// Function Specifier
-    			case IToken.t_inline:
-    				options |= INLINE;
-    				endOffset= consume().getEndOffset();
-    				break;
+            // Function Specifier
+            case IToken.t_inline:
+                options |= INLINE;
+                endOffset= consume().getEndOffset();
+                break;
 
-    				// Type Qualifiers
-    			case IToken.t_const:
-    				options |= CONST;
-    				endOffset= consume().getEndOffset();
-    				break;
-    			case IToken.t_volatile:
-    				options |= VOLATILE;
-    				endOffset= consume().getEndOffset();
-    				break;
-    			case IToken.t_restrict:
-    				options |= RESTRICT;
-    				endOffset= consume().getEndOffset();
-    				break;
+            // Type Qualifiers
+            case IToken.t_const:
+            	options |= CONST;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_volatile:
+            	options |= VOLATILE;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_restrict:
+            	options |= RESTRICT;
+                endOffset= consume().getEndOffset();
+                break;
 
-    				// Type Specifiers
-    			case IToken.t_void:
-    				if (encounteredTypename)
-    					break declSpecifiers;
-    				simpleType = IASTSimpleDeclSpecifier.t_void;
-    				encounteredRawType= true;
-    				endOffset= consume().getEndOffset();
-    				break;
-    			case IToken.t_char:
-    				if (encounteredTypename)
-    					break declSpecifiers;
-    				simpleType = IASTSimpleDeclSpecifier.t_char;
-    				encounteredRawType= true;
-    				endOffset= consume().getEndOffset();
-    				break;
-    			case IToken.t_short:
-    				if (encounteredTypename)
-    					break declSpecifiers;
-    				options |= SHORT;
-    				encounteredRawType= true;
-    				endOffset= consume().getEndOffset();
-    				break;
-    			case IToken.t_int:
-    				if (encounteredTypename)
-    					break declSpecifiers;
-    				simpleType = IASTSimpleDeclSpecifier.t_int;
-    				encounteredRawType= true;
-    				endOffset= consume().getEndOffset();
-    				break;
-    			case IToken.t_long:
-    				if (encounteredTypename)
-    					break declSpecifiers;
-    				isLong++;
-    				encounteredRawType= true;
-    				endOffset= consume().getEndOffset();
-    				break;
-    			case IToken.t_float:
-    				if (encounteredTypename)
-    					break declSpecifiers;
-    				simpleType = IASTSimpleDeclSpecifier.t_float;
-    				encounteredRawType= true;
-    				endOffset= consume().getEndOffset();
-    				break;
-    			case IToken.t_double:
-    				if (encounteredTypename)
-    					break declSpecifiers;
-    				simpleType = IASTSimpleDeclSpecifier.t_double;
-    				encounteredRawType= true;
-    				endOffset= consume().getEndOffset();
-    				break;
-    			case IToken.t_signed:
-    				if (encounteredTypename)
-    					break declSpecifiers;
-    				options |= SIGNED;
-    				encounteredRawType= true;
-    				endOffset= consume().getEndOffset();
-    				break;
-    			case IToken.t_unsigned:
-    				if (encounteredTypename)
-    					break declSpecifiers;
-    				options |= UNSIGNED;
-    				encounteredRawType= true;
-    				endOffset= consume().getEndOffset();
-    				break;
-    			case IToken.t__Bool:
-    				if (encounteredTypename)
-    					break declSpecifiers;
-    				simpleType = ICASTSimpleDeclSpecifier.t_Bool;
-    				encounteredRawType= true;
-    				endOffset= consume().getEndOffset();
-    				break;
-    			case IToken.t__Complex:
-    				if (encounteredTypename)
-    					break declSpecifiers;
-    				options |= COMPLEX;
-    				endOffset= consume().getEndOffset();
-    				break;
-    			case IToken.t__Imaginary:
-    				if (encounteredTypename)
-    					break declSpecifiers;
-    				options |= IMAGINARY;
-    				endOffset= consume().getEndOffset();
-    				break;
-
-    			case IToken.tIDENTIFIER:
-    			case IToken.tCOMPLETION:
-    			case IToken.tEOC:
-    				if (encounteredTypename || encounteredRawType) 
-    					break declSpecifiers;
-
-    				if ((endOffset != offset || declOption.fAllowEmptySpecifier) && LT(1) != IToken.tCOMPLETION) {
-    					altResult= buildSimpleDeclSpec(storageClass, simpleType, options, isLong, typeofExpression, offset, endOffset);
-    					returnToken= mark();
-    				}
+            // Type Specifiers
+            case IToken.t_void:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+                simpleType = IASTSimpleDeclSpecifier.t_void;
+                encounteredRawType= true;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_char:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+            	simpleType = IASTSimpleDeclSpecifier.t_char;
+               	encounteredRawType= true;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_short:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+            	options |= SHORT;
+                encounteredRawType= true;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_int:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+                simpleType = IASTSimpleDeclSpecifier.t_int;
+                encounteredRawType= true;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_long:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+            	isLong++;
+                encounteredRawType= true;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_float:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+                simpleType = IASTSimpleDeclSpecifier.t_float;
+                encounteredRawType= true;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_double:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+                simpleType = IASTSimpleDeclSpecifier.t_double;
+                encounteredRawType= true;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_signed:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+            	options |= SIGNED;
+                encounteredRawType= true;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_unsigned:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+            	options |= UNSIGNED;
+                encounteredRawType= true;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t__Bool:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+                simpleType = ICASTSimpleDeclSpecifier.t_Bool;
+                encounteredRawType= true;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t__Complex:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+            	options |= COMPLEX;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t__Imaginary:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+            	options |= IMAGINARY;
+                endOffset= consume().getEndOffset();
+                break;
 
-    				identifier = identifier();
-    				endOffset= calculateEndOffset(identifier);
-    				encounteredTypename= true;
-    				break;
-    			case IToken.t_struct:
-    			case IToken.t_union:
-    				if (encounteredTypename || encounteredRawType)
-    					break declSpecifiers;
-    				try {
-    					result= structOrUnionSpecifier();
-    				} catch (BacktrackException bt) {
-    					result= elaboratedTypeSpecifier();
-    				}
-    				endOffset= calculateEndOffset(result);
-    				encounteredTypename= true;
-    				break;
-    			case IToken.t_enum:
-    				if (encounteredTypename || encounteredRawType)
-    					break declSpecifiers;
-    				try {
-    					result= enumSpecifier();
-    				} catch (BacktrackException bt) {
-    					if (bt.getNodeBeforeProblem() instanceof IASTDeclSpecifier) {
-    						result= (IASTDeclSpecifier) bt.getNodeBeforeProblem();
-    						problem = bt.getProblem();
-    						break declSpecifiers;
-    					} else {
-    						result= elaboratedTypeSpecifier();
-    					}
-    				}
-    				endOffset= calculateEndOffset(result);
-    				encounteredTypename= true;
-    				break;
-
-    			case IGCCToken.t__attribute__: // if __attribute__ is after the declSpec
-    			if (!supportAttributeSpecifiers)
-    				throwBacktrack(LA(1));
-    			__attribute_decl_seq(true, false);
-    			break;
-    			case IGCCToken.t__declspec: // __declspec precedes the identifier
-    			if (identifier != null || !supportDeclspecSpecifiers)
-    				throwBacktrack(LA(1));
-    			__attribute_decl_seq(false, true);
-    			break;
-
-    			case IGCCToken.t_typeof:
-    				if (encounteredRawType || encounteredTypename)
-    					throwBacktrack(LA(1));
+            case IToken.tIDENTIFIER:
+            case IToken.tCOMPLETION:
+            case IToken.tEOC:
+                if (encounteredTypename || encounteredRawType) {
+                    break declSpecifiers;
+                }
+                
+                try {
+                	if (endOffset != offset || declOption.fAllowEmptySpecifier) {
+                		lookAheadForDeclarator(declOption);
+                	}
+                } catch (FoundAggregateInitializer e) {
+                	e.fDeclSpec= buildSimpleDeclSpec(storageClass, simpleType, options, isLong, typeofExpression, offset, endOffset);
+                	throw e;
+                } catch (FoundDeclaratorException e) {
+                	e.declSpec= buildSimpleDeclSpec(storageClass, simpleType, options, isLong, typeofExpression, offset, endOffset);
 
-    				final boolean wasInBinary= inBinaryExpression;
-    				try {
-    					inBinaryExpression= false;
-    					typeofExpression = parseTypeidInParenthesisOrUnaryExpression(false, consume().getOffset(), 
-    							IGNUASTTypeIdExpression.op_typeof, IGNUASTUnaryExpression.op_typeof);
-    				} finally {
-    					inBinaryExpression= wasInBinary;
-    				}
-    				encounteredTypename= true;
-    				endOffset= calculateEndOffset(typeofExpression);
-    				break;
-
-    			default:
-    				if (lt1 >= IExtensionToken.t__otherDeclSpecModifierFirst && lt1 <= IExtensionToken.t__otherDeclSpecModifierLast) {
-    					handleOtherDeclSpecModifier();
-    					endOffset= LA(1).getOffset();
-    					break;
-    				}
-    				break declSpecifiers;
-    			}
-            
-    			if (encounteredRawType && encounteredTypename)
-    				throwBacktrack(LA(1));
-    		}
+                	IToken mark= mark();
+                	try {
+                		final IASTName id= identifier(); // for the specifier
+            			final IASTDeclarator altDtor = initDeclarator(declOption);
+                		if (LA(1) == e.currToken) {
+							e.altDeclarator= altDtor;
+                			e.altSpec= buildNamedTypeSpecifier(id, storageClass, options, offset, calculateEndOffset(id));
+                		}
+                	} catch (FoundAggregateInitializer lie) {
+                		lie.fDeclSpec= e.declSpec;
+                		throw lie;
+                	} catch (BacktrackException bt) {
+                	} finally {
+                		backup(mark);
+                	}
+                	throw e;
+                }
+                identifier = identifier();
+                endOffset= calculateEndOffset(identifier);
+                encounteredTypename= true;
+                break;
+            case IToken.t_struct:
+            case IToken.t_union:
+                if (encounteredTypename || encounteredRawType)
+                    break declSpecifiers;
+                try {
+                    result= structOrUnionSpecifier();
+                } catch (BacktrackException bt) {
+                    result= elaboratedTypeSpecifier();
+                }
+                endOffset= calculateEndOffset(result);
+                encounteredTypename= true;
+                break;
+            case IToken.t_enum:
+                if (encounteredTypename || encounteredRawType)
+                    break declSpecifiers;
+                try {
+                    result= enumSpecifier();
+                } catch (BacktrackException bt) {
+                	if (bt.getNodeBeforeProblem() instanceof IASTDeclSpecifier) {
+                		result= (IASTDeclSpecifier) bt.getNodeBeforeProblem();
+                		problem = bt.getProblem();
+                		break declSpecifiers;
+                	} else {
+                		result= elaboratedTypeSpecifier();
+                	}
+                }
+                endOffset= calculateEndOffset(result);
+                encounteredTypename= true;
+                break;
+                
+            case IGCCToken.t__attribute__: // if __attribute__ is after the declSpec
+            	if (!supportAttributeSpecifiers)
+            		throwBacktrack(LA(1));
+            	__attribute_decl_seq(true, false);
+            	break;
+            case IGCCToken.t__declspec: // __declspec precedes the identifier
+            	if (identifier != null || !supportDeclspecSpecifiers)
+            		throwBacktrack(LA(1));
+            	__attribute_decl_seq(false, true);
+            	break;
 
-    		// check for empty specification
-    		if (!encounteredRawType && !encounteredTypename && LT(1) != IToken.tEOC && !declOption.fAllowEmptySpecifier) {
-    			if (offset == endOffset) {
-    				throwBacktrack(LA(1));
-    			}
-    		}
-        
-    		if (result != null) {
-    			configureDeclSpec(result, storageClass, options);
-    			if ((options & RESTRICT) != 0) {
-    				if (result instanceof ICASTCompositeTypeSpecifier) {
-    					((ICASTCompositeTypeSpecifier) result).setRestrict(true);
-    				} else if (result instanceof CASTEnumerationSpecifier) {
-    					((CASTEnumerationSpecifier) result).setRestrict(true);
-    				} else if (result instanceof CASTElaboratedTypeSpecifier) {
-    					((CASTElaboratedTypeSpecifier) result).setRestrict(true);
-    				}
-    			}
-    			setRange(result, offset, endOffset);
-    			if (problem != null)
-    				throwBacktrack(problem, result);
-    		} else if (identifier != null) { 
-    			result= buildNamedTypeSpecifier(identifier, storageClass, options, offset, endOffset);
-    		} else {
-    			result= buildSimpleDeclSpec(storageClass, simpleType, options, isLong, typeofExpression, offset, endOffset);
-    		}
-        } catch (BacktrackException e) {
-        	if (returnToken != null) {
-        		backup(returnToken);
-        		result= altResult;
-        		altResult= null;
-        		returnToken= null;
-        	} else {
-        		throw e;
+            case IGCCToken.t_typeof:
+            	if (encounteredRawType || encounteredTypename)
+            		throwBacktrack(LA(1));
+
+            	final boolean wasInBinary= inBinaryExpression;
+            	try {
+            		inBinaryExpression= false;
+            		typeofExpression = parseTypeidInParenthesisOrUnaryExpression(false, consume().getOffset(), 
+            				IGNUASTTypeIdExpression.op_typeof, IGNUASTUnaryExpression.op_typeof);
+            	} finally {
+            		inBinaryExpression= wasInBinary;
+            	}
+            	encounteredTypename= true;
+            	endOffset= calculateEndOffset(typeofExpression);
+            	break;
+
+            default:
+            	if (lt1 >= IExtensionToken.t__otherDeclSpecModifierFirst && lt1 <= IExtensionToken.t__otherDeclSpecModifierLast) {
+            		handleOtherDeclSpecModifier();
+            		endOffset= LA(1).getOffset();
+            		break;
+            	}
+                break declSpecifiers;
+            }
+            
+            if (encounteredRawType && encounteredTypename)
+            	throwBacktrack(LA(1));
+        }
+
+        // check for empty specification
+        if (!encounteredRawType && !encounteredTypename && LT(1) != IToken.tEOC && !declOption.fAllowEmptySpecifier) {
+        	if (offset == endOffset) {
+            	throwBacktrack(LA(1));
         	}
         }
-        Decl target= new Decl();
-        target.fDeclSpec1= result;
-        target.fDeclSpec2= altResult;
-        target.fDtorToken1= returnToken;
-        return target;
+        
+        if (result != null) {
+            configureDeclSpec(result, storageClass, options);
+            if ((options & RESTRICT) != 0) {
+            	if (result instanceof ICASTCompositeTypeSpecifier) {
+                    ((ICASTCompositeTypeSpecifier) result).setRestrict(true);
+            	} else if (result instanceof CASTEnumerationSpecifier) {
+                    ((CASTEnumerationSpecifier) result).setRestrict(true);
+            	} else if (result instanceof CASTElaboratedTypeSpecifier) {
+                    ((CASTElaboratedTypeSpecifier) result).setRestrict(true);
+            	}
+            }
+            ((ASTNode) result).setOffsetAndLength(offset, endOffset - offset);
+            if (problem != null)
+            	throwBacktrack(problem, result);
+            
+            return result;
+        }
+
+        if (identifier != null) 
+            return buildNamedTypeSpecifier(identifier, storageClass, options, offset, endOffset);
+        
+        return buildSimpleDeclSpec(storageClass, simpleType, options, isLong, typeofExpression, offset, endOffset);
     }
 
 	private ICASTTypedefNameSpecifier buildNamedTypeSpecifier(IASTName name, int storageClass,
@@ -1106,6 +1158,31 @@
 		declSpec.setInline((options & INLINE) != 0);
 	}
 
+	@Override
+	protected boolean verifyLookaheadDeclarator(DeclarationOptions option, IASTDeclarator dtor, IToken nextToken) {
+        switch (nextToken.getType()) {
+        case IToken.tCOMMA:
+        	return true;
+        case IToken.tLBRACE:
+        	if (option == DeclarationOptions.GLOBAL || option == DeclarationOptions.C_MEMBER 
+        			|| option == DeclarationOptions.FUNCTION_STYLE_ASM) {
+        		if (ASTQueries.findTypeRelevantDeclarator(dtor) instanceof IASTFunctionDeclarator) {
+        			return true;
+        		}
+        	}
+        	break;
+        case IToken.tSEMI:
+        	return option == DeclarationOptions.GLOBAL || option == DeclarationOptions.C_MEMBER ||
+        		option == DeclarationOptions.LOCAL;
+
+        case IToken.tRPAREN:
+        	return option == DeclarationOptions.PARAMETER 
+        		|| option == DeclarationOptions.C_PARAMETER_NON_ABSTRACT;
+        }
+        return false;
+	}
+	
+
     /**
      * Parse a class/struct/union definition.
      * 
@@ -1192,18 +1269,11 @@
 
 
     @Override
-	protected IASTDeclarator initDeclarator(IASTDeclSpecifier declspec, final DeclarationOptions option) 
+	protected IASTDeclarator initDeclarator(final DeclarationOptions option) 
     		throws EndOfFileException, BacktrackException, FoundAggregateInitializer {
-        IASTDeclarator d = declarator(declspec, option);
+        IASTDeclarator d = declarator(option);
 
-		final int lt1= LTcatchEOF(1);
-		if (lt1 == IToken.tLBRACE) {
-			if (!(ASTQueries.findTypeRelevantDeclarator(d) instanceof IASTFunctionDeclarator)) {
-				throwBacktrack(LA(1));
-			}
-		}
-		
-        if (lt1 == IToken.tASSIGN && LT(2) == IToken.tLBRACE) 
+        if (LTcatchEOF(1) == IToken.tASSIGN && LT(2) == IToken.tLBRACE) 
         	throw new FoundAggregateInitializer(d);
        
         IASTInitializer i = optionalCInitializer();
@@ -1229,7 +1299,7 @@
 		return d;
     }
 
-    protected IASTDeclarator declarator(IASTDeclSpecifier declSpec, DeclarationOptions option) throws EndOfFileException, BacktrackException {
+    protected IASTDeclarator declarator(DeclarationOptions option) throws EndOfFileException, BacktrackException {
         final int startingOffset = LA(1).getOffset();
         int endOffset = startingOffset;
 
@@ -1275,7 +1345,7 @@
         		if (LT(1) == IToken.tRPAREN)
         			throwBacktrack(LA(1));
         		
-        		final IASTDeclarator nested= declarator(declSpec, option);
+        		final IASTDeclarator nested= declarator(option);
         		endOffset= consume(IToken.tRPAREN).getEndOffset();
         		final IASTDeclarator cand2= declarator(pointerOps, null, nested, startingOffset, endOffset, option);
         		if (cand1 == null || cand1End == null)
@@ -1667,11 +1737,14 @@
         
         try {
         	fPreventKnrCheck++;
-        	Decl decl= declSpecifierSequence_initDeclarator(option, false);
-        	declSpec= decl.fDeclSpec1;
-        	declarator= decl.fDtor1;
-        	altDeclSpec= decl.fDeclSpec2;
-        	altDeclarator= decl.fDtor2;
+        	declSpec= declSpecifierSeq(option);
+        	declarator = declarator(option);
+        } catch(FoundDeclaratorException fd) {
+        	declSpec= fd.declSpec;
+        	declarator= fd.declarator;
+        	altDeclSpec= fd.altSpec;
+        	altDeclarator= fd.altDeclarator;
+        	backup(fd.currToken);
         } catch (FoundAggregateInitializer lie) {
         	declSpec= lie.fDeclSpec;
         	declarator= lie.fDeclarator;
@@ -1685,8 +1758,8 @@
         if (altDeclarator != null && altDeclSpec != null) {
             IASTParameterDeclaration alt = nodeFactory.newParameterDeclaration(altDeclSpec, altDeclarator);
     		((ASTNode) alt).setOffsetAndLength(startingOffset, length);
-            // order is important, prefer variant with declspec over the one without
-            result= new CASTAmbiguousParameterDeclaration(result, alt);
+            // order is important, prefer alternative over the declarator found via the lookahead.
+            result= new CASTAmbiguousParameterDeclaration(alt, result);
             ((ASTNode) result).setOffsetAndLength((ASTNode) alt);
         }
         return result;
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousSimpleDeclaration.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,122 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Wind River Systems, Inc. and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Markus Schorn - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.parser.cpp;
-
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
-import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.IProblemBinding;
-import org.eclipse.cdt.core.dom.ast.IScope;
-import org.eclipse.cdt.internal.core.dom.parser.ASTAmbiguousNode;
-import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguityParent;
-import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguousSimpleDeclaration;
-import org.eclipse.cdt.internal.core.dom.parser.IASTInternalScope;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor;
-
-/**
- * Handles ambiguities for simple declarations.
- * <br>
- * class C {
- *    C(D);  // if D a type we have a constructor, otherwise this declares the field D.
- * };
- */
-public class CPPASTAmbiguousSimpleDeclaration extends ASTAmbiguousNode implements IASTAmbiguousSimpleDeclaration {
-
-    private IASTSimpleDeclaration fSimpleDecl;
-    private IASTDeclSpecifier fAltDeclSpec;
-    private IASTDeclarator fAltDtor;
-    
-    public CPPASTAmbiguousSimpleDeclaration(IASTSimpleDeclaration decl, IASTDeclSpecifier declSpec, IASTDeclarator dtor) {
-    	fSimpleDecl= decl;
-    	fAltDeclSpec= declSpec;
-    	fAltDtor= dtor;
-	}
-
-	@Override
-	protected void beforeResolution() {
-		// populate containing scope, so that it will not be affected by the alternative branches.
-		IScope scope= CPPVisitor.getContainingScope(this);
-		if (scope instanceof IASTInternalScope) {
-			((IASTInternalScope) scope).populateCache();
-		}
-	}
-
-    @Override
-	public IASTNode[] getNodes() {
-        return new IASTNode[] {fSimpleDecl, fAltDeclSpec, fAltDtor};
-    }
-
-	public IASTSimpleDeclaration copy() {
-		throw new UnsupportedOperationException();
-	}
-
-	public void addDeclarator(IASTDeclarator declarator) {
-		fSimpleDecl.addDeclarator(declarator);
-	}
-
-	public IASTDeclSpecifier getDeclSpecifier() {
-		return fSimpleDecl.getDeclSpecifier();
-	}
-
-	public IASTDeclarator[] getDeclarators() {
-		return fSimpleDecl.getDeclarators();
-	}
-
-	public void setDeclSpecifier(IASTDeclSpecifier declSpec) {
-		fSimpleDecl.setDeclSpecifier(declSpec);
-	}
-	
-	@Override
-	public final IASTNode resolveAmbiguity(ASTVisitor visitor) {
-		final IASTAmbiguityParent owner= (IASTAmbiguityParent) getParent();
-		IASTNode nodeToReplace= this;
-
-		// handle nested ambiguities first
-		owner.replace(nodeToReplace, fSimpleDecl);
-		IASTDeclarator dtor= fSimpleDecl.getDeclarators()[0];
-		dtor.accept(visitor);
-		
-
-		// find nested names
-		final NameCollector nameCollector= new NameCollector();
-		dtor.accept(nameCollector);
-		final IASTName[] names= nameCollector.getNames();
-
-		// resolve names 
-		boolean hasIssue= false;
-		for (IASTName name : names) {
-			try {
-				IBinding b = name.resolveBinding();
-				if (b instanceof IProblemBinding) {
-					hasIssue= true;
-					break;
-				}
-			} catch (Exception t) {
-				hasIssue= true;
-				break;
-			}
-		}
-		if (hasIssue) {
-			// use the alternate version
-			final IASTAmbiguityParent parent = (IASTAmbiguityParent) fSimpleDecl;
-			parent.replace(fSimpleDecl.getDeclSpecifier(), fAltDeclSpec);
-			parent.replace(dtor, fAltDtor);
-		}
-			
-		// resolve further nested ambiguities
-		fSimpleDecl.accept(visitor);
-		return fSimpleDecl;
-	}
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTBinaryExpression.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTBinaryExpression.java	Wed Aug 05 17:35:39 2009 -0500
@@ -223,7 +223,11 @@
         case ICPPASTBinaryExpression.op_pmarrow:
         case ICPPASTBinaryExpression.op_pmdot:
         	if (type2 instanceof ICPPPointerToMemberType) {
-        		return ((ICPPPointerToMemberType) type2).getType();
+        		try {
+        			return ((ICPPPointerToMemberType) type2).getType();
+        		} catch (DOMException e) {
+        			return e.getProblem();
+        		}
         	} 
         	return new ProblemBinding(this, IProblemBinding.SEMANTIC_INVALID_TYPE, getRawSignature().toCharArray()); 
         }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionCallExpression.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionCallExpression.java	Wed Aug 05 17:35:39 2009 -0500
@@ -231,10 +231,7 @@
     		} else if (t instanceof ICPPClassType) {
     			ICPPFunction op = CPPSemantics.findOverloadedOperator(this, (ICPPClassType)t);
     			if (op != null) {
-    				// overload can be a surrogate function call, which consists of a conversion and a call to
-    				// a dynamically computed function pointer.
-    				if(!(op instanceof CPPImplicitFunction))
-    					overload = op;
+    				overload = op;
     				return op.getType().getReturnType();
     			}
     		} else if (t instanceof IPointerType) {
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNewExpression.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNewExpression.java	Wed Aug 05 17:35:39 2009 -0500
@@ -13,6 +13,7 @@
 package org.eclipse.cdt.internal.core.dom.parser.cpp;
 
 import org.eclipse.cdt.core.dom.ast.ASTVisitor;
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator;
 import org.eclipse.cdt.core.dom.ast.IASTArrayModifier;
 import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
@@ -252,7 +253,11 @@
     public IType getExpressionType() {
 		IType t= CPPVisitor.createType(getTypeId());
 		if (t instanceof IArrayType) {
-			t= ((IArrayType) t).getType();
+			try {
+				t= ((IArrayType) t).getType();
+			} catch (DOMException e) {
+				return e.getProblem();
+			}
 		}
 		return new CPPPointerType(t);
     }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTUnaryExpression.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTUnaryExpression.java	Wed Aug 05 17:35:39 2009 -0500
@@ -12,9 +12,7 @@
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.dom.parser.cpp;
 
-import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.CVQ;
-import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.REF;
-import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.TDEF;
+import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.*;
 
 import org.eclipse.cdt.core.dom.ast.ASTVisitor;
 import org.eclipse.cdt.core.dom.ast.DOMException;
@@ -232,13 +230,17 @@
 	    	if (type instanceof IProblemBinding) {
 	    		return type;
 	    	}
-		    IType operator = findOperatorReturnType();
-			if(operator != null) {
-				return operator;
-			} else if (type instanceof IPointerType || type instanceof IArrayType) {
-				return ((ITypeContainer) type).getType();
-			} else if (type instanceof ICPPUnknownType) {
-				return CPPUnknownClass.createUnnamedInstance();
+		    try {
+		    	IType operator = findOperatorReturnType();
+				if(operator != null) {
+					return operator;
+				} else if (type instanceof IPointerType || type instanceof IArrayType) {
+					return ((ITypeContainer) type).getType();
+				} else if (type instanceof ICPPUnknownType) {
+					return CPPUnknownClass.createUnnamedInstance();
+				}
+			} catch (DOMException e) {
+				return e.getProblem();
 			}
 			return new ProblemBinding(this, IProblemBinding.SEMANTIC_INVALID_TYPE, this.getRawSignature().toCharArray());
 		} 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPArrayType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPArrayType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -6,35 +6,33 @@
  *  http://www.eclipse.org/legal/epl-v10.html
  * 
  *  Contributors:
- *     Andrew Niefer (IBM Corporation) - initial API and implementation
- *     Markus Schorn (Wind River Systems)
+ *     IBM Corporation - initial API and implementation
  *******************************************************************************/
+
+/*
+ * Created on Dec 13, 2004
+ */
 package org.eclipse.cdt.internal.core.dom.parser.cpp;
 
 import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IASTExpression;
 import org.eclipse.cdt.core.dom.ast.IArrayType;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.core.dom.ast.ITypedef;
-import org.eclipse.cdt.core.dom.ast.IValue;
-import org.eclipse.cdt.core.parser.util.CharArrayUtils;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
-import org.eclipse.cdt.internal.core.dom.parser.Value;
 
+/**
+ * @author aniefer
+ */
 public class CPPArrayType implements IArrayType, ITypeContainer {
     private IType type;
     private IASTExpression sizeExpression;
-    private IValue value= Value.NOT_INITIALIZED;
-
+    
     public CPPArrayType(IType type) {
         this.type = type;
     }
     
-    public CPPArrayType(IType type, IValue value) {
-    	this.type= type;
-    	this.value= value;
-    }
-    
     public CPPArrayType(IType type, IASTExpression sizeExp) {
         this.type = type;
         this.sizeExpression = sizeExp;
@@ -55,34 +53,20 @@
             return ((ITypedef) obj).isSameType(this);
         
         if (obj instanceof IArrayType) {
-            final IArrayType rhs = (IArrayType) obj;
-			IType objType = rhs.getType();
-			if (objType != null) {
-				if (objType.isSameType(type)) {
-					IValue s1= getSize();
-					IValue s2= rhs.getSize();
-					if (s1 == s2)
-						return true;
-					if (s1 == null || s2 == null)
-						return false;
-					return CharArrayUtils.equals(s1.getSignature(), s2.getSignature());
-				}
-			}
+            try {
+            	IType objType = ((IArrayType) obj).getType();
+            	if (objType != null)
+            		return objType.isSameType(type);
+            } catch (DOMException e) {
+                return false;
+            }
         }
     	return false;
     }
-
-    public IValue getSize() {
-    	if (value != Value.NOT_INITIALIZED)
-    		return value;
-    	
-    	if (sizeExpression == null)
-    		return value= null;
-
-    	return value= Value.create(sizeExpression, Value.MAX_RECURSION_DEPTH);
-    }
     
-    @Deprecated
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.dom.ast.IArrayType#getArraySizeExpression()
+     */
     public IASTExpression getArraySizeExpression() {
         return sizeExpression;
     }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java	Wed Aug 05 17:35:39 2009 -0500
@@ -99,9 +99,9 @@
         }
         char[] className = name.getLookupKey();
 
-		IParameter[] voidPs = new IParameter[] { new CPPParameter(CPPSemantics.VOID_TYPE, 0) };
+		IParameter[] voidPs = new IParameter[] { new CPPParameter(CPPSemantics.VOID_TYPE) };
 		IType pType = new CPPReferenceType(SemanticUtil.addQualifiers(clsType, true, false));
-		IParameter[] ps = new IParameter[] { new CPPParameter(pType, 0) };
+		IParameter[] ps = new IParameter[] { new CPPParameter(pType) };
 
 		int i= 0;
 		ImplicitsAnalysis ia= new ImplicitsAnalysis(compTypeSpec);
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java	Wed Aug 05 17:35:39 2009 -0500
@@ -164,18 +164,18 @@
         return definition;
     }
     
-	public final void addDefinition(IASTNode node) {
+	public void addDefinition(IASTNode node) {
 		ICPPASTFunctionDeclarator dtor = extractFunctionDtor(node);
 		if (dtor != null) {
-			updateFunctionParameterBindings(dtor);
+			updateParameterBindings(dtor);
 			definition = dtor;
 		}
 	}
 	
-	public final void addDeclaration(IASTNode node) {
+	public void addDeclaration(IASTNode node) {
 		ICPPASTFunctionDeclarator dtor = extractFunctionDtor(node);
 		if (dtor != null) {
-			updateFunctionParameterBindings(dtor);
+			updateParameterBindings(dtor);
 
 			if (declarations == null) {
 				declarations = new ICPPASTFunctionDeclarator[] { dtor };
@@ -194,7 +194,7 @@
 	}
 
 	private ICPPASTFunctionDeclarator extractFunctionDtor(IASTNode node) {
-		while (node instanceof IASTName)
+		if (node instanceof IASTName)
 			node = node.getParent();
 		if (node instanceof IASTDeclarator == false)
 			return null;
@@ -213,7 +213,7 @@
 		if (size > 0) {
 			for (int i = 0; i < size; i++) {
 				IASTParameterDeclaration p = params[i];
-				final IASTName name = getParamName(p);
+				final IASTName name = ASTQueries.findInnermostDeclarator(p.getDeclarator()).getName();
 				final IBinding binding= name.resolveBinding();
 				if (binding instanceof IParameter) {
 					result[i]= (IParameter) binding;
@@ -287,60 +287,67 @@
         return type;
     }
 
-    public IBinding resolveParameter(CPPParameter param) {
-		int pos= param.getParameterPosition();
+    public IBinding resolveParameter(IASTParameterDeclaration param) {
+        IASTDeclarator dtor = param.getDeclarator();
+        while (dtor.getNestedDeclarator() != null)
+            dtor = dtor.getNestedDeclarator();
+    	IASTName name = dtor.getName();
+    	IBinding binding = name.getBinding();
+    	if (binding != null)
+    		return binding;
 		
-    	int tdeclLen= declarations == null ? 0 : declarations.length;
-    	for (int i= -1; i < tdeclLen; i++) {
-    		ICPPASTFunctionDeclarator tdecl;
-    		if (i == -1) {
-    			tdecl= definition;
-    			if (tdecl == null)
-    				continue;
-    		} else {
-    			tdecl= declarations[i];
-    			if (tdecl == null)
-    				break;
-    		}
-    		
-    		IASTParameterDeclaration[] params = tdecl.getParameters();
-    		if (pos < params.length) {
-				final IASTName oName = getParamName(params[pos]);
-    			return oName.resolvePreBinding();
+    	IASTStandardFunctionDeclarator fdtor = (IASTStandardFunctionDeclarator) param.getParent();
+    	IASTParameterDeclaration[] ps = fdtor.getParameters();
+    	int i = 0;
+    	for (; i < ps.length; i++) {
+    		if (param == ps[i])
+    			break;
+    	}
+    	
+    	//create a new binding and set it for the corresponding parameter in all known defns and decls
+    	binding = new CPPParameter(name);
+    	IASTParameterDeclaration temp = null;
+    	if (definition != null) {
+    		IASTParameterDeclaration[] paramDecls = definition.getParameters();
+    		if (paramDecls.length > i) { // This will be less than i if we have a void parameter
+	    		temp = paramDecls[i];
+	    		IASTName n = ASTQueries.findInnermostDeclarator(temp.getDeclarator()).getName();
+	    		if (n != name) {
+	    		    n.setBinding(binding);
+	    		    ASTInternal.addDeclaration(binding, n);
+	    		}
     		}
     	}
-    	return param;
+    	if (declarations != null) {
+    		for (int j = 0; j < declarations.length && declarations[j] != null; j++) {
+    			IASTParameterDeclaration[] paramDecls = declarations[j].getParameters();
+    			if (paramDecls.length > i) {
+	    			temp = paramDecls[i];
+	        		IASTName n = ASTQueries.findInnermostDeclarator(temp.getDeclarator()).getName();
+	        		if (n != name) {
+	        		    n.setBinding(binding);
+	        		    ASTInternal.addDeclaration(binding, n);
+	        		}
+    			}
+    		}
+    	}
+    	return binding;
     }
-
-	private IASTName getParamName(final IASTParameterDeclaration paramDecl) {
-		return ASTQueries.findInnermostDeclarator(paramDecl.getDeclarator()).getName();
-	}
     
-    protected final void updateFunctionParameterBindings(ICPPASTFunctionDeclarator fdtor) {
-		IASTParameterDeclaration[] updateParams = fdtor.getParameters();
-
-    	int k= 0;
-    	int tdeclLen= declarations == null ? 0 : declarations.length;
-    	for (int i= -1; i < tdeclLen && k < updateParams.length; i++) {
-    		ICPPASTFunctionDeclarator tdecl;
-    		if (i == -1) {
-    			tdecl= definition;
-    			if (tdecl == null)
-    				continue;
-    		} else {
-    			tdecl= declarations[i];
-    			if (tdecl == null)
-    				break;
-    		}
-    		
-    		IASTParameterDeclaration[] params = tdecl.getParameters();
-    		int end= Math.min(params.length, updateParams.length);
-    		for (; k < end; k++) {
-    			final IASTName oName = getParamName(params[k]);
-    			IBinding b= oName.resolvePreBinding();
-    			IASTName n = getParamName(updateParams[k]);
-    			n.setBinding(b);
-    			ASTInternal.addDeclaration(b, n);
+    protected void updateParameterBindings(ICPPASTFunctionDeclarator fdtor) {
+    	ICPPASTFunctionDeclarator orig = definition != null ? definition : declarations[0];
+    	IASTParameterDeclaration[] ops = orig.getParameters();
+    	IASTParameterDeclaration[] nps = fdtor.getParameters();
+    	CPPParameter temp = null;
+    	for (int i = 0; i < ops.length; i++) {
+    		temp = (CPPParameter) ASTQueries.findInnermostDeclarator(ops[i].getDeclarator()).getName().getBinding();
+    		if (temp != null && nps.length > i) {		//length could be different, ie 0 or 1 with void
+    		    IASTDeclarator dtor = nps[i].getDeclarator();
+    		    while (dtor.getNestedDeclarator() != null)
+    		        dtor = dtor.getNestedDeclarator();
+    		    IASTName name = dtor.getName();
+    			name.setBinding(temp);
+    			ASTInternal.addDeclaration(temp, name);
     		}
     	}
     }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionSpecialization.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionSpecialization.java	Wed Aug 05 17:35:39 2009 -0500
@@ -32,7 +32,6 @@
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameterMap;
 import org.eclipse.cdt.core.index.IIndexBinding;
 import org.eclipse.cdt.internal.core.dom.parser.ASTInternal;
-import org.eclipse.cdt.internal.core.dom.parser.ASTQueries;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor;
 
 /**
@@ -158,100 +157,84 @@
         return false;
 	}
 
-    public IBinding resolveParameter(CPPParameter param) {
-		int pos= param.getParameterPosition();
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalFunction#resolveParameter(org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration)
+     */
+    public IBinding resolveParameter(IASTParameterDeclaration param) {
+        IASTDeclarator dtor = param.getDeclarator();
+        while (dtor.getNestedDeclarator() != null)
+            dtor = dtor.getNestedDeclarator();
+        IASTName name = dtor.getName();
+    	IBinding binding = name.getBinding();
+    	if (binding != null)
+    		return binding;
 		
-    	final IASTNode[] decls= getDeclarations();
-		int tdeclLen= decls == null ? 0 : decls.length;
-    	for (int i= -1; i < tdeclLen; i++) {
-    		ICPPASTFunctionDeclarator tdecl;
-    		if (i == -1) {
-    			tdecl= (ICPPASTFunctionDeclarator) getDefinition();
-    			if (tdecl == null)
-    				continue;
-    		} else if (decls != null){
-    			tdecl= (ICPPASTFunctionDeclarator) decls[i];
-    			if (tdecl == null)
-    				break;
-    		} else {
+    	ICPPASTFunctionDeclarator fdtor = (ICPPASTFunctionDeclarator) param.getParent();
+    	IASTParameterDeclaration[] ps = fdtor.getParameters();
+    	int i = 0;
+    	for (; i < ps.length; i++) {
+    		if (param == ps[i])
     			break;
-    		}
-    		
-    		IASTParameterDeclaration[] params = tdecl.getParameters();
-    		if (pos < params.length) {
-    			final IASTName oName = getParamName(params[pos]);
-    			return oName.resolvePreBinding();
-    		}
     	}
-    	return param;
+    	
+        try {
+            IParameter[] params = getParameters();
+            if (i < params.length) {
+        	    final IParameter myParam = params[i];
+				name.setBinding(myParam);
+        	    ASTInternal.addDeclaration(myParam, name);
+        	    return myParam;
+        	}
+
+        } catch (DOMException e) {
+            return e.getProblem();
+        }
+        return null;
     }
     
-    protected void updateFunctionParameterBindings(ICPPASTFunctionDeclarator fdtor) {
-		IASTParameterDeclaration[] updateParams = fdtor.getParameters();
-
-    	int k= 0;
-    	final IASTNode[] decls= getDeclarations();
-    	int tdeclLen= decls == null ? 0 : decls.length;
-    	for (int i= -1; i < tdeclLen && k < updateParams.length; i++) {
-    		ICPPASTFunctionDeclarator tdecl;
-    		if (i == -1) {
-    			tdecl= (ICPPASTFunctionDeclarator) getDefinition();
-    			if (tdecl == null)
-    				continue;
-    		} else if (decls != null) {
-    			tdecl= (ICPPASTFunctionDeclarator) decls[i];
-    			if (tdecl == null)
-    				break;
-    		} else {
-    			break;
-    		}
-    		
-    		IASTParameterDeclaration[] params = tdecl.getParameters();
-    		int end= Math.min(params.length, updateParams.length);
-    		for (; k < end; k++) {
-    			final IASTName oName = getParamName(params[k]);
-    			IBinding b= oName.resolvePreBinding();
-    			IASTName n = getParamName(updateParams[k]);
-    			n.setBinding(b);
-    			ASTInternal.addDeclaration(b, n);
-    		}
-    	}
-    }
-
-	private IASTName getParamName(final IASTParameterDeclaration paramDecl) {
-		return ASTQueries.findInnermostDeclarator(paramDecl.getDeclarator()).getName();
-	}
-
-	private ICPPASTFunctionDeclarator extractFunctionDtor(IASTNode node) {
-		if (node instanceof IASTName)
-			node = node.getParent();
-		if (node instanceof IASTDeclarator == false)
-			return null;
-		node= ASTQueries.findTypeRelevantDeclarator((IASTDeclarator) node);
-		if (node instanceof ICPPASTFunctionDeclarator == false)
-			return null;
-		
-		return (ICPPASTFunctionDeclarator) node;
-	}
-
     @Override
 	public void addDefinition(IASTNode node) {
-		ICPPASTFunctionDeclarator dtor = extractFunctionDtor(node);
-		if (dtor != null) {
-			updateFunctionParameterBindings(dtor);
-	        super.addDefinition(dtor);
-		}
+        IASTNode n = node;
+		while (n instanceof IASTName)
+			n = n.getParent();
+		if (!(n instanceof ICPPASTFunctionDeclarator))
+			return;
+	    updateParameterBindings((ICPPASTFunctionDeclarator) n);
+        super.addDefinition(n);
 	}
 
 	@Override
 	public void addDeclaration(IASTNode node) {
-		ICPPASTFunctionDeclarator dtor = extractFunctionDtor(node);
-		if (dtor != null) {
-			updateFunctionParameterBindings(dtor);
-	        super.addDeclaration(dtor);
-		}
+	    IASTNode n = node;
+		while (n instanceof IASTName)
+			n = n.getParent();
+		if (!(n instanceof ICPPASTFunctionDeclarator))
+			return;
+	    updateParameterBindings((ICPPASTFunctionDeclarator) n);
+        super.addDeclaration(n);
 	}
 
+    protected void updateParameterBindings(ICPPASTFunctionDeclarator fdtor) {
+        IParameter[] params = null;
+        try {
+            params = getParameters();
+        } catch (DOMException e) {
+            return;
+        }
+        IASTParameterDeclaration[] nps = fdtor.getParameters();
+    	for (int i = 0; i < nps.length; i++) {
+    		final IParameter param = params[i];
+			if (param != null) {
+    		    IASTDeclarator dtor = nps[i].getDeclarator();
+    		    while (dtor.getNestedDeclarator() != null)
+    		        dtor = dtor.getNestedDeclarator();
+    		    IASTName name = dtor.getName();
+    			name.setBinding(param);
+    			ASTInternal.addDeclaration(param, name);
+    		}
+    	}
+    }
+
 	@Override
 	public String toString() {
 		StringBuilder result = new StringBuilder();
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplate.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplate.java	Wed Aug 05 17:35:39 2009 -0500
@@ -113,11 +113,7 @@
 	public void addDefinition(IASTNode node) {
 		if (!(node instanceof IASTName))
 			return;
-		ICPPASTFunctionDeclarator fdecl= getDeclaratorByName(node);
-		if (fdecl == null)
-			return;
-		
-		updateFunctionParameterBindings(fdecl);
+		updateFunctionParameterBindings((IASTName) node);
 		super.addDefinition(node);
 	}
 
@@ -125,12 +121,24 @@
 	public void addDeclaration(IASTNode node) {
 		if (!(node instanceof IASTName))
 			return;
-		ICPPASTFunctionDeclarator fdecl= getDeclaratorByName(node);
-		if (fdecl == null)
-			return;
+		updateFunctionParameterBindings((IASTName) node);
+		super.addDeclaration(node);
+	}
 
-		updateFunctionParameterBindings(fdecl);
-		super.addDeclaration(node);
+	private void updateFunctionParameterBindings(IASTName declName) {
+		IASTName defName = definition != null ? definition : declarations[0];
+		ICPPASTFunctionDeclarator orig = getDeclaratorByName(defName);
+    	IASTParameterDeclaration[] ops = orig.getParameters();
+    	IASTParameterDeclaration[] nps = getDeclaratorByName(declName).getParameters();
+    	CPPParameter temp = null;
+    	for(int i = 0; i < nps.length; i++) {
+    		temp = (CPPParameter) ASTQueries.findInnermostDeclarator(ops[i].getDeclarator()).getName().getBinding();
+    		if (temp != null) {
+    		    IASTName name = ASTQueries.findInnermostDeclarator(nps[i].getDeclarator()).getName();
+    			name.setBinding(temp);
+    			ASTInternal.addDeclaration(temp, name);
+    		}
+    	}
 	}
 
 	public IParameter[] getParameters() {
@@ -204,70 +212,50 @@
         return false;
 	}
 
-    public IBinding resolveParameter(CPPParameter param) {
-		int pos= param.getParameterPosition();
+	public IBinding resolveParameter(IASTParameterDeclaration param) {
+	   	IASTName name = ASTQueries.findInnermostDeclarator(param.getDeclarator()).getName();
+    	IBinding binding = name.getBinding();
+    	if (binding != null)
+    		return binding;
 		
-    	final IASTNode[] decls= getDeclarations();
-		int tdeclLen= decls == null ? 0 : decls.length;
-    	for (int i= -1; i < tdeclLen; i++) {
-    		ICPPASTFunctionDeclarator tdecl;
-    		if (i == -1) {
-    			tdecl= getDeclaratorByName(getDefinition());
-    			if (tdecl == null)
-    				continue;
-    		} else if (decls != null){
-    			tdecl= getDeclaratorByName(decls[i]);
-    			if (tdecl == null)
-    				break;
-    		} else {
+    	ICPPASTFunctionDeclarator fdtor = (ICPPASTFunctionDeclarator) param.getParent();
+    	IASTParameterDeclaration[] ps = fdtor.getParameters();
+    	int i = 0;
+    	for (; i < ps.length; i++) {
+    		if (param == ps[i])
     			break;
-    		}
-    		
-    		IASTParameterDeclaration[] params = tdecl.getParameters();
-    		if (pos < params.length) {
-    			final IASTName oName = getParamName(params[pos]);
-    			return oName.resolvePreBinding();
+    	}
+    	
+    	//create a new binding and set it for the corresponding parameter in all known defns and decls
+    	binding = new CPPParameter(name);
+    	IASTParameterDeclaration temp = null;
+    	if (definition != null) {
+    		ICPPASTFunctionDeclarator fdecl= getDeclaratorByName(definition);
+    		if (fdecl != null) {
+    			temp = fdecl.getParameters()[i];
+    			IASTName n = ASTQueries.findInnermostDeclarator(temp.getDeclarator()).getName();
+    			if (n != name) {
+    				n.setBinding(binding);
+    				ASTInternal.addDeclaration(binding, n);
+    			}
     		}
     	}
-    	return param;
-    }
-    
-    protected void updateFunctionParameterBindings(ICPPASTFunctionDeclarator fdtor) {
-		IASTParameterDeclaration[] updateParams = fdtor.getParameters();
-
-    	int k= 0;
-    	final IASTNode[] decls= getDeclarations();
-    	int tdeclLen= decls == null ? 0 : decls.length;
-    	for (int i= -1; i < tdeclLen && k < updateParams.length; i++) {
-    		ICPPASTFunctionDeclarator tdecl;
-    		if (i == -1) {
-    			tdecl= getDeclaratorByName(getDefinition());
-    			if (tdecl == null)
-    				continue;
-    		} else if (decls != null) {
-    			tdecl= getDeclaratorByName(decls[i]);
-    			if (tdecl == null)
-    				break;
-    		} else {
-    			break;
-    		}
-    		
-    		IASTParameterDeclaration[] params = tdecl.getParameters();
-    		int end= Math.min(params.length, updateParams.length);
-    		for (; k < end; k++) {
-    			final IASTName oName = getParamName(params[k]);
-    			IBinding b= oName.resolvePreBinding();
-    			IASTName n = getParamName(updateParams[k]);
-    			n.setBinding(b);
-    			ASTInternal.addDeclaration(b, n);
+    	if (declarations != null) {
+    		for(int j = 0; j < declarations.length && declarations[j] != null; j++) {
+        		ICPPASTFunctionDeclarator fdecl= getDeclaratorByName(declarations[j]);
+        		if (fdecl != null) {
+        			temp = fdecl.getParameters()[i];
+        			IASTName n = ASTQueries.findInnermostDeclarator(temp.getDeclarator()).getName();
+        			if (n != name) {
+        				n.setBinding(binding);
+        				ASTInternal.addDeclaration(binding, n);
+        			}
+        		}
     		}
     	}
+    	return binding;	
     }
 
-	private IASTName getParamName(final IASTParameterDeclaration paramDecl) {
-		return ASTQueries.findInnermostDeclarator(paramDecl.getDeclarator()).getName();
-	}
-
 	public boolean isStatic() {
 		return hasStorageClass(IASTDeclSpecifier.sc_static);
 	}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -51,12 +51,20 @@
         if (o instanceof ICPPFunctionType) {
             ICPPFunctionType ft = (ICPPFunctionType) o;
             IType[] fps;
-            fps = ft.getParameterTypes();
-			//constructors & destructors have null return type
-			if ((returnType == null) ^ (ft.getReturnType() == null))
-			    return false;
-			else if (returnType != null && ! returnType.isSameType(ft.getReturnType()))
-			    return false;
+            try {
+                fps = ft.getParameterTypes();
+            } catch (DOMException e) {
+                return false;
+            }
+			try {
+                //constructors & destructors have null return type
+                if ((returnType == null) ^ (ft.getReturnType() == null))
+                    return false;
+                else if (returnType != null && ! returnType.isSameType(ft.getReturnType()))
+                    return false;
+            } catch (DOMException e1) {
+                return false;
+            }
 			
 			try {
 				if (parameters.length == 1 && fps.length == 0) {
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPImplicitFunction.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPImplicitFunction.java	Wed Aug 05 17:35:39 2009 -0500
@@ -11,10 +11,15 @@
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.dom.parser.cpp;
 
+import org.eclipse.cdt.core.dom.ast.IASTName;
+import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
 import org.eclipse.cdt.core.dom.ast.IBinding;
 import org.eclipse.cdt.core.dom.ast.IParameter;
 import org.eclipse.cdt.core.dom.ast.IScope;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDeclarator;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionType;
+import org.eclipse.cdt.internal.core.dom.parser.ASTInternal;
+import org.eclipse.cdt.internal.core.dom.parser.ASTQueries;
 
 /**
  * The CPPImplicitFunction is used to represent implicit functions that exist on the translation
@@ -78,6 +83,58 @@
     }
     
     @Override
+	public IBinding resolveParameter(IASTParameterDeclaration param) {
+		IASTName aName = ASTQueries.findInnermostDeclarator(param.getDeclarator()).getName();
+		IParameter binding = (IParameter) aName.getBinding();
+		if (binding != null)
+			return binding;
+
+		// get the index in the parameter list
+		ICPPASTFunctionDeclarator fdtor = (ICPPASTFunctionDeclarator) param.getParent();
+		IASTParameterDeclaration[] ps = fdtor.getParameters();
+		int i = 0;
+		for (; i < ps.length; i++) {
+			if (param == ps[i])
+				break;
+		}
+
+		// set the binding for the corresponding parameter in all known defns and decls
+		binding = parms[i];
+		IASTParameterDeclaration temp = null;
+		if (definition != null) {
+			temp = definition.getParameters()[i];
+			IASTName n = ASTQueries.findInnermostDeclarator(temp.getDeclarator()).getName();
+			n.setBinding(binding);
+			ASTInternal.addDeclaration(binding, n);
+		}
+		if (declarations != null) {
+			for (int j = 0; j < declarations.length && declarations[j] != null; j++) {
+				temp = declarations[j].getParameters()[i];
+				IASTName n = ASTQueries.findInnermostDeclarator(temp.getDeclarator()).getName();
+				n.setBinding(binding);
+				ASTInternal.addDeclaration(binding, n);
+			}
+		}
+		return binding;
+    }
+   
+    @Override
+	protected void updateParameterBindings(ICPPASTFunctionDeclarator fdtor) {
+		if (parms != null) {
+			IASTParameterDeclaration[] nps = fdtor.getParameters();
+			if (nps.length != parms.length)
+				return;
+
+			for (int i = 0; i < nps.length; i++) {
+				IASTName aName = ASTQueries.findInnermostDeclarator(nps[i].getDeclarator()).getName();
+				final IParameter param = parms[i];
+				aName.setBinding(param);
+				ASTInternal.addDeclaration(param, aName);
+			}
+		}
+	}
+
+    @Override
 	public boolean takesVarArgs() {
         return takesVarArgs;
     }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPImplicitTypedef.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPImplicitTypedef.java	Wed Aug 05 17:35:39 2009 -0500
@@ -11,6 +11,7 @@
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.dom.parser.cpp;
 
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IASTNode;
 import org.eclipse.cdt.core.dom.ast.IScope;
 import org.eclipse.cdt.core.dom.ast.IType;
@@ -56,21 +57,23 @@
     
     @Override
 	public boolean isSameType(IType t) {
-		if (t == this)
-			return true;
-		if (t instanceof ITypedef) {
-			IType temp = getType();
-			if (temp != null)
-				return temp.isSameType(((ITypedef) t).getType());
-			return false;
-		}
-
-		IType temp;
-		temp = getType();
-		if (temp != null)
-			return temp.isSameType(t);
-		return false;
-	}
+        if( t == this )
+            return true;
+        if( t instanceof ITypedef ) {
+            IType temp = getType();
+            if( temp != null )
+                try {
+                    return temp.isSameType( ((ITypedef)t).getType());
+                } catch (DOMException e) {}
+            return false;
+        }
+            
+        IType temp;
+        temp = getType();
+        if( temp != null )
+            return temp.isSameType( t );
+        return false;
+    }
     
     @Override
 	public Object clone(){
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPNodeFactory.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPNodeFactory.java	Wed Aug 05 17:35:39 2009 -0500
@@ -7,7 +7,6 @@
  *
  * Contributors:
  *     Mike Kucera (IBM) - initial API and implementation
- *     Markus Schorn (Wind River Systems)
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.dom.parser.cpp;
 
@@ -104,14 +103,12 @@
 import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTPointer;
 import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTPointerToMember;
 import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTSimpleDeclSpecifier;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.internal.core.dom.parser.NodeFactory;
 
 
 /**
  * Abstract factory implementation that creates C++ AST nodes.
  */
-public class CPPNodeFactory extends NodeFactory implements ICPPNodeFactory {
+public class CPPNodeFactory implements ICPPNodeFactory {
 
 	private static final CPPNodeFactory DEFAULT_INSTANCE = new CPPNodeFactory();
 	
@@ -119,16 +116,9 @@
 		return DEFAULT_INSTANCE;
 	}
 	
+	
 	public ICPPASTTranslationUnit newTranslationUnit() {
-		return newTranslationUnit(null);
-	}
-	
-	public ICPPASTTranslationUnit newTranslationUnit(IScanner scanner) {
 		CPPASTTranslationUnit tu = new CPPASTTranslationUnit();
-		
-		if (scanner != null) {
-			tu.setLocationResolver(scanner.getLocationResolver());
-		}
 		tu.setASTNodeFactory(this);
 		return tu;
 	}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPParameter.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPParameter.java	Wed Aug 05 17:35:39 2009 -0500
@@ -16,7 +16,6 @@
 import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
 import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
 import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
-import org.eclipse.cdt.core.dom.ast.IASTFunctionDeclarator;
 import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition;
 import org.eclipse.cdt.core.dom.ast.IASTInitializer;
 import org.eclipse.cdt.core.dom.ast.IASTName;
@@ -31,7 +30,6 @@
 import org.eclipse.cdt.core.parser.util.CharArrayUtils;
 import org.eclipse.cdt.internal.core.dom.Linkage;
 import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
-import org.eclipse.cdt.internal.core.dom.parser.ASTQueries;
 import org.eclipse.cdt.internal.core.dom.parser.ProblemBinding;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil;
@@ -40,7 +38,7 @@
 /**
  * Binding for a c++ function parameter
  */
-public class CPPParameter extends PlatformObject implements ICPPParameter, ICPPInternalBinding, ICPPTwoPhaseBinding {
+public class CPPParameter extends PlatformObject implements ICPPParameter, ICPPInternalBinding {
     public static class CPPParameterProblem extends ProblemBinding implements ICPPParameter {
         public CPPParameterProblem(IASTNode node, int id, char[] arg) {
             super(node, id, arg);
@@ -85,17 +83,14 @@
 
 	private IType type = null;
 	private IASTName[] declarations = null;
-	private int fPosition;
 	
 	
-	public CPPParameter(IASTName name, int pos) {
+	public CPPParameter(IASTName name) {
 		this.declarations = new IASTName[] { name };
-		fPosition= pos;
 	}
 	
-	public CPPParameter(IType type, int pos) {
+	public CPPParameter(IType type) {
 	    this.type = type;
-	    fPosition= pos;
 	}
 	
     /* (non-Javadoc)
@@ -306,28 +301,4 @@
 	public IValue getInitialValue() {
 		return null;
 	}
-
-	public IBinding resolveFinalBinding(CPPASTNameBase name) {
-		// check if the binding has been updated.
-		IBinding current= name.getPreBinding();
-		if (current != this)
-			return current;
-		
-		IASTNode node= getPrimaryDeclaration();
-		while (node != null && !(node instanceof IASTFunctionDeclarator)) {
-			node= node.getParent();
-		}
-		if (node instanceof IASTFunctionDeclarator) {
-			IASTName funcName= ASTQueries.findInnermostDeclarator((IASTFunctionDeclarator) node).getName();
-			IBinding b= funcName.resolvePreBinding();
-			if (b instanceof ICPPInternalFunction) {
-				return ((ICPPInternalFunction) b).resolveParameter(this);
-			}
-		}
-		return this;
-	}
-
-	public int getParameterPosition() {
-		return fPosition;
-	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPParameterSpecialization.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPParameterSpecialization.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2008 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -45,15 +45,12 @@
 	}
 	
 	@Override
-	public IType specializeType(IType type) {
+	public IType specializeType(IType type) throws DOMException {
 		IBinding owner= getOwner();
 		if (owner != null) {
-			try {
-				owner= owner.getOwner();
-				if (owner instanceof ICPPClassSpecialization) {
-					return CPPTemplates.instantiateType(type, getTemplateParameterMap(), (ICPPClassSpecialization) owner);
-				}
-			} catch (DOMException e) {
+			owner= owner.getOwner();
+			if (owner instanceof ICPPClassSpecialization) {
+				return CPPTemplates.instantiateType(type, getTemplateParameterMap(), (ICPPClassSpecialization) owner);
 			}
 		}
 		return CPPTemplates.instantiateType(type, getTemplateParameterMap(), null);
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPPointerType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPPointerType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -12,6 +12,7 @@
 package org.eclipse.cdt.internal.core.dom.parser.cpp;
 
 import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IASTPointer;
 import org.eclipse.cdt.core.dom.ast.IPointerType;
 import org.eclipse.cdt.core.dom.ast.IType;
@@ -70,7 +71,10 @@
 	    
 	    IPointerType pt = (IPointerType) o;
 	    if (isConst == pt.isConst() && isVolatile == pt.isVolatile()) {
-			return type.isSameType(pt.getType());
+			try {
+				return type.isSameType(pt.getType());
+			} catch (DOMException e) {
+			}
 	    }
 	    return false;
 	}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPQualifierType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPQualifierType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -6,18 +6,22 @@
  *  http://www.eclipse.org/legal/epl-v10.html
  * 
  *  Contributors:
- *     Andrew Niefer (IBM Corporation) - initial API and implementation
+ *     IBM Corporation - initial API and implementation
  *     Markus Schorn (Wind River Systems)
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.dom.parser.cpp;
 
 import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IQualifierType;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.core.dom.ast.ITypedef;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
 import org.eclipse.cdt.internal.core.index.IIndexType;
 
+/**
+ * @author aniefer
+ */
 public class CPPQualifierType implements IQualifierType, ITypeContainer {
     private final boolean isConst;
     private final boolean isVolatile;
@@ -36,8 +40,11 @@
 			return false;
 
 		IQualifierType pt = (IQualifierType) o;
-		if (isConst() == pt.isConst() && isVolatile() == pt.isVolatile())
-			return type.isSameType(pt.getType());
+		try {
+			if (isConst() == pt.isConst() && isVolatile() == pt.isVolatile())
+				return type.isSameType(pt.getType());
+		} catch (DOMException e) {
+		}
 		return false;
 	}
     
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPReferenceType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPReferenceType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,21 +1,29 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2008 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *     Andrew Niefer (IBM Corporation) - initial API and implementation
+ *     IBM Corporation - initial API and implementation
  *******************************************************************************/
+
+/*
+ * Created on Dec 15, 2004
+ */
 package org.eclipse.cdt.internal.core.dom.parser.cpp;
 
 import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.core.dom.ast.ITypedef;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPReferenceType;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
 
+/**
+ * @author aniefer
+ */
 public class CPPReferenceType implements ICPPReferenceType, ITypeContainer {
     IType type = null;
     
@@ -42,7 +50,11 @@
             return (obj == null);
         
         if (obj instanceof ICPPReferenceType) {
-            return type.isSameType(((ICPPReferenceType) obj).getType());
+            try {
+                return type.isSameType(((ICPPReferenceType) obj).getType());
+            } catch (DOMException e) {
+                return false;
+            }
         }
     	return false;
     }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSpecialization.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSpecialization.java	Wed Aug 05 17:35:39 2009 -0500
@@ -51,7 +51,7 @@
 		this.argumentMap = argumentMap;
 	}
 
-	public IType specializeType(IType type) {
+	public IType specializeType(IType type) throws DOMException {
 		if (owner instanceof ICPPClassSpecialization) {
 			return CPPTemplates.instantiateType(type, getTemplateParameterMap(), (ICPPClassSpecialization) owner);
 		} else {
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTypeParameter.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTypeParameter.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTypedef.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTypedef.java	Wed Aug 05 17:35:39 2009 -0500
@@ -65,10 +65,14 @@
         if (o == this)
             return true;
 	    if (o instanceof ITypedef) {
-            IType t = getType();
-			if (t != null)
-			    return t.isSameType(((ITypedef)o).getType());
-			return false;
+            try {
+                IType t = getType();
+                if (t != null)
+                    return t.isSameType(((ITypedef)o).getType());
+                return false;
+            } catch (DOMException e) {
+                return false;
+            }
 	    }
 
 	    IType t = getType();
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTypedefSpecialization.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTypedefSpecialization.java	Wed Aug 05 17:35:39 2009 -0500
@@ -33,7 +33,7 @@
 	final static class RecursionResolvingBinding extends ProblemBinding {
 		public RecursionResolvingBinding(IASTNode node, char[] arg) {
 			super(node, IProblemBinding.SEMANTIC_RECURSION_IN_LOOKUP, arg);
-			Assert.isTrue(CPPASTNameBase.sAllowRecursionBindings, getMessage());
+			Assert.isTrue(CPPASTName.sAllowRecursionBindings, getMessage());
 		}
 	}
 	
@@ -54,7 +54,7 @@
     /* (non-Javadoc)
      * @see org.eclipse.cdt.core.dom.ast.ITypedef#getType()
      */
-    public IType getType() {
+    public IType getType() throws DOMException {
         if (type == null) {
         	try {
 	        	if (++fResolutionDepth > MAX_RESOLUTION_DEPTH) {
@@ -66,11 +66,7 @@
 		            if (type instanceof ITypedef && type instanceof ICPPSpecialization) {
 		            	ITypedef td= (ITypedef) type;
 		            	if (CharArrayUtils.equals(td.getNameCharArray(), getNameCharArray())) {
-			            	IBinding owner= getOwner();
-							try {
-								owner = ((ICPPSpecialization) type).getOwner();
-							} catch (DOMException e) {
-							}
+			            	IBinding owner= ((ICPPSpecialization) type).getOwner();
 			            	if (owner instanceof IType) {
 			            		if (((IType) owner).isSameType((ICPPClassType) getOwner())) {
 					        		type = new RecursionResolvingBinding(getDefinition(), getNameCharArray());
@@ -112,15 +108,23 @@
         if (o == this)
             return true;
 	    if (o instanceof ITypedef) {
-            IType t = getType();
-			if (t != null)
-			    return t.isSameType(((ITypedef) o).getType());
-			return false;
+            try {
+                IType t = getType();
+                if (t != null)
+                    return t.isSameType(((ITypedef) o).getType());
+                return false;
+            } catch (DOMException e) {
+                return false;
+            }
 	    }
 	        
-        IType t = getType();
-		if (t != null)
-		    return t.isSameType(o);
+        try {
+		    IType t = getType();
+		    if (t != null)
+		        return t.isSameType(o);
+        } catch (DOMException e) {
+            return false;
+        }
 	    return false;
     }
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java	Wed Aug 05 17:35:39 2009 -0500
@@ -32,6 +32,7 @@
 import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
 import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
 import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
+import org.eclipse.cdt.core.dom.ast.IASTEnumerationSpecifier;
 import org.eclipse.cdt.core.dom.ast.IASTExpression;
 import org.eclipse.cdt.core.dom.ast.IASTFieldDeclarator;
 import org.eclipse.cdt.core.dom.ast.IASTFunctionCallExpression;
@@ -126,12 +127,12 @@
 import org.eclipse.cdt.internal.core.dom.parser.ASTInternal;
 import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
 import org.eclipse.cdt.internal.core.dom.parser.ASTQueries;
+import org.eclipse.cdt.internal.core.dom.parser.ASTTranslationUnit;
 import org.eclipse.cdt.internal.core.dom.parser.AbstractGNUSourceCodeParser;
 import org.eclipse.cdt.internal.core.dom.parser.BacktrackException;
 import org.eclipse.cdt.internal.core.dom.parser.DeclarationOptions;
 import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguousExpression;
 import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguousStatement;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor;
 
 /**
  * This is our implementation of the IParser interface, serving as a parser for
@@ -1674,27 +1675,61 @@
         final int firstOffset= LA(1).getOffset();
         int endOffset= firstOffset;
         boolean insertSemi= false;
-
-        IASTDeclSpecifier declSpec= null;
+        boolean parseDtors= true;
+
+        ICPPASTDeclSpecifier declSpec= null;
         IASTDeclarator dtor= null;
-        IASTDeclSpecifier altDeclSpec= null;
-        IASTDeclarator altDtor= null;
         IToken markBeforDtor= null;
         try {
-        	Decl decl= declSpecifierSequence_initDeclarator(declOption, true);
-        	markBeforDtor= decl.fDtorToken1;
-        	declSpec= decl.fDeclSpec1;
-        	dtor= decl.fDtor1;
-        	altDeclSpec= decl.fDeclSpec2;
-        	altDtor= decl.fDtor2;
+            declSpec = declSpecifierSeq(declOption);
+            final int lt1= LTcatchEOF(1);
+            switch(lt1) {
+            case 0: // eof
+            case IToken.tEOC:
+            case IToken.tSEMI:
+            	if (lt1 != IToken.tEOC && !validWithoutDtor(declOption, declSpec)) 
+                	throwBacktrack(LA(1));
+            	
+            	parseDtors= false;
+            	insertSemi= lt1==0;
+            	if (lt1 == IToken.tSEMI)
+            		endOffset= consume().getEndOffset();
+            	else 
+            		endOffset= calculateEndOffset(declSpec);
+            	break;
+
+            case IToken.tCOMMA:
+            	throwBacktrack(LA(1));
+            	break;
+            default:
+            	markBeforDtor= mark();
+            	try {
+            		dtor= initDeclarator(declSpec, declOption);
+            	} catch (BacktrackException e) {
+            		if (!validWithoutDtor(declOption, declSpec)) 
+                    	throw e;
+            		backup(markBeforDtor);
+            	} catch (EndOfFileException e) {
+            		if (!validWithoutDtor(declOption, declSpec)) 
+                    	throw e;
+            		backup(markBeforDtor);
+            	}
+            	break;
+            }
         } catch (FoundAggregateInitializer lie) {
-        	declSpec= lie.fDeclSpec;
+        	if (declSpec == null)
+        		declSpec= (ICPPASTDeclSpecifier) lie.fDeclSpec;
         	// scalability: don't keep references to tokens, initializer may be large
         	declarationMark= null;
+        	markBeforDtor= null;
         	dtor= addInitializer(lie, declOption);
+        } catch (FoundDeclaratorException e) {
+        	declSpec= (ICPPASTDeclSpecifier) e.declSpec;
+        	dtor= e.declarator;
+            backup(e.currToken);
         } catch (BacktrackException e) {
         	IASTNode node= e.getNodeBeforeProblem();
-        	if (node instanceof IASTDeclSpecifier && specifiesCompound((IASTDeclSpecifier) node)) {
+        	if (node instanceof ICPPASTDeclSpecifier && validWithoutDtor(declOption, (ICPPASTDeclSpecifier) node)) {
                 IASTSimpleDeclaration d= nodeFactory.newSimpleDeclaration((IASTDeclSpecifier) node);
                 setRange(d, node);
         		throwBacktrack(e.getProblem(), d);
@@ -1703,7 +1738,7 @@
         }
         
         IASTDeclarator[] declarators= IASTDeclarator.EMPTY_DECLARATOR_ARRAY;
-        if (dtor != null) {
+        if (parseDtors) {
         	declarators= new IASTDeclarator[]{dtor};
         	while (LTcatchEOF(1) == IToken.tCOMMA) {
         		consume();
@@ -1718,62 +1753,50 @@
         		declarators = (IASTDeclarator[]) ArrayUtil.append(IASTDeclarator.class, declarators, dtor);
         	}
         	declarators = (IASTDeclarator[]) ArrayUtil.removeNulls(IASTDeclarator.class, declarators);
+        
+        	final int lt1= LTcatchEOF(1);
+        	switch (lt1) {
+        	case IToken.tEOC:
+        		endOffset= figureEndOffset(declSpec, declarators);
+        		break;
+        	case IToken.tSEMI:
+        		endOffset= consume().getEndOffset();
+        		break;
+        	case IToken.t_try:
+        	case IToken.tCOLON:
+        	case IToken.tLBRACE:
+        		return functionDefinition(firstOffset, declSpec, declarators);
+        	default:	
+        		if (declOption != DeclarationOptions.LOCAL) {
+    				insertSemi= true;
+        			if (validWithoutDtor(declOption, declSpec)) {
+        				if (markBeforDtor != null && !isOnSameLine(calculateEndOffset(declSpec), markBeforDtor.getOffset())) {
+        					backup(markBeforDtor);
+        					declarators= IASTDeclarator.EMPTY_DECLARATOR_ARRAY;
+        					endOffset= calculateEndOffset(declSpec);
+        					break;
+        				}
+        			}
+        			endOffset= figureEndOffset(declSpec, declarators);
+        			if (lt1 == 0 || !isOnSameLine(endOffset, LA(1).getOffset())) {
+        				break;
+        			}
+        			if (declarators.length == 1 && declarators[0] instanceof IASTFunctionDeclarator) {
+        				break;
+        			}
+        		}
+        		throwBacktrack(LA(1));
+        	}
         }
 
-        final int lt1= LTcatchEOF(1);
-        switch (lt1) {
-        case IToken.tEOC:
-        	endOffset= figureEndOffset(declSpec, declarators);
-        	break;
-        case IToken.tSEMI:
-        	endOffset= consume().getEndOffset();
-        	break;
-        case IToken.t_try:
-        case IToken.tCOLON:
-        case IToken.tLBRACE:
-        	return functionDefinition(firstOffset, declSpec, declarators);
-        default:	
-        	if (declOption != DeclarationOptions.LOCAL) {
-        		insertSemi= true;
-        		if (specifiesCompound(declSpec) && markBeforDtor != null && !isOnSameLine(calculateEndOffset(declSpec), markBeforDtor.getOffset())) {
-        			backup(markBeforDtor);
-        			declarators= IASTDeclarator.EMPTY_DECLARATOR_ARRAY;
-        			endOffset= calculateEndOffset(declSpec);
-        			break;
-        		}
-        		endOffset= figureEndOffset(declSpec, declarators);
-        		if (lt1 == 0 || !isOnSameLine(endOffset, LA(1).getOffset())) {
-        			break;
-        		}
-        		if (declarators.length == 1 && declarators[0] instanceof IASTFunctionDeclarator) {
-        			break;
-        		}
-        	}
-        	throwBacktrack(LA(1));
+        // no function body
+        IASTSimpleDeclaration simpleDeclaration= nodeFactory.newSimpleDeclaration(declSpec);
+        for (IASTDeclarator declarator : declarators) {
+            simpleDeclaration.addDeclarator(declarator); 
         }
         
-        // no function body
+        ((ASTNode) simpleDeclaration).setOffsetAndLength(firstOffset, endOffset-firstOffset);
         
-        final boolean isAmbiguous= altDeclSpec != null && altDtor != null && declarators.length == 1;
-        IASTSimpleDeclaration simpleDeclaration;
-        if (isAmbiguous) {
-        	// class C { C(T); };  // if T is a type this is a constructor, so
-        	// prefer the empty declspec, it shall be used if both variants show no problems
-        	simpleDeclaration= nodeFactory.newSimpleDeclaration(altDeclSpec);
-        	simpleDeclaration.addDeclarator(altDtor);
-        } else { 
-        	simpleDeclaration= nodeFactory.newSimpleDeclaration(declSpec);
-        	for (IASTDeclarator declarator : declarators) {
-        		simpleDeclaration.addDeclarator(declarator); 
-        	}
-        }
-        
-        setRange(simpleDeclaration, firstOffset, endOffset);
-		if (isAmbiguous) {
-			simpleDeclaration = new CPPASTAmbiguousSimpleDeclaration(simpleDeclaration, declSpec, dtor);
-			setRange(simpleDeclaration, firstOffset, endOffset);
-		}
-
         if (insertSemi) {
     		IASTProblem problem= createProblem(IProblem.SYNTAX_ERROR, endOffset, 0);
     		throwBacktrack(problem, simpleDeclaration);
@@ -1781,6 +1804,17 @@
         return simpleDeclaration;
     }
 
+	private boolean validWithoutDtor(DeclarationOptions option, ICPPASTDeclSpecifier declSpec) {
+		if (declSpec instanceof IASTCompositeTypeSpecifier)
+			return true;
+		if (declSpec instanceof IASTElaboratedTypeSpecifier)
+			return true;
+		if (declSpec instanceof IASTEnumerationSpecifier)
+			return true;
+		
+		return option == DeclarationOptions.FUNCTION_STYLE_ASM;
+	}
+
 	private IASTDeclaration functionDefinition(final int firstOffset, IASTDeclSpecifier declSpec,
 			IASTDeclarator[] dtors) throws EndOfFileException, BacktrackException {
 		
@@ -1906,26 +1940,28 @@
         IASTDeclSpecifier declSpec= null;
         IASTDeclarator declarator;
         try {
-        	Decl decl= declSpecifierSequence_initDeclarator(DeclarationOptions.PARAMETER, false);
-        	declSpec= decl.fDeclSpec1;
-        	declarator= decl.fDtor1;
+        	declSpec= declSpecifierSeq(DeclarationOptions.PARAMETER);
+        	declarator= initDeclarator(declSpec, DeclarationOptions.PARAMETER);
+        } catch (FoundDeclaratorException e) {
+        	declSpec= e.declSpec;
+        	declarator= e.declarator;
+        	backup(e.currToken);
         } catch (FoundAggregateInitializer lie) {
-        	declSpec= lie.fDeclSpec;
+        	if (declSpec == null)
+        		declSpec= lie.fDeclSpec;
         	declarator= addInitializer(lie, DeclarationOptions.PARAMETER);
         }
 
         final ICPPASTParameterDeclaration parm = nodeFactory.newParameterDeclaration(declSpec, declarator);
         final int endOffset = figureEndOffset(declSpec, declarator);
-        setRange(parm, startOffset, endOffset);
+        ((ASTNode) parm).setOffsetAndLength(startOffset, endOffset - startOffset);
         return parm;
     }
 
     
 	private final static int INLINE=0x1, CONST=0x2, RESTRICT=0x4, VOLATILE=0x8, 
-    	SHORT=0x10,	UNSIGNED= 0x20, SIGNED=0x40, COMPLEX=0x80, IMAGINARY=0x100,
-    	VIRTUAL=0x200, EXPLICIT=0x400, FRIEND=0x800;
-	private static final int FORBID_IN_EMPTY_DECLSPEC = 
-		CONST | RESTRICT | VOLATILE | SHORT | UNSIGNED | SIGNED | COMPLEX | IMAGINARY | FRIEND;
+    SHORT=0x10,	UNSIGNED= 0x20, SIGNED=0x40, COMPLEX=0x80, IMAGINARY=0x100,
+    VIRTUAL=0x200, EXPLICIT=0x400, FRIEND=0x800;
 
 
     /**
@@ -1941,318 +1977,343 @@
      * 		("typename")? name | 
      * 		{ "class" | "struct" | "union" } classSpecifier | 
      * 		{"enum"} enumSpecifier
+     * @throws FoundAggregateInitializer 
      */
     @Override
-	protected Decl declSpecifierSeq(final DeclarationOptions option) throws BacktrackException, EndOfFileException {
-    	int storageClass = IASTDeclSpecifier.sc_unspecified;
+	protected ICPPASTDeclSpecifier declSpecifierSeq(final DeclarationOptions option)
+    		throws BacktrackException, EndOfFileException, FoundDeclaratorException, FoundAggregateInitializer {
+        int storageClass = IASTDeclSpecifier.sc_unspecified;
         int simpleType = IASTSimpleDeclSpecifier.t_unspecified;
         int options= 0;
         int isLong= 0;
 
-        IToken returnToken= null;
-    	ICPPASTDeclSpecifier result= null;
-    	ICPPASTDeclSpecifier altResult= null;
-        try {
-        	IASTName identifier= null;
-        	IASTExpression typeofExpression= null;
-        	IASTProblem problem= null;
-
-        	boolean isTypename = false;
-        	boolean encounteredRawType= false;
-        	boolean encounteredTypename= false;
-
-        	final int offset = LA(1).getOffset();
-        	int endOffset= offset;
-
-        	declSpecifiers: for (;;) {
-        		final int lt1= LTcatchEOF(1);
-        		switch (lt1) {
-        		case 0: // encountered eof
-        			break declSpecifiers;
-        			// storage class specifiers
-        		case IToken.t_auto:
-        			storageClass = IASTDeclSpecifier.sc_auto;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_register:
-        			storageClass = IASTDeclSpecifier.sc_register;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_static:
-        			storageClass = IASTDeclSpecifier.sc_static;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_extern:
-        			storageClass = IASTDeclSpecifier.sc_extern;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_mutable:
-        			storageClass = ICPPASTDeclSpecifier.sc_mutable;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_typedef:
-        			storageClass = IASTDeclSpecifier.sc_typedef;
-        			endOffset= consume().getEndOffset();
-        			break;
-        			// function specifiers
-        		case IToken.t_inline:
-        			options |= INLINE;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_virtual:
-        			options |= VIRTUAL;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_explicit:
-        			options |= EXPLICIT;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_friend:
-        			options |= FRIEND;
-        			endOffset= consume().getEndOffset();
-        			break;
-        			// type specifier
-        		case IToken.t_const:
-        			options |= CONST;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_volatile:
-        			options |= VOLATILE;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_restrict:
-        			options |= RESTRICT;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_signed:
-        			if (encounteredTypename)
-        				break declSpecifiers;
-        			options |= SIGNED;
-        			encounteredRawType= true;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_unsigned:
-        			if (encounteredTypename)
-        				break declSpecifiers;
-        			options |= UNSIGNED;
-        			encounteredRawType= true;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_short:
-        			if (encounteredTypename)
-        				break declSpecifiers;
-        			options |= SHORT;
-        			encounteredRawType= true;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_long:
-        			if (encounteredTypename)
-        				break declSpecifiers;
-        			isLong++;
-        			encounteredRawType= true;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t__Complex:
-        			if (encounteredTypename)
-        				break declSpecifiers;
-        			options |= COMPLEX;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t__Imaginary:
-        			if (encounteredTypename)
-        				break declSpecifiers;
-        			options |= IMAGINARY;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_char:
-        			if (encounteredTypename)
-        				break declSpecifiers;
-        			simpleType = IASTSimpleDeclSpecifier.t_char;
-        			encounteredRawType= true;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_wchar_t:
-        			if (encounteredTypename)
-        				break declSpecifiers;
-        			simpleType = ICPPASTSimpleDeclSpecifier.t_wchar_t;
-        			encounteredRawType= true;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_bool:
-        			if (encounteredTypename)
-        				break declSpecifiers;
-        			simpleType = ICPPASTSimpleDeclSpecifier.t_bool;
-        			encounteredRawType= true;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_int:
-        			if (encounteredTypename)
-        				break declSpecifiers;
-        			simpleType = IASTSimpleDeclSpecifier.t_int;
-        			encounteredRawType= true;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_float:
-        			if (encounteredTypename)
-        				break declSpecifiers;
-        			simpleType = IASTSimpleDeclSpecifier.t_float;
-        			encounteredRawType= true;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_double:
-        			if (encounteredTypename)
-        				break declSpecifiers;
-        			simpleType = IASTSimpleDeclSpecifier.t_double;
-        			encounteredRawType= true;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_void:
-        			if (encounteredTypename)
-        				break declSpecifiers;
-        			simpleType = IASTSimpleDeclSpecifier.t_void;
-        			encounteredRawType= true;
-        			endOffset= consume().getEndOffset();
-        			break;
-        		case IToken.t_typename:
-        			if (encounteredTypename || encounteredRawType)
-        				break declSpecifiers;
-        			consume();
-        			identifier= qualifiedName();
-        			endOffset= calculateEndOffset(identifier);
-        			isTypename = true;
-        			encounteredTypename= true;
-        			break;
-        		case IToken.tBITCOMPLEMENT:
-        		case IToken.tCOLONCOLON:
-        		case IToken.tIDENTIFIER:
-        		case IToken.tCOMPLETION:
-        			if (encounteredRawType || encounteredTypename)
-        				break declSpecifiers;
-
-        			if (option.fAllowEmptySpecifier && LT(1) != IToken.tCOMPLETION) {
-        				if ((options & FORBID_IN_EMPTY_DECLSPEC) == 0 && storageClass == IASTDeclSpecifier.sc_unspecified) {
-        					altResult= buildSimpleDeclSpec(storageClass, simpleType, options, isLong, typeofExpression, offset, endOffset);
-        					returnToken= mark();
-        				}
-        			}
-
-        			identifier= qualifiedName();
-        			if (identifier.getLookupKey().length == 0 && LT(1) != IToken.tEOC)
-        				throwBacktrack(LA(1));
-
-        			endOffset= calculateEndOffset(identifier);
-        			encounteredTypename= true;
-        			break;
-        		case IToken.t_class:
-        		case IToken.t_struct:
-        		case IToken.t_union:
-        			if (encounteredTypename || encounteredRawType)
-        				break declSpecifiers;
-        			try {
-        				result= classSpecifier();
-        			} catch (BacktrackException bt) {
-        				result= elaboratedTypeSpecifier();
-        			}
-        			endOffset= calculateEndOffset(result);
-        			encounteredTypename= true;
-        			break;
-
-        		case IToken.t_enum:
-        			if (encounteredTypename || encounteredRawType)
-        				break declSpecifiers;
-        			try {
-        				result= (ICPPASTDeclSpecifier) enumSpecifier();
-        			} catch (BacktrackException bt) {
-        				if (bt.getNodeBeforeProblem() instanceof ICPPASTDeclSpecifier) {
-        					result= (ICPPASTDeclSpecifier) bt.getNodeBeforeProblem();
-        					problem= bt.getProblem();
-        					break declSpecifiers;
-        				} else {
-        					result= elaboratedTypeSpecifier();
-        				}
-        			}
-        			endOffset= calculateEndOffset(result);
-        			encounteredTypename= true;
-        			break;
-
-        		case IGCCToken.t__attribute__: // if __attribute__ is after the declSpec
-        		if (!supportAttributeSpecifiers)
-        			throwBacktrack(LA(1));
-        		__attribute_decl_seq(true, false);
-        		break;
-        		case IGCCToken.t__declspec: // __declspec precedes the identifier
-        		if (identifier != null || !supportDeclspecSpecifiers)
-        			throwBacktrack(LA(1));
-        		__attribute_decl_seq(false, true);
-        		break;
-
-        		case IGCCToken.t_typeof:
-        			if (encounteredRawType || encounteredTypename)
-        				throwBacktrack(LA(1));
-
-        			final boolean wasInBinary= inBinaryExpression;
-        			try {
-        				inBinaryExpression= false;
-        				typeofExpression= parseTypeidInParenthesisOrUnaryExpression(false, consume().getOffset(), 
-        						IGNUASTTypeIdExpression.op_typeof, IGNUASTUnaryExpression.op_typeof);
-        			} finally {
-        				inBinaryExpression= wasInBinary;
-        			}
-
-        			encounteredTypename= true;
-        			endOffset= calculateEndOffset(typeofExpression);
-        			break;
-
-        		default:
-        			if (lt1 >= IExtensionToken.t__otherDeclSpecModifierFirst && lt1 <= IExtensionToken.t__otherDeclSpecModifierLast) {
-        				handleOtherDeclSpecModifier();
-        				endOffset= LA(1).getOffset();
-        				break;
-        			}
-        			break declSpecifiers;
-        		}
-
-        		if (encounteredRawType && encounteredTypename)
-        			throwBacktrack(LA(1));
-        	}
-
-        	// check for empty specification
-        	if (!encounteredRawType && !encounteredTypename && LT(1) != IToken.tEOC && !option.fAllowEmptySpecifier) {
-        		throwBacktrack(LA(1));
-        	}
-
-        	if (result != null) {
-        		configureDeclSpec(result, storageClass, options);
-        		// cannot store restrict in the cpp-nodes.
-        		//            if ((options & RESTRICT) != 0) {
-        		//            }
-        		setRange(result, offset, endOffset);
-        		if (problem != null) {
-        			throwBacktrack(problem, result);
-        		}
-        	} else if (identifier != null) {
-        		result= buildNamedTypeSpecifier(identifier, isTypename, storageClass, options, offset, endOffset);
-        	} else {
-        		result= buildSimpleDeclSpec(storageClass, simpleType, options, isLong, typeofExpression, offset, endOffset);
-        	}
-        } catch (BacktrackException e) {
-        	if (returnToken != null) {
-        		backup(returnToken);
-        		result= altResult;
-        		altResult= null;
-        		returnToken= null;
-        	} else {
-        		throw e;
-        	}
+        IASTName identifier= null;
+        ICPPASTDeclSpecifier result= null;
+        IASTExpression typeofExpression= null;
+        IASTProblem problem= null;
+
+        boolean isTypename = false;
+        boolean encounteredRawType= false;
+        boolean encounteredTypename= false;
+
+        final int offset = LA(1).getOffset();
+        int endOffset= offset;
+
+        declSpecifiers: for (;;) {
+        	final int lt1= LTcatchEOF(1);
+            switch (lt1) {
+            case 0: // encountered eof
+            	break declSpecifiers;
+            // storage class specifiers
+            case IToken.t_auto:
+                storageClass = IASTDeclSpecifier.sc_auto;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_register:
+                storageClass = IASTDeclSpecifier.sc_register;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_static:
+                storageClass = IASTDeclSpecifier.sc_static;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_extern:
+                storageClass = IASTDeclSpecifier.sc_extern;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_mutable:
+                storageClass = ICPPASTDeclSpecifier.sc_mutable;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_typedef:
+                storageClass = IASTDeclSpecifier.sc_typedef;
+                endOffset= consume().getEndOffset();
+                break;
+            // function specifiers
+            case IToken.t_inline:
+            	options |= INLINE;
+            	endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_virtual:
+                options |= VIRTUAL;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_explicit:
+                options |= EXPLICIT;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_friend:
+                options |= FRIEND;
+                endOffset= consume().getEndOffset();
+                break;
+            // type specifier
+            case IToken.t_const:
+                options |= CONST;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_volatile:
+                options |= VOLATILE;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_restrict:
+                options |= RESTRICT;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_signed:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+                options |= SIGNED;
+                encounteredRawType= true;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_unsigned:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+                options |= UNSIGNED;
+                encounteredRawType= true;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_short:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+                options |= SHORT;
+                encounteredRawType= true;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_long:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+            	isLong++;
+                encounteredRawType= true;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t__Complex:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+                options |= COMPLEX;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t__Imaginary:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+            	options |= IMAGINARY;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_char:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+                simpleType = IASTSimpleDeclSpecifier.t_char;
+                encounteredRawType= true;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_wchar_t:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+                simpleType = ICPPASTSimpleDeclSpecifier.t_wchar_t;
+                encounteredRawType= true;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_bool:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+                simpleType = ICPPASTSimpleDeclSpecifier.t_bool;
+                encounteredRawType= true;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_int:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+                simpleType = IASTSimpleDeclSpecifier.t_int;
+                encounteredRawType= true;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_float:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+                simpleType = IASTSimpleDeclSpecifier.t_float;
+                encounteredRawType= true;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_double:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+                simpleType = IASTSimpleDeclSpecifier.t_double;
+                encounteredRawType= true;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_void:
+            	if (encounteredTypename)
+            		break declSpecifiers;
+                simpleType = IASTSimpleDeclSpecifier.t_void;
+                encounteredRawType= true;
+                endOffset= consume().getEndOffset();
+                break;
+            case IToken.t_typename:
+            	if (encounteredTypename || encounteredRawType)
+            		break declSpecifiers;
+            	consume();
+                identifier= qualifiedName();
+                endOffset= calculateEndOffset(identifier);
+                isTypename = true;
+                encounteredTypename= true;
+                break;
+            case IToken.tBITCOMPLEMENT:
+            case IToken.tCOLONCOLON:
+            case IToken.tIDENTIFIER:
+            case IToken.tCOMPLETION:
+                if (encounteredRawType || encounteredTypename)
+                    break declSpecifiers;
+
+                try {
+                	if (option.fAllowEmptySpecifier && LT(1) != IToken.tCOMPLETION) {
+                		lookAheadForDeclarator(option);
+                	}
+                } catch (FoundAggregateInitializer e) {
+                	e.fDeclSpec= buildSimpleDeclSpec(storageClass, simpleType, options, isLong, typeofExpression, offset, endOffset);
+                	throw e;
+                }catch (FoundDeclaratorException e) {
+                	if (e.currToken.getType() == IToken.tEOC || option == DeclarationOptions.FUNCTION_STYLE_ASM 
+                			|| canBeConstructorDestructorOrConversion(option, storageClass, options, e.declarator)) {
+                		e.declSpec= buildSimpleDeclSpec(storageClass, simpleType, options, isLong, typeofExpression, offset, endOffset);
+                		throw e;
+                	}
+                }
+
+                identifier= qualifiedName();
+                if (identifier.getLookupKey().length == 0 && LT(1) != IToken.tEOC)
+                	throwBacktrack(LA(1));
+                
+                endOffset= calculateEndOffset(identifier);
+                encounteredTypename= true;
+                break;
+            case IToken.t_class:
+            case IToken.t_struct:
+            case IToken.t_union:
+                if (encounteredTypename || encounteredRawType)
+                    break declSpecifiers;
+                try {
+                    result= classSpecifier();
+                } catch (BacktrackException bt) {
+                    result= elaboratedTypeSpecifier();
+                }
+                endOffset= calculateEndOffset(result);
+                encounteredTypename= true;
+                break;
+
+            case IToken.t_enum:
+                if (encounteredTypename || encounteredRawType)
+                    break declSpecifiers;
+                try {
+                    result= (ICPPASTDeclSpecifier) enumSpecifier();
+                } catch (BacktrackException bt) {
+                	if (bt.getNodeBeforeProblem() instanceof ICPPASTDeclSpecifier) {
+                		result= (ICPPASTDeclSpecifier) bt.getNodeBeforeProblem();
+                		problem= bt.getProblem();
+                		break declSpecifiers;
+                	} else {
+                		result= elaboratedTypeSpecifier();
+                	}
+                }
+                endOffset= calculateEndOffset(result);
+                encounteredTypename= true;
+                break;
+
+            case IGCCToken.t__attribute__: // if __attribute__ is after the declSpec
+            	if (!supportAttributeSpecifiers)
+            		throwBacktrack(LA(1));
+            	__attribute_decl_seq(true, false);
+            	break;
+            case IGCCToken.t__declspec: // __declspec precedes the identifier
+            	if (identifier != null || !supportDeclspecSpecifiers)
+            		throwBacktrack(LA(1));
+            	__attribute_decl_seq(false, true);
+            	break;
+            	
+            case IGCCToken.t_typeof:
+            	if (encounteredRawType || encounteredTypename)
+            		throwBacktrack(LA(1));
+
+            	final boolean wasInBinary= inBinaryExpression;
+            	try {
+            		inBinaryExpression= false;
+            		typeofExpression= parseTypeidInParenthesisOrUnaryExpression(false, consume().getOffset(), 
+            				IGNUASTTypeIdExpression.op_typeof, IGNUASTUnaryExpression.op_typeof);
+            	} finally {
+            		inBinaryExpression= wasInBinary;
+            	}
+
+            	encounteredTypename= true;
+            	endOffset= calculateEndOffset(typeofExpression);
+            	break;
+
+            default:
+            	if (lt1 >= IExtensionToken.t__otherDeclSpecModifierFirst && lt1 <= IExtensionToken.t__otherDeclSpecModifierLast) {
+            		handleOtherDeclSpecModifier();
+            		endOffset= LA(1).getOffset();
+            		break;
+            	}
+                break declSpecifiers;
+            }
+            
+            if (encounteredRawType && encounteredTypename)
+            	throwBacktrack(LA(1));
+        }
+
+        // check for empty specification
+        if (!encounteredRawType && !encounteredTypename && LT(1) != IToken.tEOC && !option.fAllowEmptySpecifier) {
+        	throwBacktrack(LA(1));
         }
         
-        Decl target= new Decl();
-        target.fDeclSpec1= result;
-        target.fDeclSpec2= altResult;
-        target.fDtorToken1= returnToken;
-        return target;
+        if (result != null) {
+            configureDeclSpec(result, storageClass, options);
+            // cannot store restrict in the cpp-nodes.
+            //            if ((options & RESTRICT) != 0) {
+            //            }
+            ((ASTNode) result).setOffsetAndLength(offset, endOffset - offset);
+            if (problem != null) {
+            	throwBacktrack(problem, result);
+            }
+            return result;
+        }
+
+        if (identifier != null) 
+            return buildNamedTypeSpecifier(identifier, isTypename, storageClass, options, offset, endOffset);
+        
+        return buildSimpleDeclSpec(storageClass, simpleType, options, isLong, typeofExpression, offset, endOffset);
     }
 
+	private boolean canBeConstructorDestructorOrConversion(DeclarationOptions declOption, int storageClass, int options, IASTDeclarator dtor) {
+		final int forbid= CONST | RESTRICT | VOLATILE | SHORT | UNSIGNED | SIGNED | COMPLEX | IMAGINARY | FRIEND;
+		if (storageClass == IASTDeclSpecifier.sc_unspecified && (options & forbid) == 0) {
+			if (ASTQueries.findTypeRelevantDeclarator(dtor) instanceof IASTFunctionDeclarator) {
+				IASTName name= ASTQueries.findInnermostDeclarator(dtor).getName();
+				if (name instanceof ICPPASTQualifiedName) {
+					final ICPPASTQualifiedName qname = (ICPPASTQualifiedName) name;
+					final IASTName names[]= qname.getNames();
+					final int len = names.length;
+					final IASTName lastName = names[len-1];
+					
+					if (len > 1 && CharArrayUtils.equals(names[len-2].getLookupKey(), lastName.getLookupKey())) 
+						return true; // constructor
+					
+					name= lastName;
+				}
+				if (name instanceof ICPPASTTemplateId)
+					name= ((ICPPASTTemplateId) name).getTemplateName();
+
+				if (name instanceof ICPPASTConversionName)
+					return true;
+				
+				final char[] nchars= name.getLookupKey();
+				if (nchars.length > 0 && nchars[0] == '~') 
+					return true; // destructor
+				if (declOption == DeclarationOptions.CPP_MEMBER && CharArrayUtils.equals(nchars, currentClassName))
+					return true;
+			}
+		}
+		return false;
+	}
+
 	private ICPPASTNamedTypeSpecifier buildNamedTypeSpecifier(IASTName name, boolean isTypename,
 			int storageClass, int options, int offset, int endOffset) {
 		ICPPASTNamedTypeSpecifier declSpec = nodeFactory.newTypedefNameSpecifier(name);
@@ -2304,6 +2365,39 @@
         declSpec.setExplicit((options & EXPLICIT) != 0);
 	}
 
+	@Override
+	protected boolean verifyLookaheadDeclarator(DeclarationOptions option, IASTDeclarator dtor, IToken nextToken) {
+        switch (nextToken.getType()) {
+        case IToken.tCOMMA:
+        	return true;
+        	
+        case IToken.tCOLON:
+        case IToken.t_try:
+        case IToken.t_catch:
+        case IToken.tLBRACE:
+        case IToken.t_const:
+        case IToken.t_volatile:
+        	if (option == DeclarationOptions.GLOBAL || option == DeclarationOptions.CPP_MEMBER
+        			|| option == DeclarationOptions.FUNCTION_STYLE_ASM) {
+        		if (ASTQueries.findTypeRelevantDeclarator(dtor) instanceof IASTFunctionDeclarator) {
+        			return true;
+        		}
+        	}
+        	break;
+        case IToken.tSEMI:
+        	return option == DeclarationOptions.GLOBAL || option == DeclarationOptions.CPP_MEMBER ||
+        	option == DeclarationOptions.LOCAL;
+
+        case IToken.tRPAREN:
+        	return option == DeclarationOptions.PARAMETER;
+        	
+        case IToken.tEOC:
+        	return true;
+        }
+        return false;
+	}
+
+
     /**
      * Parse an elaborated type specifier.
      * 
@@ -2342,8 +2436,15 @@
         ((ASTNode) elaboratedTypeSpec).setOffsetAndLength(t.getOffset(), calculateEndOffset(name) - t.getOffset());
         return elaboratedTypeSpec;
     }
+
+
+    @Override
+	protected IASTDeclarator initDeclarator(DeclarationOptions option) 
+    		throws EndOfFileException, BacktrackException, FoundAggregateInitializer {
+    	// called from the lookahead, only.
+    	return initDeclarator(DtorStrategy.PREFER_FUNCTION, option);
+    }
     
-	@Override
 	protected IASTDeclarator initDeclarator(IASTDeclSpecifier declspec, DeclarationOptions option) 
 			throws EndOfFileException, BacktrackException, FoundAggregateInitializer {
     	final IToken mark= mark();
@@ -2353,33 +2454,16 @@
     	BacktrackException bt= null;
     	try {
     		dtor1= initDeclarator(DtorStrategy.PREFER_FUNCTION, option);
-    		verifyDtor(declspec, dtor1, option);
-    		
-    		int lt1= LTcatchEOF(1);
-    		switch(lt1) {
-    		case 0:
-    			return dtor1;
-    		case IToken.tCOLON:
-    			// a colon can be used after a type-id in a conditional expression 
-    			if (option != DeclarationOptions.CPP_MEMBER && option != DeclarationOptions.GLOBAL)
-    				break;
-				//$FALL-THROUGH$
-
-    		case IToken.tLBRACE: 
-    		case IToken.t_throw: case IToken.t_try:
-    		case IToken.t_const: case IToken.t_volatile:
-    			if (ASTQueries.findTypeRelevantDeclarator(dtor1) instanceof IASTFunctionDeclarator) {
-    				return dtor1;
-    			} else {
-    				dtor1= null;
-    				throwBacktrack(LA(1));
-    			}
-    		}
-    		
-    		if (!(dtor1 instanceof IASTFunctionDeclarator))
+    		if (dtor1 instanceof IASTFunctionDeclarator == false)
     			return dtor1;
     		
     		end1= LA(1);
+    		switch(end1.getType()) {
+    		case IToken.tLBRACE: case IToken.tCOLON:
+    		case IToken.t_throw: case IToken.t_try:
+    		case IToken.t_const: case IToken.t_volatile:
+    			return dtor1;
+    		}
     	} catch (BacktrackException e) {
     		bt= e;
     	} 
@@ -2419,45 +2503,6 @@
 		return dtor;
     }
 
-	/**
-	 * Tries to detect illegal versions of declarations
-	 */
-	private void verifyDtor(IASTDeclSpecifier declspec, IASTDeclarator dtor, DeclarationOptions opt) throws BacktrackException {
-		if (CPPVisitor.doesNotSpecifyType(declspec)) {
-			if (ASTQueries.findTypeRelevantDeclarator(dtor) instanceof IASTFunctionDeclarator) {
-				boolean isQualified= false;
-				IASTName name= ASTQueries.findInnermostDeclarator(dtor).getName();
-				if (name instanceof ICPPASTQualifiedName) {
-					isQualified= true;
-					name= name.getLastName();
-				}
-				if (name instanceof ICPPASTTemplateId)
-					name= ((ICPPASTTemplateId) name).getTemplateName();
-
-				// accept conversion operator
-				if (name instanceof ICPPASTConversionName)
-					return;
-			
-				// accept destructor
-				final char[] nchars= name.getLookupKey();
-				if (nchars.length > 0 && nchars[0] == '~') 
-					return; 
-
-				if (opt == DeclarationOptions.CPP_MEMBER) {
-					// accept constructor within class body
-					if (CharArrayUtils.equals(nchars, currentClassName))
-						return;
-				} else if (isQualified) {
-					// accept qualified constructor outside of class body
-					return;
-				}
-			}
-			
-			ASTNode node= (ASTNode) dtor;
-			throwBacktrack(node.getOffset(), node.getLength());
-		}
-	}
-	
 	private boolean canHaveConstructorInitializer(IASTDeclSpecifier declspec, IASTDeclarator dtor) {
 		if (declspec instanceof ICPPASTDeclSpecifier) {
 			ICPPASTDeclSpecifier cppspec= (ICPPASTDeclSpecifier) declspec;			
@@ -2642,15 +2687,19 @@
     	if (!canBeTypeSpecifier()) {
     		return null;
     	}
-        final int offset = mark().getOffset();
+        int startingOffset = mark().getOffset();
         IASTDeclSpecifier declSpecifier = null;
         IASTDeclarator declarator = null;
-        
         rejectLogicalOperatorInTemplateID++;
         try {
-        	Decl decl= declSpecifierSequence_initDeclarator(option, false);
-        	declSpecifier= decl.fDeclSpec1;
-        	declarator= decl.fDtor1;
+        	declSpecifier = declSpecifierSeq(option);
+            if (LT(1) != IToken.tEOC) {
+                declarator= declarator(DtorStrategy.PREFER_FUNCTION, option);
+            }
+        } catch (FoundDeclaratorException e) {
+        	declSpecifier= e.declSpec;
+        	declarator= e.declarator;
+        	backup(e.currToken);
         } catch (FoundAggregateInitializer lie) {
             // type-ids have no initializers
         	return null;
@@ -2660,7 +2709,7 @@
         	rejectLogicalOperatorInTemplateID--;
         }
         IASTTypeId result = nodeFactory.newTypeId(declSpecifier, declarator); 
-        setRange(result, offset, figureEndOffset(declSpecifier, declarator));
+        ((ASTNode) result).setOffsetAndLength(startingOffset, figureEndOffset(declSpecifier, declarator) - startingOffset);
         return result;
 
     }
@@ -3295,23 +3344,27 @@
 
 	private IASTSimpleDeclaration simpleSingleDeclaration(DeclarationOptions options) throws BacktrackException,	EndOfFileException {
         final int startOffset= LA(1).getOffset();
-    	IASTDeclSpecifier declSpec;
+    	IASTDeclSpecifier declSpec= null;
     	IASTDeclarator declarator;
 
     	try {
-    		Decl decl= declSpecifierSequence_initDeclarator(options, true);
-    		declSpec= decl.fDeclSpec1;
-    		declarator= decl.fDtor1;
+    		declSpec= declSpecifierSeq(options);
+    		declarator= initDeclarator(declSpec, options);
+    	} catch (FoundDeclaratorException e) {
+    		declSpec= e.declSpec;
+    		declarator= e.declarator;
+    		backup(e.currToken);
         } catch (FoundAggregateInitializer lie) {
-        	declSpec= lie.fDeclSpec;
+        	if (declSpec == null)
+        		declSpec= lie.fDeclSpec;
         	declarator= addInitializer(lie, options);
     	}
 
     	final int endOffset = figureEndOffset(declSpec, declarator);
     	final IASTSimpleDeclaration decl= nodeFactory.newSimpleDeclaration(declSpec); 
-    	if (declarator != null) 
-    		decl.addDeclarator(declarator);
+    	decl.addDeclarator(declarator);
     	((ASTNode) decl).setOffsetAndLength(startOffset, endOffset - startOffset);
+    	
     	return decl;
 	}
 
@@ -3337,7 +3390,7 @@
 
 	@Override
 	protected void setupTranslationUnit() throws DOMException {
-		translationUnit = nodeFactory.newTranslationUnit(scanner);
+		translationUnit = nodeFactory.newTranslationUnit();
 		translationUnit.setIndex(index);
 
 		// add built-in names to the scope
@@ -3350,6 +3403,8 @@
 				ASTInternal.addBinding(tuScope, binding);
 			}
 		}
+		if(translationUnit instanceof ASTTranslationUnit)
+			((ASTTranslationUnit)translationUnit).setLocationResolver(scanner.getLocationResolver());
 	}
 
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ICPPInternalFunction.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ICPPInternalFunction.java	Wed Aug 05 17:35:39 2009 -0500
@@ -12,6 +12,7 @@
 
 package org.eclipse.cdt.internal.core.dom.parser.cpp;
 
+import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
 import org.eclipse.cdt.core.dom.ast.IBinding;
 
 /**
@@ -19,11 +20,8 @@
  */
 public interface ICPPInternalFunction extends ICPPInternalBinding {
 
-	/**
-	 * Called to resolve the parameter in the second phase.
-	 */
-	public IBinding resolveParameter(CPPParameter parameter);
-	
+    public IBinding resolveParameter( IASTParameterDeclaration param );
+    
     /**
      * Returns whether there is a static declaration for this function.
      * @param resolveAll checks for names that are not yet resolved to this binding.
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/BaseClassLookup.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,365 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Wind River Systems, Inc. and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Markus Schorn - initial API and implementation
- *******************************************************************************/ 
-package org.eclipse.cdt.internal.core.dom.parser.cpp.semantics;
-
-import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-
-import org.eclipse.cdt.core.dom.ast.DOMException;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.IProblemBinding;
-import org.eclipse.cdt.core.dom.ast.IScope;
-import org.eclipse.cdt.core.dom.ast.IType;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPBase;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassScope;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPMember;
-import org.eclipse.cdt.core.index.IIndexFileSet;
-import org.eclipse.cdt.core.parser.util.ArrayUtil;
-import org.eclipse.cdt.core.parser.util.CharArrayObjectMap;
-import org.eclipse.cdt.internal.core.dom.parser.ProblemBinding;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalUnknownScope;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPUnknownBinding;
-
-/**
- * Helper class for performing the base class lookup. First a directed graph without loops is computed to represent the base
- * class hierarchy up to those bases for which the lookup finds matches. Next, from these leaves we search for virtual bases
- * that are hidden. With this information the matches are extracted from the graph.
- */
-class BaseClassLookup {
-	public static void lookupInBaseClasses(LookupData data, ICPPClassScope classScope, IIndexFileSet fileSet) {
-		if (classScope == null)
-			return;
-		
-		final ICPPClassType classType= classScope.getClassType();
-		if (classType == null) 
-			return;
-		
-		final HashMap<IScope, BaseClassLookup> infoMap = new HashMap<IScope, BaseClassLookup>();
-		BaseClassLookup rootInfo= lookupInBaseClass(data, null, false, classType, fileSet, infoMap, 0);
-		if (data.contentAssist) {
-			rootInfo.collectResultForContentAssist(data);
-		} else {
-			hideVirtualBases(rootInfo, infoMap);
-			IBinding[] result= rootInfo.collectResult(data, true, null);
-			verifyResult(data, result);
-		}
-	}
-
-
-	private final ICPPClassType fClassType;
-	private IBinding[] fBindings;
-	private List<BaseClassLookup> fChildren= Collections.emptyList();
-	private BitSet fVirtual;
-	private boolean fHiddenAsVirtualBase= false;
-	private boolean fPropagationDone= false;
-	private boolean fCollected;
-	private boolean fCollectedAsRegularBase;
-
-	private BaseClassLookup(ICPPClassType type) {
-		fClassType= type;
-	}
-	ICPPClassType getClassType() {
-		return fClassType;
-	}
-
-	IBinding[] getResult() {
-		return fBindings;
-	}
-	boolean containsVirtualBase() {
-		return (fVirtual != null && fVirtual.nextSetBit(0) >= 0);
-	}
-	boolean hasMatches() {
-		return fBindings != null && fBindings.length > 0 && fBindings[0] != null;
-	}
-
-	public void addBase(boolean virtual, BaseClassLookup baseInfo) {
-		if (virtual && fHiddenAsVirtualBase)
-			return;
-		
-		if (fChildren.isEmpty()) {
-			fChildren= new ArrayList<BaseClassLookup>();
-			fVirtual= new BitSet();
-		}
-		fVirtual.set(fChildren.size(), virtual);
-		fChildren.add(baseInfo);
-	}
-
-	public void setResult(IBinding[] bindings) {
-		fBindings= bindings;
-	}
-
-	public void setHiddenAsVirtualBase() {
-		fHiddenAsVirtualBase= true;
-	}
-	public void propagateHiddenAsVirtual() {
-		if (fPropagationDone)
-			return;
-		fPropagationDone= true;
-		for (int i=0; i<fChildren.size(); i++) {
-			BaseClassLookup child = fChildren.get(i);
-			if (fVirtual.get(i)) {
-				child.setHiddenAsVirtualBase();
-			}
-			child.propagateHiddenAsVirtual();
-		}
-	}
-	
-	public boolean containsNonStaticMember() {
-		for (IBinding binding : fBindings) {
-			if (binding == null)
-				return false;
-			if (binding instanceof ICPPMember) {
-				try {
-					if (!((ICPPMember) binding).isStatic()) 
-						return true;
-				} catch (DOMException e) {
-					// treat as non-static
-				}
-			}
-		}
-		return false;
-	}
-	
-	static BaseClassLookup lookupInBaseClass(LookupData data, ICPPClassScope baseClassScope, boolean isVirtual, ICPPClassType root, IIndexFileSet fileSet, HashMap<IScope, BaseClassLookup> infoMap, int depth) {
-		if (depth++ > CPPSemantics.MAX_INHERITANCE_DEPTH)
-			return null;
-	
-		if (baseClassScope != null) {
-			BaseClassLookup info= infoMap.get(baseClassScope);
-			if (info != null) {
-				// avoid loops
-				if (info.getResult() == null) {
-				    data.problem = new ProblemBinding(null, IProblemBinding.SEMANTIC_CIRCULAR_INHERITANCE, root.getNameCharArray());
-				    return null;
-				}
-				return info;
-			}
-		}
-	
-		// this is the first time to handle the class
-		BaseClassLookup result;
-		IBinding[] matches= IBinding.EMPTY_BINDING_ARRAY;
-		if (baseClassScope == null) {
-			result= new BaseClassLookup(root);
-			try {
-				infoMap.put(root.getCompositeScope(), result);
-			} catch (DOMException e) {
-				// ignore
-			}
-		} else {
-			result= new BaseClassLookup(baseClassScope.getClassType());
-			infoMap.put(baseClassScope, result);
-			try {
-				IBinding[] members= CPPSemantics.getBindingsFromScope(baseClassScope, fileSet, data);
-				if (data.typesOnly) {
-					CPPSemantics.removeObjects(members);
-				}
-				if (members != null && members.length > 0 && members[0] != null) {
-					if (data.prefixLookup) {
-						matches= members;
-					} else {
-						result.setResult(members);
-						return result;
-					}
-				}
-			} catch (DOMException e) {
-				// continue the lookup
-			}
-		}
-		
-		// there is no result in the baseClass itself or we do content assist, we have to examine its base-classes
-		ICPPClassType baseClass= result.getClassType();
-		if (baseClass != null) { 
-			ICPPBase[] grandBases= null;
-			try {
-				grandBases= baseClass.getBases();
-			} catch (DOMException e) {
-				// assume that there are no bases
-			}
-			if (grandBases != null && grandBases.length > 0) {
-				HashSet<IBinding> grandBaseBindings= grandBases.length > 1 ? new HashSet<IBinding>() : null;
-				for (ICPPBase grandBase : grandBases) {
-					if (grandBase instanceof IProblemBinding)
-						continue;
-	
-					try {
-						IBinding grandBaseBinding = grandBase.getBaseClass();
-						if (!(grandBaseBinding instanceof ICPPClassType)) {
-							// 14.6.2.3 scope is not examined 
-							if (grandBaseBinding instanceof ICPPUnknownBinding) {
-								if (data.skippedScope == null)
-									data.skippedScope= root;
-							}
-							continue;
-						}
-	
-						final ICPPClassType grandBaseClass = (ICPPClassType) grandBaseBinding;
-						if (grandBaseBindings != null && !grandBaseBindings.add(grandBaseClass))
-							continue;
-	
-						final IScope grandBaseScope= grandBaseClass.getCompositeScope();
-						if (grandBaseScope == null || grandBaseScope instanceof ICPPInternalUnknownScope) {
-							// 14.6.2.3 scope is not examined 
-							if (data.skippedScope == null)
-								data.skippedScope= root;
-							continue;
-						}
-						if (!(grandBaseScope instanceof ICPPClassScope))
-							continue;
-						
-						BaseClassLookup baseInfo= lookupInBaseClass(data, (ICPPClassScope) grandBaseScope, grandBase.isVirtual(), root, fileSet, infoMap, depth);
-						if (baseInfo != null)
-							result.addBase(grandBase.isVirtual(), baseInfo);
-					} catch (DOMException e) {
-						// move on to next base
-					}
-				}
-			}
-		}
-		result.setResult(matches);
-		return result;	
-	}
-	static void hideVirtualBases(BaseClassLookup rootInfo, HashMap<IScope, BaseClassLookup> infoMap) {
-		boolean containsVirtualBase= false;
-		final BaseClassLookup[] allInfos = infoMap.values().toArray(new BaseClassLookup[infoMap.size()]);
-		for (BaseClassLookup info : allInfos) {
-			if (info.containsVirtualBase()) {
-				containsVirtualBase= true;
-				break;
-			}
-		}
-		if (containsVirtualBase) {
-			for (BaseClassLookup info : allInfos) {
-				if (info.hasMatches()) {
-					info.hideVirtualBases(infoMap, 0);
-				}
-			}
-		}
-	}
-
-	void hideVirtualBases(HashMap<IScope, BaseClassLookup> infoMap, int depth) {
-		if (depth++ > CPPSemantics.MAX_INHERITANCE_DEPTH)
-			return;
-		
-		if (fClassType != null) { 
-			ICPPBase[] bases= null;
-			try {
-				bases= fClassType.getBases();
-			} catch (DOMException e) {
-				// assume that there are no bases
-			}
-			if (bases != null && bases.length > 0) {
-				for (ICPPBase base : bases) {
-					if (base instanceof IProblemBinding)
-						continue;
-	
-					try {
-						IBinding baseBinding = base.getBaseClass();
-						if (!(baseBinding instanceof ICPPClassType)) {
-							continue;
-						}
-	
-						final ICPPClassType baseClass = (ICPPClassType) baseBinding;
-						final IScope baseScope= baseClass.getCompositeScope();
-						if (!(baseScope instanceof ICPPClassScope))
-							continue;
-						
-						BaseClassLookup baseInfo= infoMap.get(baseScope);
-						if (baseInfo != null) {
-							if (base.isVirtual()) {
-								baseInfo.setHiddenAsVirtualBase();
-							}
-							baseInfo.propagateHiddenAsVirtual();
-						} else {
-							// mark to catch recursions
-							baseInfo= new BaseClassLookup(baseClass);
-							infoMap.put(baseScope, baseInfo);
-							baseInfo.hideVirtualBases(infoMap, depth);
-						}
-					} catch (DOMException e) {
-						// move on to next base
-					}
-				}
-			}
-		}
-	}
-	public void collectResultForContentAssist(LookupData data) {
-		if (fCollected)
-			return;
-		fCollected= true;
-		
-		data.foundItems = CPPSemantics.mergePrefixResults((CharArrayObjectMap) data.foundItems, fBindings, true);
-		for (int i=0; i<fChildren.size(); i++) {
-			BaseClassLookup child = fChildren.get(i);
-			child.collectResultForContentAssist(data);
-		}
-	}
-
-	public IBinding[] collectResult(LookupData data, boolean asVirtualBase, IBinding[] result) {
-		if (asVirtualBase) {
-			if (fHiddenAsVirtualBase)
-				return result;
-		} else {
-			if (fCollectedAsRegularBase && data.problem == null && containsNonStaticMember()) {
-				data.problem= new ProblemBinding(data.astName, IProblemBinding.SEMANTIC_AMBIGUOUS_LOOKUP);
-			}
-			fCollectedAsRegularBase= true;
-		}
-
-		if (fCollected)
-			return result;
-		fCollected= true;
-		
-		result= (IBinding[]) ArrayUtil.addAll(IBinding.class, result, fBindings);
-		for (int i=0; i<fChildren.size(); i++) {
-			BaseClassLookup child = fChildren.get(i);
-			result= child.collectResult(data, fVirtual.get(i), result);
-		}
-		return result;
-	}
-	
-	static void verifyResult(LookupData data, IBinding[] bindings) {
-		bindings= (IBinding[]) ArrayUtil.trim(IBinding.class, bindings);
-		if (bindings.length == 0)
-			return;
-		
-		if (data.problem != null) {
-			data.problem.setCandidateBindings(bindings);
-		} else {
-			ICPPClassType uniqueOwner= null;
-			for (IBinding b : bindings) {
-				if (!(b instanceof IType)) {
-					try {
-						IBinding owner= b.getOwner();
-						if (owner instanceof ICPPClassType) {
-							final ICPPClassType classOwner = (ICPPClassType) owner;
-							if (uniqueOwner == null) {
-								uniqueOwner= classOwner;
-							} else if (!uniqueOwner.isSameType(classOwner)) {
-								data.problem= new ProblemBinding(data.astName, IProblemBinding.SEMANTIC_AMBIGUOUS_LOOKUP, bindings);
-								return;
-							}
-						}
-					} catch (DOMException e) {
-						// ignore
-					}
-				}
-			}
-		}
-
-		data.foundItems = ArrayUtil.addAll(Object.class, (Object[]) data.foundItems, bindings);
-	}
-}
\ No newline at end of file
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java	Wed Aug 05 17:35:39 2009 -0500
@@ -87,7 +87,6 @@
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFieldReference;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTForStatement;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDeclarator;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDefinition;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTIfStatement;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLinkageSpecification;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamedTypeSpecifier;
@@ -142,14 +141,12 @@
 import org.eclipse.cdt.core.parser.util.CharArrayUtils;
 import org.eclipse.cdt.core.parser.util.DebugUtil;
 import org.eclipse.cdt.core.parser.util.ObjectSet;
-import org.eclipse.cdt.internal.core.dom.parser.ASTAmbiguousNode;
 import org.eclipse.cdt.internal.core.dom.parser.ASTInternal;
 import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
 import org.eclipse.cdt.internal.core.dom.parser.ASTQueries;
 import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguousDeclarator;
 import org.eclipse.cdt.internal.core.dom.parser.IASTInternalScope;
 import org.eclipse.cdt.internal.core.dom.parser.ProblemBinding;
-import org.eclipse.cdt.internal.core.dom.parser.GCCBuiltinSymbolProvider.CPPBuiltinParameter;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFieldReference;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTIdExpression;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTLiteralExpression;
@@ -160,8 +157,6 @@
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTUnaryExpression;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPBasicType;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPCompositeBinding;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPFunctionType;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPImplicitFunction;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNamespace;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPReferenceType;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPScope;
@@ -176,6 +171,7 @@
 import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPClassSpecializationScope;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPDeferredClassInstance;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalBinding;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalUnknownScope;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPUnknownBinding;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPUnknownType;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.OverloadableOperator;
@@ -187,17 +183,15 @@
  * Name resolution
  */
 public class CPPSemantics {
-
 	/**
 	 * The maximum depth to search ancestors before assuming infinite looping.
 	 */
-	public static final int MAX_INHERITANCE_DEPTH= 16;
+	public static final int MAX_INHERITANCE_DEPTH= 10;
 	
     public static final ASTNodeProperty STRING_LOOKUP_PROPERTY =
     		new ASTNodeProperty("CPPSemantics.STRING_LOOKUP_PROPERTY - STRING_LOOKUP"); //$NON-NLS-1$
 	public static final String EMPTY_NAME = ""; //$NON-NLS-1$
 	public static final char[] OPERATOR_ = new char[] {'o','p','e','r','a','t','o','r',' '};  
-	private static final char[] CALL_FUNCTION = "call-function".toCharArray(); //$NON-NLS-1$
 	public static final IType VOID_TYPE = new CPPBasicType(IBasicType.t_void, 0);
 
 	// Set to true for debugging.
@@ -206,6 +200,8 @@
 	
 	// special return value for costForFunctionCall
 	private static final FunctionCost CONTAINS_DEPENDENT_TYPES = new FunctionCost(null, 0);
+
+	
 	static protected IBinding resolveBinding(IASTName name) {
 		if (traceBindingResolution) {
 			for (int i = 0; i < traceIndent; i++) 
@@ -444,25 +440,17 @@
 	        }
         }
         
-        // explicit function specializations are found via name resolution, need to
-        // add name as definition and check the declaration specifier.
 		if (binding instanceof IFunction && !(binding instanceof IProblemBinding)) {
 			if (data.forFunctionDeclaration()) {
-				IASTNode declaration= data.astName;
-				while (declaration instanceof IASTName)
-					declaration= declaration.getParent();
-				while (declaration instanceof IASTDeclarator)
-					declaration= declaration.getParent();
-
-				binding= checkDeclSpecifier(binding, data.astName, declaration);
-				if (!(binding instanceof IProblemBinding)) {
-					if (declaration instanceof ICPPASTFunctionDefinition) {
-						ASTInternal.addDefinition(binding, data.astName);
-					}
+				IASTNode node = data.astName.getParent();
+				if (node instanceof ICPPASTQualifiedName)
+					node = node.getParent();
+				if (node instanceof ICPPASTFunctionDeclarator
+						&& node.getParent() instanceof IASTFunctionDefinition) {
+					ASTInternal.addDefinition(binding, node);
 				}
 			}
 		}
-		
 		// If we're still null...
 		if (binding == null) {
 			if (name instanceof ICPPASTQualifiedName && data.forFunctionDeclaration()) {
@@ -475,37 +463,8 @@
 		}
         return binding;
     }
-       
-	static IBinding checkDeclSpecifier(IBinding binding, IASTName name, IASTNode decl) {
-		// check for empty declaration specifiers
-		if (!isCTorOrConversionOperator(binding)) {
-			IASTDeclSpecifier declspec= null;
-			if (decl instanceof IASTSimpleDeclaration) {
-				declspec= ((IASTSimpleDeclaration) decl).getDeclSpecifier();
-			} else if (decl instanceof IASTFunctionDefinition) {
-				declspec= ((IASTFunctionDefinition) decl).getDeclSpecifier();
-			}
-			if (declspec != null && CPPVisitor.doesNotSpecifyType(declspec)) {
-				binding= new ProblemBinding(name, IProblemBinding.SEMANTIC_INVALID_TYPE);
-			}
-		}
-		return binding;
-	}
 
-	private static boolean isCTorOrConversionOperator(IBinding binding) {
-		if (binding instanceof ICPPConstructor)
-			return true;
-		
-		if (binding instanceof ICPPMethod) {
-			ICPPMethod m= (ICPPMethod) binding;
-			if (m.isDestructor())
-				return true;
-			return isConversionOperator(m);
-		}
-		return false;
-	}
-
-	public static LookupData createLookupData(IASTName name, boolean considerAssociatedScopes) {
+    public static LookupData createLookupData(IASTName name, boolean considerAssociatedScopes) {
 		LookupData data = new LookupData(name);
 		IASTNode parent = name.getParent();
 		
@@ -678,7 +637,7 @@
 	 * @param scoped
 	 * @return
 	 */
-	static CharArrayObjectMap mergePrefixResults(CharArrayObjectMap dest, Object source, boolean scoped) {
+	private static CharArrayObjectMap mergePrefixResults(CharArrayObjectMap dest, Object source, boolean scoped) {
 		if (source == null) return dest; 
         CharArrayObjectMap resultMap = (dest != null) ? dest : new CharArrayObjectMap(2);
         
@@ -845,7 +804,7 @@
 			}
 			
 			if (!data.usingDirectivesOnly && scope instanceof ICPPClassScope) {
-				BaseClassLookup.lookupInBaseClasses(data, (ICPPClassScope) scope, fileSet);
+				mergeResults(data, lookupInParents(data, scope, ((ICPPClassScope) scope).getClassType(), fileSet), true);
 			}
 			
 			if (!data.contentAssist && (data.problem != null || data.hasResults()))
@@ -965,7 +924,7 @@
 		return result[0];
    }
 
-   static IBinding[] getBindingsFromScope(ICPPScope scope, final IIndexFileSet fileSet, LookupData data) throws DOMException {
+   private static IBinding[] getBindingsFromScope(ICPPScope scope, final IIndexFileSet fileSet, LookupData data) throws DOMException {
 		IBinding[] bindings;
 		if (scope instanceof ICPPASTInternalScope) {
 			bindings= ((ICPPASTInternalScope) scope).getBindings(data.astName, true, data.prefixLookup, fileSet, data.checkPointOfDecl);
@@ -975,7 +934,7 @@
 		return bindings;
 	}
 
-	static void removeObjects(final IBinding[] bindings) {
+	private static void removeObjects(final IBinding[] bindings) {
 		final int length = bindings.length;
 		int pos= 0;
 		for (int i = 0; i < length; i++) {
@@ -1030,6 +989,230 @@
 		return (ICPPScope) parentScope;
 	}
 
+	private static Object lookupInParents(LookupData data, ICPPScope lookIn, ICPPClassType overallScope, IIndexFileSet fileSet) {
+		if (lookIn instanceof ICPPClassScope == false)
+			return null;
+		
+		final ICPPClassType classType= ((ICPPClassScope)lookIn).getClassType();
+		if (classType == null) 
+			return null;
+		
+		ICPPBase[] bases= null;
+		try {
+			 bases= classType.getBases();
+		} catch (DOMException e) {
+			// assume that there are no bases
+			return null;
+		}
+		if (bases == null || bases.length == 0)
+			return null;
+	
+		Object inherited = null;
+		Object result = null;
+		
+		//use data to detect circular inheritance
+		if (data.inheritanceChain == null)
+			data.inheritanceChain = new ObjectSet<IScope>(2);
+		
+		data.inheritanceChain.put(lookIn);
+
+		// workaround to fix 185828 
+		if (data.inheritanceChain.size() > CPPSemantics.MAX_INHERITANCE_DEPTH) { 
+			return null;
+		}
+
+		HashSet<IBinding> baseBindings= bases.length > 1 ? new HashSet<IBinding>() : null;
+		for (ICPPBase base : bases) {
+			if (base instanceof IProblemBinding)
+				continue;
+			
+			try {
+				IBinding b = base.getBaseClass();
+				if (!(b instanceof ICPPClassType)) {
+					// 14.6.2.3 scope is not examined 
+					if (b instanceof ICPPUnknownBinding) {
+						if (data.skippedScope == null)
+							data.skippedScope= overallScope;
+					}
+					continue;
+				}
+
+				final ICPPClassType cls = (ICPPClassType) b;
+				if (baseBindings != null && !baseBindings.add(cls))
+					continue;
+				
+				inherited = null;
+				final ICPPScope classScope = (ICPPScope) cls.getCompositeScope();
+				if (classScope == null || classScope instanceof ICPPInternalUnknownScope) {
+					// 14.6.2.3 scope is not examined 
+					if (data.skippedScope == null)
+						data.skippedScope= overallScope;
+					continue;
+				}
+				if (!base.isVirtual() || !data.visited.containsKey(classScope)) {
+					if (base.isVirtual()) {
+						data.visited.put(classScope);
+					}
+
+					// if the inheritanceChain already contains the parent, then that 
+					// is circular inheritance
+					if (!data.inheritanceChain.containsKey(classScope)) {
+						//is this name define in this scope?
+						IBinding[] inCurrentScope= getBindingsFromScope(classScope, fileSet, data);
+						if (data.typesOnly) {
+							removeObjects(inCurrentScope);
+						}
+						final boolean isEmpty= inCurrentScope.length == 0 || inCurrentScope[0] == null;
+						if (data.contentAssist) {
+							Object temp = lookupInParents(data, classScope, overallScope, fileSet);
+							if (!isEmpty) {
+								inherited = mergePrefixResults(null, inCurrentScope, true);
+								inherited = mergePrefixResults((CharArrayObjectMap) inherited,
+										(CharArrayObjectMap) temp, true);
+							} else {
+								inherited= temp;
+							}
+						} else if (isEmpty) {
+							inherited= lookupInParents(data, classScope, overallScope, fileSet);
+						} else {
+							inherited= inCurrentScope;
+							visitVirtualBaseClasses(data, cls);
+						}
+					} else {
+					    data.problem = new ProblemBinding(null, IProblemBinding.SEMANTIC_CIRCULAR_INHERITANCE,
+					    		cls.getNameCharArray(), data.getFoundBindings());
+					    return null;
+					}
+				}	
+				
+				if (inherited != null) {
+					if (result == null) {
+						result = inherited;
+					} else if (!data.contentAssist) {
+						if (result instanceof Object[]) {
+							Object[] r = (Object[]) result;
+							for (int j = 0; j < r.length && r[j] != null; j++) {
+								if (checkForAmbiguity(data, r[j], inherited)) {
+								    data.problem = new ProblemBinding(data.astName,
+								    		IProblemBinding.SEMANTIC_AMBIGUOUS_LOOKUP, data.getFoundBindings()); 
+								    return null;
+								}
+							}
+						} else {
+							if (checkForAmbiguity(data, result, inherited)) {
+							    data.problem = new ProblemBinding(data.astName,
+							    		IProblemBinding.SEMANTIC_AMBIGUOUS_LOOKUP, data.getFoundBindings()); 
+							    return null;
+							}
+						}
+					} else {
+						CharArrayObjectMap temp = (CharArrayObjectMap) inherited;
+						CharArrayObjectMap r = (CharArrayObjectMap) result;
+						char[] key = null;
+						int tempSize = temp.size();
+						for (int ii = 0; ii < tempSize; ii++) {
+						    key = temp.keyAt(ii);
+							if (!r.containsKey(key)) {
+								r.put(key, temp.get(key));
+							} else {
+								//TODO: prefixLookup ambiguity checking
+							}
+						}
+					}
+				}
+			} catch (DOMException e) {
+				// assume that the base has not been specified
+			}
+		}
+	
+		data.inheritanceChain.remove(lookIn);
+	
+		return result;	
+	}
+
+	public static void visitVirtualBaseClasses(LookupData data, ICPPClassType cls) throws DOMException {		
+		if (data.inheritanceChain == null)
+			data.inheritanceChain = new ObjectSet<IScope>(2);
+		
+		IScope scope = cls.getCompositeScope();
+		if (scope != null)
+			data.inheritanceChain.put(scope);
+		
+	    ICPPBase[] bases = cls.getBases();
+
+        for (ICPPBase base : bases) {
+            IBinding b = base.getBaseClass();
+            if (b instanceof ICPPClassType) {
+            	IScope bScope = ((ICPPClassType)b).getCompositeScope();
+            	if (base.isVirtual()) {
+            		if (bScope != null)
+            			data.visited.put(bScope);
+            	} else if (bScope != null) {
+            		if (!data.inheritanceChain.containsKey(bScope))
+            			visitVirtualBaseClasses(data, (ICPPClassType) b);
+            		else
+            			data.problem = new ProblemBinding(null, IProblemBinding.SEMANTIC_CIRCULAR_INHERITANCE, cls.getNameCharArray());
+            	}
+            }
+        }
+        
+        if (scope != null)
+        	data.inheritanceChain.remove(scope);
+	}
+	
+	private static boolean checkForAmbiguity(LookupData data, Object n, Object names) throws DOMException {
+		if (names instanceof Object[]) {
+		    names = ArrayUtil.trim(Object.class, (Object[]) names);
+		    if (((Object[])names).length == 0)
+		        return false;
+		}
+
+	    IBinding binding= (n instanceof IBinding) ? (IBinding) n : ((IASTName) n).resolveBinding();
+
+	    int idx= 0;
+	    Object[] objs= null;
+	    Object o= names;
+	    if (names instanceof Object[]) {
+	    	objs= (Object[]) names;
+	    	o= objs[0];
+	    	idx= 1;
+	    }
+	    
+	    while (o != null) {       
+	        IBinding b = (o instanceof IBinding) ? (IBinding) o : ((IASTName)o).resolveBinding();
+	        
+	        if (b instanceof ICPPUsingDeclaration) {
+	        	objs = ArrayUtil.append(Object.class, objs, ((ICPPUsingDeclaration)b).getDelegates());
+	        } else {
+		        if (binding != b)
+		            return true;
+				
+				boolean ok = false;
+				// 3.4.5-4 if the id-expression in a class member access is a qualified id... the result 
+				// is not required to be a unique base class...
+				if (binding instanceof ICPPClassType) {
+					IASTNode parent = data.astName.getParent();
+					if (parent instanceof ICPPASTQualifiedName && 
+							parent.getPropertyInParent() == IASTFieldReference.FIELD_NAME) {
+						ok = true;
+					}
+				}
+			    // it is not ambiguous if they are the same thing and it is static or an enumerator
+		        if (binding instanceof IEnumerator ||
+		        		(binding instanceof IFunction && ASTInternal.isStatic((IFunction) binding, false)) ||
+		        		(binding instanceof IVariable && ((IVariable)binding).isStatic())) {
+		        	ok = true;
+		        }
+		        if (!ok)
+					return true;
+	        }
+	        if (objs != null && idx < objs.length)
+	        	o = objs[idx++];
+	        else
+	        	o = null;
+	    }
+		return false;
+	}
 
 	/**
 	 * Stores the using directive with the scope where the members of the nominated namespace will appear.
@@ -1278,10 +1461,9 @@
 			ASTInternal.addName(scope, name);
 			return;
 		}
-		if (declaration == null || declaration instanceof ASTAmbiguousNode) {
+		if (declaration == null)
 			return;
-		}
-
+		
 		if (declaration instanceof IASTSimpleDeclaration) {
 			IASTSimpleDeclaration simpleDeclaration = (IASTSimpleDeclaration) declaration;
 			ICPPASTDeclSpecifier declSpec = (ICPPASTDeclSpecifier) simpleDeclaration.getDeclSpecifier();
@@ -2320,7 +2502,11 @@
                 IType[] result = null;
                 for (int i = 0; i < types.length && types[i] != null; i++) {
                     IType[] pts = null;
-                    pts = types[i].getParameterTypes();
+                    try {
+                        pts = types[i].getParameterTypes();
+                    } catch (DOMException e) {
+                        continue;
+                    }
                     if (pts.length > idx)
                         result = (IType[]) ArrayUtil.append(IType.class, result, pts[idx]);
                 }
@@ -2455,7 +2641,7 @@
     		return type;
     	
     	char[] operatorName = OverloadableOperator.ARROW.toCharArray();
-		IASTExpression[] args = {owner};
+		IASTExpression[] args = {null};
 		
     	// bug 205964: as long as the type is a class type, recurse. 
     	// Be defensive and allow a max of 10 levels.
@@ -2517,7 +2703,7 @@
     
     public static ICPPFunction findOverloadedOperator(IASTArraySubscriptExpression exp) {
     	char[] name = OverloadableOperator.BRACKET.toCharArray();
-    	IASTExpression[] args = {exp.getArrayExpression(), exp.getSubscriptExpression()};
+    	IASTExpression[] args = { null, exp.getSubscriptExpression() };
     	IType type1 = exp.getArrayExpression().getExpressionType();
     	IType ultimateType1 = SemanticUtil.getUltimateTypeUptoPointers(type1);
     	return findOverloadedOperator(exp, args, ultimateType1, name, false);
@@ -2531,15 +2717,15 @@
     	if (param instanceof IASTExpressionList) {
     		IASTExpression[] actualArgs = ((IASTExpressionList)param).getExpressions();
     		ArrayList<IASTExpression> argsToPass = new ArrayList<IASTExpression>(actualArgs.length + 1);
-    		argsToPass.add(exp.getFunctionNameExpression());
+    		argsToPass.add(null);
     		for (IASTExpression e : actualArgs) {
 				argsToPass.add(e);
     		}
     		args = argsToPass.toArray(new IASTExpression[argsToPass.size()]);
     	} else if (param != null) {
-    		args = new IASTExpression[] { exp.getFunctionNameExpression(), param };
+    		args = new IASTExpression[] { null, param };
     	} else {
-    		args = new IASTExpression[] { exp.getFunctionNameExpression() };
+    		args = new IASTExpression[] { null };
     	}
     	
     	return findOverloadedOperator(exp, args, type, name, false);
@@ -2551,7 +2737,11 @@
 		IType type = exp.getExpressionType();
 		if (type instanceof IProblem)
 			return null;
-		type = ((IPointerType)type).getType();
+		try {
+			type = ((IPointerType)type).getType();
+		} catch (DOMException e) {
+			return null;
+		}
 		
 		IASTTypeId typeId = exp.getTypeId().copy();
     	IASTExpression sizeExpression = new CPPASTTypeIdExpression(IASTTypeIdExpression.op_sizeof, typeId);
@@ -2582,9 +2772,13 @@
     	IType type1 = exp.getOperand().getExpressionType();
     	IType ultimateType1 = SemanticUtil.getUltimateTypeUptoPointers(type1);
     	if (ultimateType1 instanceof IPointerType) {
-    		IType classType = ((IPointerType)ultimateType1).getType();
-			if (classType instanceof ICPPClassType)
-				return (ICPPClassType) classType;
+    		try {
+				IType classType = ((IPointerType)ultimateType1).getType();
+				if (classType instanceof ICPPClassType)
+					return (ICPPClassType) classType;
+			} catch (DOMException e) {
+				return null;
+			}
     	}
 		return null;
     }
@@ -2684,17 +2878,13 @@
     }
 
     private static ICPPFunction findOverloadedOperator(IASTExpression parent, IASTExpression[] args, IType methodLookupType, char[] operatorName, boolean lookupNonMember) {
-    	ICPPClassType callToObjectOfClassType= null;
-    	
     	// Find a method
     	LookupData methodData = null;
     	CPPASTName methodName = null;
     	if (methodLookupType instanceof IProblemBinding)
     		return null;
     	if (methodLookupType instanceof ICPPClassType) {
-			ICPPClassType classType = (ICPPClassType)methodLookupType;
-
-			methodName = new CPPASTName(operatorName);
+    		methodName = new CPPASTName(operatorName);
         	methodName.setParent(parent);
         	methodName.setPropertyInParent(STRING_LOOKUP_PROPERTY);
     	    methodData = new LookupData(methodName);
@@ -2702,14 +2892,10 @@
     	    methodData.forceQualified = true; // (13.3.1.2.3)
     	    
 			try {
-				IScope scope = classType.getCompositeScope();
+				IScope scope = ((ICPPClassType)methodLookupType).getCompositeScope();
 				if (scope == null)
 					return null;
 				lookup(methodData, scope);
-			
-				if (parent instanceof IASTFunctionCallExpression) {
-					callToObjectOfClassType= classType;
-				}
 			} catch (DOMException e) {
 				return null;
 			}
@@ -2718,7 +2904,7 @@
 		// Find a function
     	LookupData funcData = null;
     	CPPASTName funcName = null;
-    	if (lookupNonMember || callToObjectOfClassType != null) {
+    	if (lookupNonMember) {
     		funcName = new CPPASTName(operatorName);
     	    funcName.setParent(parent);
     	    funcName.setPropertyInParent(STRING_LOOKUP_PROPERTY);
@@ -2727,35 +2913,16 @@
         	funcData.ignoreMembers = true; // (13.3.1.2.3)
     	    
 			try {
-				if (lookupNonMember) {
-					IScope scope = CPPVisitor.getContainingScope(parent);
-					if (scope == null)
-						return null;
-					lookup(funcData, scope);
-				}
-				if (callToObjectOfClassType != null) {	
-					// 13.3.1.1.2 call to object of class type
-					ICPPMethod[] ops = SemanticUtil.getConversionOperators(callToObjectOfClassType);
-					for (ICPPMethod op : ops) {
-						IFunctionType ft= op.getType();
-						if (ft != null) {
-							IType rt= SemanticUtil.getNestedType(ft.getReturnType(), SemanticUtil.TDEF);
-							if (rt instanceof IPointerType) {
-								IType ptt= SemanticUtil.getNestedType(((IPointerType)rt).getType(), SemanticUtil.TDEF);
-								if (ptt instanceof IFunctionType) {
-									IFunctionType ft2= (IFunctionType) ptt;
-									IBinding sf= createSurrogateCallFunction(parent.getTranslationUnit().getScope(), ft2.getReturnType(), rt, ft2.getParameterTypes());
-									mergeResults(funcData, sf, false);
-								}
-							}
-						}
-					}
-				}
+				IScope scope = CPPVisitor.getContainingScope(parent);
+				if (scope == null)
+					return null;
+				lookup(funcData, scope);
 			} catch (DOMException e) {
 				return null;
 			}
     	}
 		
+		// Resolve ambiguities
     	try {
     		IBinding binding = null;
     		if (methodData != null && funcData != null) {
@@ -2777,22 +2944,7 @@
 		return null;
     }
     
-	private static IBinding createSurrogateCallFunction(IScope scope, IType returnType, IType rt, IType[] parameterTypes) {
-		IType[] parms = new IType[parameterTypes.length+1];
-		IParameter[] theParms = new IParameter[parms.length];
-
-		parms[0] = rt;
-		theParms[0]= new CPPBuiltinParameter(rt);
-		for (int i = 1; i < parms.length; i++) {
-			IType t = parameterTypes[i-1];
-			parms[i]= t;
-			theParms[i]= new CPPBuiltinParameter(t);
-		}
-		ICPPFunctionType functionType = new CPPFunctionType(returnType, parms);
-		return new CPPImplicitFunction(CALL_FUNCTION, scope, functionType, theParms, false);
-	}
-
-	private static boolean isUserDefined(IType type) {
+    private static boolean isUserDefined(IType type) {
     	return type instanceof ICPPClassType || type instanceof IEnumeration;
     }
     
@@ -2907,7 +3059,7 @@
 		ICPPASTTemplateDeclaration templateDecl = CPPTemplates.getTemplateDeclaration(name);
 		if (templateDecl != null) {
 			if (templateDecl instanceof ICPPASTTemplateSpecialization) {
-				if (!(function instanceof ICPPSpecialization))
+				if (!(function instanceof ICPPTemplateInstance))
 					return false;
 			} else {
 				if (!(function instanceof ICPPTemplateDefinition))
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java	Wed Aug 05 17:35:39 2009 -0500
@@ -96,7 +96,6 @@
 import org.eclipse.cdt.internal.core.dom.parser.ProblemBinding;
 import org.eclipse.cdt.internal.core.dom.parser.Value;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPArrayType;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPBasicType;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPClassInstance;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPClassSpecialization;
@@ -843,11 +842,11 @@
 			}		
 
 			if (type instanceof ITypeContainer) {
-				final ITypeContainer typeContainer = (ITypeContainer) type;
-				IType nestedType = typeContainer.getType();
+				final ITypeContainer tc = (ITypeContainer) type;
+				IType nestedType = tc.getType();
 				IType newNestedType = instantiateType(nestedType, tpMap, within);
-				if (typeContainer instanceof ICPPPointerToMemberType) {
-					ICPPPointerToMemberType ptm = (ICPPPointerToMemberType) typeContainer;
+				if (type instanceof ICPPPointerToMemberType) {
+					ICPPPointerToMemberType ptm = (ICPPPointerToMemberType) type;
 					IType memberOfClass = ptm.getMemberOfClass();
 					IType newMemberOfClass = instantiateType(memberOfClass, tpMap, within);
 					if (newNestedType != nestedType || newMemberOfClass != memberOfClass) {
@@ -855,22 +854,13 @@
 							return new CPPPointerToMemberType(newNestedType, newMemberOfClass,
 								ptm.isConst(), ptm.isVolatile());
 						}
-						return typeContainer;
-					}
-				} else if (typeContainer instanceof IArrayType) {
-					IArrayType at= (IArrayType) typeContainer;
-					IValue asize= at.getSize();
-					if (asize != null) {
-						IValue newSize= instantiateValue(asize, tpMap, within, Value.MAX_RECURSION_DEPTH);
-						if (newSize != asize) {
-							return new CPPArrayType(newNestedType, newSize);
-						}
+						return type;
 					}
 				}
 				if (newNestedType != nestedType) {
-					return SemanticUtil.replaceNestedType(typeContainer, newNestedType);
+					return SemanticUtil.replaceNestedType(tc, newNestedType);
 				} 
-				return typeContainer;
+				return type;
 			} 
 
 			return type;
@@ -1010,7 +1000,7 @@
 	}
 	
 	public static void associateTemplateDeclarations(ICPPASTInternalTemplateDeclaration tdecl) {
-		// find innermost template declaration
+		// find innermost template decl
 		IASTDeclaration decl= tdecl.getDeclaration();
 		while (decl instanceof ICPPASTInternalTemplateDeclaration) {
 			tdecl= (ICPPASTInternalTemplateDeclaration) decl;
@@ -1018,7 +1008,7 @@
 		}
 		final ICPPASTInternalTemplateDeclaration innerMostTDecl= tdecl;
 		
-		// find name declared within the template declaration
+		// find name declared in nested declaration
 		IASTName name= getNameForDeclarationInTemplateDeclaration(decl);
 
 		// count template declarations
@@ -1033,7 +1023,7 @@
 
 		// determine association of names with template declarations
 		boolean lastIsTemplate= true;
-		int missingTemplateDecls= 0;
+		int additionalLevels= 0;
 		if (name instanceof ICPPASTQualifiedName) {
 			ICPPASTQualifiedName qname= (ICPPASTQualifiedName) name;
 			final IASTName lastName = qname.getLastName();
@@ -1042,7 +1032,8 @@
 			// count template-ids
 			int idcount= 0;
 			final IASTName[] ns= qname.getNames();
-			for (final IASTName n : ns) {
+			for (int j = 0; j < ns.length; j++) {
+				final IASTName n = ns[j];
 				if (n instanceof ICPPASTTemplateId) {
 					idcount++;
 				}
@@ -1062,23 +1053,25 @@
 			}
 			
 			if (lastIsID && !isCtorWithTemplateID) {
-				missingTemplateDecls= idcount-tdeclcount;
+				additionalLevels= idcount-tdeclcount;
 			} else {
-				missingTemplateDecls= idcount+1-tdeclcount;
-				if (missingTemplateDecls > 0) {
+				additionalLevels= idcount+1-tdeclcount;
+				if (additionalLevels > 0) {
 					// last name is probably not a template
-					missingTemplateDecls--;
+					additionalLevels--;
 					lastIsTemplate= false;
 					CharArraySet tparnames= collectTemplateParameterNames(outerMostTDecl);
 					int j= 0;
-					for (IASTName n : ns) {
+					IASTName n;
+					for (int i = 0; i < ns.length; i++) {
+						n = ns[j];
 						if (n instanceof ICPPASTTemplateId) {
 							// if we find a dependent id, there can be no explicit specialization.
 							ICPPASTTemplateId id= (ICPPASTTemplateId) n;
 							if (usesTemplateParameter(id, tparnames))
 								break;
 
-							if (j++ == missingTemplateDecls) {
+							if (j++ == additionalLevels) {
 								IBinding b= n.resolveBinding();
 								if (b instanceof ICPPTemplateInstance && b instanceof ICPPClassType) {
 									try {
@@ -1086,7 +1079,7 @@
 										if (!(s instanceof ICPPClassSpecializationScope)) {
 											// template-id of an explicit specialization. 
 											// here we don't have a template declaration. (see 14.7.3.5)
-											missingTemplateDecls++;
+											additionalLevels++;
 											lastIsTemplate= true;
 										}
 									} catch (DOMException e) {
@@ -1101,12 +1094,12 @@
 			}
 		}
 		
-		if (missingTemplateDecls < 0) {
-			missingTemplateDecls= 0; // too many template declarations
+		if (additionalLevels < 0) {
+			additionalLevels= 0; // too many template declarations
 		}
 		
 		// determine nesting level of parent
-		int level= missingTemplateDecls;
+		int level= additionalLevels;
 		if (!CPPVisitor.isFriendFunctionDeclaration(innerMostTDecl.getDeclaration())) {
 			node= outerMostTDecl.getParent();
 			while (node != null) {
@@ -1565,16 +1558,23 @@
 	static private IType getArgumentTypeForDeduction(IType type, boolean parameterIsAReferenceType) {
 		type = SemanticUtil.getSimplifiedType(type);
 		if (type instanceof ICPPReferenceType) {
-		    type = ((ICPPReferenceType) type).getType();
+		    try {
+                type = ((ICPPReferenceType) type).getType();
+            } catch (DOMException e) {
+            }
 		}
 		IType result = type;
 		if (!parameterIsAReferenceType) {
-			if (type instanceof IArrayType) {
-				result = new CPPPointerType(((IArrayType) type).getType());
-			} else if (type instanceof IFunctionType) {
-				result = new CPPPointerType(type);
-			} else {
-				result = SemanticUtil.getNestedType(type, SemanticUtil.TDEF | SemanticUtil.CVQ | SemanticUtil.PTR_CVQ );
+			try {
+				if (type instanceof IArrayType) {
+					result = new CPPPointerType(((IArrayType) type).getType());
+				} else if (type instanceof IFunctionType) {
+					result = new CPPPointerType(type);
+				} else {
+					result = SemanticUtil.getNestedType(type, SemanticUtil.TDEF | SemanticUtil.CVQ | SemanticUtil.PTR_CVQ );
+				} 
+			} catch (DOMException e) {
+				result = e.getProblem();
 			}
 		}
 		return result;
@@ -1607,32 +1607,6 @@
 				}
 				p = ((ICPPReferenceType) p).getType();
 				a = ((ICPPReferenceType) a).getType();
-			} else if (p instanceof IArrayType) {
-				if (!(a instanceof IArrayType)) {
-					return false;
-				}
-				IArrayType aa= (IArrayType) a;
-				IArrayType pa= (IArrayType) p;
-				IValue as= aa.getSize();
-				IValue ps= pa.getSize();
-				if (as != ps) {
-					if (as == null || ps == null)
-						return false;
-					
-					int parPos= Value.isTemplateParameter(ps);
-					if (parPos >= 0) { 
-						ICPPTemplateArgument old= map.getArgument(parPos);
-						if (old == null) {
-							map.put(parPos, new CPPTemplateArgument(ps, new CPPBasicType(IBasicType.t_int, 0)));
-						} else if (!ps.equals(old.getNonTypeValue())) {
-							return false;
-						}
-					} else if (!ps.equals(as)) {
-						return false;
-					}
-				}
-				p = pa.getType();
-				a = aa.getType();
 			} else if (p instanceof IQualifierType) {
 				if (a instanceof IQualifierType) {
 					a = ((IQualifierType) a).getType(); //TODO a = strip qualifiers from p out of a
@@ -1953,7 +1927,7 @@
 			if (!(paramType instanceof IType))
 				return null;
 
-			IParameter[] functionParameters = new IParameter[] { new CPPParameter((IType) paramType, 0) };
+			IParameter[] functionParameters = new IParameter[] { new CPPParameter((IType) paramType) };
 
 			return new CPPImplicitFunctionTemplate(specialization.getTemplateParameters(), functionParameters);
 		} catch (DOMException e) {
@@ -1962,8 +1936,12 @@
 	}
 
 	static private boolean isValidType(IType t) {
-		while (t instanceof ITypeContainer) {
-			t = ((ITypeContainer) t).getType();
+		try {
+			while (t instanceof ITypeContainer) {
+				t = ((ITypeContainer) t).getType();
+			}
+		} catch (DOMException e) {
+			return false;
 		}
 		return !(t instanceof IProblemBinding);
 	}
@@ -2054,7 +2032,11 @@
 		if (paramType instanceof IFunctionType) {
 			paramType = new CPPPointerType(paramType);
 	    } else if (paramType instanceof IArrayType) {
-	    	paramType = new CPPPointerType(((IArrayType) paramType).getType());
+	    	try {
+	    		paramType = new CPPPointerType(((IArrayType) paramType).getType());
+			} catch (DOMException e) {
+				paramType = e.getProblem();
+			}
 		}
 		Cost cost = Conversions.checkStandardConversionSequence(arg, paramType, false);
 		return cost != null && cost.getRank() != Rank.NO_MATCH;
@@ -2108,30 +2090,30 @@
 	}
 	
 	public static boolean isDependentType(IType t) {
-		while (true) {
-			if (t instanceof ICPPUnknownType)
-				return true;
-			
-			if (t instanceof ICPPFunctionType) {
-				final ICPPFunctionType ft = (ICPPFunctionType) t;
-				if (containsDependentType(ft.getParameterTypes()))
+		try {
+			while (true) {
+				if (t instanceof ICPPUnknownType)
 					return true;
-				t= ft.getReturnType();
-			} else if (t instanceof ICPPPointerToMemberType) {
-				ICPPPointerToMemberType ptmt= (ICPPPointerToMemberType) t;
-				if (isDependentType(ptmt.getMemberOfClass()))
-					return true;
-				t= ptmt.getType();
-			} else if (t instanceof ITypeContainer) {
-				if (t instanceof IArrayType) {
-					IValue asize= ((IArrayType) t).getSize();
-					if (asize != null && Value.isDependentValue(asize))
+				
+				if (t instanceof ICPPFunctionType) {
+					final ICPPFunctionType ft = (ICPPFunctionType) t;
+					if (containsDependentType(ft.getParameterTypes()))
+						return true;
+					t= ft.getReturnType();
+				} else if (t instanceof ICPPPointerToMemberType) {
+					ICPPPointerToMemberType ptmt= (ICPPPointerToMemberType) t;
+					if (isDependentType(ptmt.getMemberOfClass()))
 						return true;
+					t= ptmt.getType();
+				} else if (t instanceof ITypeContainer) {
+					t= ((ITypeContainer) t).getType();
+				} else {
+					return false;
 				}
-				t= ((ITypeContainer) t).getType();
-			} else {
-				return false;
 			}
+		} catch (DOMException e) {
+			// treat as non-dependent
+			return false;
 		}
 	}
 	
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVariableReadWriteFlags.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVariableReadWriteFlags.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 Wind River Systems, Inc. and others.
+ * Copyright (c) 2007 Wind River Systems, Inc. and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,6 +10,7 @@
  *******************************************************************************/ 
 package org.eclipse.cdt.internal.core.dom.parser.cpp.semantics;
 
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IASTName;
 import org.eclipse.cdt.core.dom.ast.IASTNode;
 import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
@@ -49,22 +50,31 @@
 			if (!(type instanceof ICPPReferenceType)) {
 				return READ;
 			}
-			type= ((ICPPReferenceType) type).getType();
-		}
-		while(indirection > 0 && (type instanceof ITypeContainer)) {
-			if (type instanceof IPointerType) {
-				indirection--;
+			try {
+				type= ((ICPPReferenceType) type).getType();
 			}
-			type= ((ITypeContainer) type).getType();
+			catch (DOMException e) {
+				return READ; 	// fallback
+			}
 		}
-		if (indirection == 0) {
-			if (type instanceof IQualifierType) {
-				return ((IQualifierType) type).isConst() ? READ : READ | WRITE;
+		try {
+			while(indirection > 0 && (type instanceof ITypeContainer)) {
+				if (type instanceof IPointerType) {
+					indirection--;
+				}
+				type= ((ITypeContainer) type).getType();
 			}
-			else if (type instanceof IPointerType) {
-				return ((IPointerType) type).isConst() ? READ : READ | WRITE;
+			if (indirection == 0) {
+				if (type instanceof IQualifierType) {
+					return ((IQualifierType) type).isConst() ? READ : READ | WRITE;
+				}
+				else if (type instanceof IPointerType) {
+					return ((IPointerType) type).isConst() ? READ : READ | WRITE;
+				}
 			}
 		}
+		catch (DOMException e) {
+		}
 		return READ | WRITE;	// fallback
 	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java	Wed Aug 05 17:35:39 2009 -0500
@@ -166,6 +166,7 @@
 import org.eclipse.cdt.internal.core.dom.parser.cpp.GPPPointerToMemberType;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.GPPPointerType;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalBinding;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalFunction;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPUnknownBinding;
 import org.eclipse.cdt.internal.core.index.IIndexScope;
 
@@ -366,9 +367,11 @@
 		
 		// 7.1.5.3-2 ... If name lookup does not find a declaration for the name, the elaborated-type-specifier is ill-formed
 		// unless it is of the simple form class-key identifier
-	    if (mustBeSimple && elabType.getName() instanceof ICPPASTQualifiedName)
+	    if (mustBeSimple && 
+	    		(elabType.getName() instanceof ICPPASTQualifiedName || elabType.getKind() == IASTElaboratedTypeSpecifier.k_enum)) {
 	    	return binding;
-	    
+	    }
+
         try {
         	boolean template = false;
         	ICPPScope scope = (ICPPScope) getContainingScope(name);
@@ -453,7 +456,6 @@
         }
 		return binding;
 	}
-	
 	private static IBinding createBinding(IASTDeclaration declaration) {
 		if (declaration instanceof ICPPASTNamespaceDefinition) {
 			ICPPASTNamespaceDefinition namespaceDef = (ICPPASTNamespaceDefinition) declaration;
@@ -499,7 +501,6 @@
 
 		return null;
 	}
-	
 	private static IBinding createBinding(IASTDeclarator declarator) {
 		IASTNode parent = findOutermostDeclarator(declarator).getParent();
 		declarator= findInnermostDeclarator(declarator);
@@ -557,13 +558,16 @@
 				if (!(findOutermostDeclarator(fdtor).getParent() instanceof IASTDeclaration) ||
 						findTypeRelevantDeclarator(fdtor) != fdtor)
 					return null;
-				IASTParameterDeclaration[] params = fdtor.getParameters();
-				int i=0;
-				for(;i<params.length; i++) {
-					if (params[i] == param)
-						break;
+				IBinding temp = findInnermostDeclarator(fdtor).getName().resolveBinding();
+				if (temp instanceof ICPPInternalFunction) {
+					return ((ICPPInternalFunction) temp).resolveParameter(param);
+				} else if (temp instanceof IProblemBinding) {
+				    //problems with the function, still create binding for the parameter
+				    return new CPPParameter(name);
+				} else if (temp instanceof IIndexBinding) {
+					return new CPPParameter(name);
 				}
-				return new CPPParameter(name, i);
+				return null;
 			} else if (parent instanceof ICPPASTTemplateDeclaration) {
 				return CPPTemplates.createBinding(param);
 			}
@@ -598,15 +602,40 @@
         
         IASTSimpleDeclaration simpleDecl = (parent instanceof IASTSimpleDeclaration) ?
         		(IASTSimpleDeclaration) parent : null;
-        if (simpleDecl != null &&
+        if (parent instanceof ICPPASTParameterDeclaration) {
+			ICPPASTParameterDeclaration param = (ICPPASTParameterDeclaration) parent;
+			parent = param.getParent();
+			if (parent instanceof IASTStandardFunctionDeclarator) {
+				IASTStandardFunctionDeclarator fdtor = (IASTStandardFunctionDeclarator) param.getParent();
+				// if the fdtor does not declare a function we don't create a binding for the parameter.
+				if (!(findOutermostDeclarator(fdtor).getParent() instanceof IASTDeclaration) ||
+						findTypeRelevantDeclarator(fdtor) != fdtor)
+					return null;
+				IBinding temp = findInnermostDeclarator(fdtor).getName().resolveBinding();
+				if (temp instanceof ICPPInternalFunction) {
+					binding = ((ICPPInternalFunction) temp).resolveParameter(param);
+				} else if (temp instanceof IProblemBinding) {
+				    //problems with the function, still create binding for the parameter
+				    binding = new CPPParameter(name);
+				} else if (temp instanceof IIndexBinding) {
+					binding= new CPPParameter(name);
+				}
+			} else if (parent instanceof ICPPASTTemplateDeclaration) {
+				return CPPTemplates.createBinding(param);
+			}
+		} else if (simpleDecl != null &&
 				simpleDecl.getDeclSpecifier().getStorageClass() == IASTDeclSpecifier.sc_typedef) {
 		    if (binding instanceof ICPPInternalBinding && binding instanceof ITypedef && name.isActive()) {
-		        IType t1 = ((ITypedef) binding).getType();
-				IType t2 = createType(declarator);
-				if (t1 != null && t2 != null && t1.isSameType(t2)) {
-				    ASTInternal.addDeclaration(binding, name);
-				    return binding;
-				}
+		        try {
+                    IType t1 = ((ITypedef) binding).getType();
+                    IType t2 = createType(declarator);
+                    if (t1 != null && t2 != null && t1.isSameType(t2)) {
+                        ASTInternal.addDeclaration(binding, name);
+                        return binding;
+                    }
+                } catch (DOMException e) {
+                	return e.getProblem();
+                }
                 return new ProblemBinding(name, IProblemBinding.SEMANTIC_INVALID_REDECLARATION);
 		    }
 		    // if we don't resolve the target type first, we get a problem binding in case the typedef
@@ -619,10 +648,6 @@
 			if (binding instanceof ICPPInternalBinding && binding instanceof IFunction && name.isActive()) {
 			    IFunction function = (IFunction) binding;
 			    if (CPPSemantics.isSameFunction(function, funcDeclarator)) {
-			    	binding= CPPSemantics.checkDeclSpecifier(binding, name, parent);
-			    	if (binding instanceof IProblemBinding)
-			    		return binding;
-
 			        ICPPInternalBinding internal = (ICPPInternalBinding) function;
 			        if (parent instanceof IASTSimpleDeclaration) {
 			            ASTInternal.addDeclaration(internal, name);
@@ -653,7 +678,6 @@
 				binding = template ? (ICPPFunction) new CPPFunctionTemplate(name)
 								   : new CPPFunction((ICPPASTFunctionDeclarator) funcDeclarator);
 			}
-			binding= CPPSemantics.checkDeclSpecifier(binding, name, parent);
 		} else if (simpleDecl != null) {
     	    IType t1 = null, t2 = null;
 		    if (binding != null && binding instanceof IVariable && !(binding instanceof IIndexBinding)) {
@@ -664,7 +688,7 @@
                 }
 		    }
 		    if (t1 != null && t2 != null) {
-				if (t1.isSameType(t2) || isCompatibleArray(t1, t2) != null) {
+		    	if (t1.isSameType(t2)) {
 		    		ASTInternal.addDeclaration(binding, name);
 		    	} else {
 		    		binding = new ProblemBinding(name, IProblemBinding.SEMANTIC_INVALID_REDECLARATION);
@@ -679,24 +703,6 @@
 		return binding;
 	}
 
-	private static IType isCompatibleArray(IType t1, IType t2) {
-		if (t1 instanceof IArrayType && t2 instanceof IArrayType) {
-			IArrayType a1 = (IArrayType) t1;
-			IArrayType a2 = (IArrayType) t2;
-			if (!isSameType(a1.getType(), a2.getType())) {
-				return null;
-			}
-			if (a1.getSize() == null) {
-				if (a2.getSize() != null) {
-					return a2;
-				}
-			} else if (a2.getSize() == null) {
-				return a1;
-			}
-		}
-		return null;
-	}
-
 	public static boolean isConstructor(IScope containingScope, IASTDeclarator declarator) {
 	    if (containingScope == null || !(containingScope instanceof ICPPClassScope))
 	        return false;
@@ -2094,22 +2100,4 @@
 		}
 		return false;
 	}
-
-	public static boolean doesNotSpecifyType(IASTDeclSpecifier declspec) {
-		if (declspec instanceof ICPPASTSimpleDeclSpecifier) {
-			ICPPASTSimpleDeclSpecifier ds= (ICPPASTSimpleDeclSpecifier) declspec;
-			if (ds.getType() == IASTSimpleDeclSpecifier.t_unspecified) {
-				if (ds instanceof IGPPASTSimpleDeclSpecifier) {
-					final IGPPASTSimpleDeclSpecifier gds = (IGPPASTSimpleDeclSpecifier) ds;
-					if (gds.isLongLong() || gds.getTypeofExpression() != null)
-						return false;
-				}
-				if (ds.isShort() || ds.isLong() || ds.isSigned() || ds.isUnsigned())
-					return false;
-
-				return true;
-			}
-		}
-		return false;
-	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/Conversions.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/Conversions.java	Wed Aug 05 17:35:39 2009 -0500
@@ -24,11 +24,13 @@
 import org.eclipse.cdt.core.dom.ast.IBasicType;
 import org.eclipse.cdt.core.dom.ast.IBinding;
 import org.eclipse.cdt.core.dom.ast.IEnumeration;
+import org.eclipse.cdt.core.dom.ast.IEnumerator;
 import org.eclipse.cdt.core.dom.ast.IFunctionType;
 import org.eclipse.cdt.core.dom.ast.IPointerType;
 import org.eclipse.cdt.core.dom.ast.IProblemBinding;
 import org.eclipse.cdt.core.dom.ast.IQualifierType;
 import org.eclipse.cdt.core.dom.ast.IType;
+import org.eclipse.cdt.core.dom.ast.IValue;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPBase;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPBasicType;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
@@ -52,7 +54,9 @@
  */
 public class Conversions {
 	enum UDCMode {allowUDC, noUDC, deferUDC}
-
+	private static final int IS_LONG = ICPPBasicType.IS_LONG;
+	private static final int IS_UNSIGNED = ICPPBasicType.IS_UNSIGNED;
+	
 	/**
 	 * Computes the cost of an implicit conversion sequence
 	 * [over.best.ics] 13.3.3.1
@@ -669,7 +673,14 @@
 				}
 			} else if (src instanceof IEnumeration) {
 				if (tType == IBasicType.t_int || tType == IBasicType.t_unspecified) {
-					canPromote= true;
+					if (trg instanceof ICPPBasicType) {
+						int qualifiers = getEnumIntType((IEnumeration) src);
+						if (qualifiers == ((ICPPBasicType) trg).getQualifierBits()) {
+							canPromote = true;
+						}
+					} else {
+						canPromote = true;
+					}
 				}
 			}
 		}
@@ -679,7 +690,7 @@
 		}
 		return false;
 	}
-	
+
 	/**
 	 * Attempts conversions and returns whether the conversion succeeded.
 	 * [4.7]  Integral conversions
@@ -815,4 +826,46 @@
 		
 		return true;
 	}
+
+	/**
+	 * Returns IS_LONG, IS_UNSIGNED qualifiers of the first of the following types that can represent
+	 * all the values of an enumeration: int, unsigned int, long, or unsigned long.
+	 * @param enumeration
+	 * @return qualifiers of the corresponding integer type.
+	 */
+	private static int getEnumIntType(IEnumeration enumeration) {
+		long minValue = 0;
+		long maxValue = 0;
+		try {
+			IEnumerator[] enumerators = enumeration.getEnumerators();
+			for (IEnumerator enumerator : enumerators) {
+				IValue value = enumerator.getValue();
+				if (value != null) {
+					Long val = value.numericalValue();
+					if (val != null) {
+						long v = val.longValue();
+						if (minValue > v) {
+							minValue = v;
+						}
+						if (maxValue < v) {
+							maxValue = v;
+						}
+					}
+				}
+			}
+		} catch (DOMException e) {
+			return 0;
+		}
+		// TODO(sprigogin): Use values of __INT_MAX__ and __LONG_MAX__ macros
+		if (minValue >= Integer.MIN_VALUE && maxValue <= Integer.MAX_VALUE) {
+			return 0;
+		} else if (minValue >= 0 && maxValue <= 0xFFFFFFFFL) {
+			return IS_UNSIGNED;
+		} else if (minValue >= Long.MIN_VALUE && maxValue <= Long.MAX_VALUE) {
+			return IS_LONG;
+		} else {
+			// This branch is unreachable due to limitations of Java long type. 
+			return IS_UNSIGNED | IS_LONG;
+		}
+	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/LookupData.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/LookupData.java	Wed Aug 05 17:35:39 2009 -0500
@@ -18,31 +18,7 @@
 import java.util.List;
 import java.util.Map;
 
-import org.eclipse.cdt.core.dom.ast.ASTNodeProperty;
-import org.eclipse.cdt.core.dom.ast.DOMException;
-import org.eclipse.cdt.core.dom.ast.IASTArraySubscriptExpression;
-import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTExpressionList;
-import org.eclipse.cdt.core.dom.ast.IASTFieldReference;
-import org.eclipse.cdt.core.dom.ast.IASTFunctionCallExpression;
-import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition;
-import org.eclipse.cdt.core.dom.ast.IASTIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTInitializer;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTNamedTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTTypeId;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.IPointerType;
-import org.eclipse.cdt.core.dom.ast.IScope;
-import org.eclipse.cdt.core.dom.ast.IType;
+import org.eclipse.cdt.core.dom.ast.*;
 import org.eclipse.cdt.core.dom.ast.c.ICASTFieldDesignator;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTConstructorChainInitializer;
@@ -88,6 +64,10 @@
 	 */
 	public ObjectSet<IScope> visited= new ObjectSet<IScope>(1);
 	
+	/*
+	 * Used to detect circular inheritance
+	 */
+	public ObjectSet<IScope> inheritanceChain;
 	
 	@SuppressWarnings("unchecked")
 	public ObjectSet<IScope> associated = ObjectSet.EMPTY_SET;
@@ -580,8 +560,8 @@
 			}
 			if (checkForDependentName) {
 				IType[] types= getFunctionArgumentTypes();
-				for (IType type : types) {
-					if (CPPTemplates.isDependentType(type)) {
+				for (int i = 0; i < types.length; i++) {
+					if (CPPTemplates.isDependentType(types[i])) {
 						checkPointOfDecl= false;
 						break;
 					}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/SemanticUtil.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/SemanticUtil.java	Wed Aug 05 17:35:39 2009 -0500
@@ -189,49 +189,53 @@
 		boolean ptr= (options & PTR) != 0;
 		boolean mptr= (options & MPTR) != 0;
 		assert !(ptrcvq && (ptr || mptr));
-		while (true) {
-			IType t= null;
-			if (type instanceof IPointerType) {
-				final boolean isMbrPtr = type instanceof ICPPPointerToMemberType;
-				if ((ptr && !isMbrPtr) || (mptr && isMbrPtr)) {
-					t= ((IPointerType) type).getType();
-				} else if (ptrcvq) {
-					if (type instanceof CPPPointerType) {
-						return ((CPPPointerType) type).stripQualifiers();
-					}
-					IPointerType p= (IPointerType) type;
-					if (p.isConst() || p.isVolatile()) {
-						if (p instanceof ICPPPointerToMemberType) {
-							final IType memberOfClass = ((ICPPPointerToMemberType) p).getMemberOfClass();
-							if (memberOfClass instanceof ICPPClassType)
-								return new CPPPointerToMemberType(p.getType(), memberOfClass, false, false);
-						} else {
-							return new CPPPointerType(p.getType(), false, false);
+		try {
+			while (true) {
+				IType t= null;
+				if (type instanceof IPointerType) {
+					final boolean isMbrPtr = type instanceof ICPPPointerToMemberType;
+					if ((ptr && !isMbrPtr) || (mptr && isMbrPtr)) {
+						t= ((IPointerType) type).getType();
+					} else if (ptrcvq) {
+						if (type instanceof CPPPointerType) {
+							return ((CPPPointerType) type).stripQualifiers();
+						}
+						IPointerType p= (IPointerType) type;
+						if (p.isConst() || p.isVolatile()) {
+							if (p instanceof ICPPPointerToMemberType) {
+								final IType memberOfClass = ((ICPPPointerToMemberType) p).getMemberOfClass();
+								if (memberOfClass instanceof ICPPClassType)
+									return new CPPPointerToMemberType(p.getType(), memberOfClass, false, false);
+							} else {
+								return new CPPPointerType(p.getType(), false, false);
+							}
 						}
 					}
+				} else if (tdef && type instanceof ITypedef) {
+					t= ((ITypedef) type).getType();
+				} else if (type instanceof IQualifierType) {
+					final IQualifierType qt = (IQualifierType) type;
+					if (((options & CVQ) != 0)) {
+						t= qt.getType();
+					} else if (tdef) {
+						IType temp= qt.getType();
+						if (temp instanceof ITypedef) {
+							temp= getNestedType(temp, TDEF);
+							return addQualifiers(temp, qt.isConst(), qt.isVolatile());
+						}
+					}
+				} else if ((options & ARRAY) != 0 && type instanceof IArrayType) {
+					t= ((IArrayType) type).getType();
+				} else if ((options & REF) != 0 && type instanceof ICPPReferenceType) {
+					t= ((ICPPReferenceType) type).getType();
 				}
-			} else if (tdef && type instanceof ITypedef) {
-				t= ((ITypedef) type).getType();
-			} else if (type instanceof IQualifierType) {
-				final IQualifierType qt = (IQualifierType) type;
-				if (((options & CVQ) != 0)) {
-					t= qt.getType();
-				} else if (tdef) {
-					IType temp= qt.getType();
-					if (temp instanceof ITypedef) {
-						temp= getNestedType(temp, TDEF);
-						return addQualifiers(temp, qt.isConst(), qt.isVolatile());
-					}
-				}
-			} else if ((options & ARRAY) != 0 && type instanceof IArrayType) {
-				t= ((IArrayType) type).getType();
-			} else if ((options & REF) != 0 && type instanceof ICPPReferenceType) {
-				t= ((ICPPReferenceType) type).getType();
+				if (t == null)
+					return type;
+				
+				type= t;
 			}
-			if (t == null)
-				return type;
-			
-			type= t;
+		} catch (DOMException e) {
+			return e.getProblem();
 		}
 	}
 
@@ -349,9 +353,13 @@
 	public static IType adjustParameterType(final IType pt, boolean forFunctionType) {
 		// bug 239975
 		IType t= SemanticUtil.getNestedType(pt, TDEF);
-		if (t instanceof IArrayType) {
-			IArrayType at = (IArrayType) t;
-			return new CPPPointerType(at.getType());
+		try {
+			if (t instanceof IArrayType) {
+				IArrayType at = (IArrayType) t;
+				return new CPPPointerType(at.getType());
+			}
+		} catch (DOMException e) {
+			return e.getProblem();
 		}
 		if (t instanceof IFunctionType) {
 			return new CPPPointerType(pt);
@@ -367,25 +375,28 @@
 	
 	public static IType addQualifiers(IType baseType, boolean cnst, boolean vol) {
 		if (cnst || vol) {
-			if (baseType instanceof IQualifierType) {
-				IQualifierType qt= (IQualifierType) baseType;
-				if ((cnst && !qt.isConst()) || (vol && !qt.isVolatile())) {
-					return new CPPQualifierType(qt.getType(), cnst || qt.isConst(), vol || qt.isVolatile());
+			try {
+				if (baseType instanceof IQualifierType) {
+					IQualifierType qt= (IQualifierType) baseType;
+					if ((cnst && !qt.isConst()) || (vol && !qt.isVolatile())) {
+						return new CPPQualifierType(qt.getType(), cnst || qt.isConst(), vol || qt.isVolatile());
+					}
+					return baseType;
+				} else if (baseType instanceof ICPPPointerToMemberType) {
+					ICPPPointerToMemberType pt= (ICPPPointerToMemberType) baseType;
+					if ((cnst && !pt.isConst()) || (vol && !pt.isVolatile())) {
+						return new CPPPointerToMemberType(pt.getType(), pt.getMemberOfClass(), cnst
+								|| pt.isConst(), vol || pt.isVolatile());
+					}
+					return baseType;
+				} else if (baseType instanceof IPointerType) {
+					IPointerType pt= (IPointerType) baseType;
+					if ((cnst && !pt.isConst()) || (vol && !pt.isVolatile())) {
+						return new CPPPointerType(pt.getType(), cnst || pt.isConst(), vol || pt.isVolatile());
+					}
+					return baseType;
 				}
-				return baseType;
-			} else if (baseType instanceof ICPPPointerToMemberType) {
-				ICPPPointerToMemberType pt= (ICPPPointerToMemberType) baseType;
-				if ((cnst && !pt.isConst()) || (vol && !pt.isVolatile())) {
-					return new CPPPointerToMemberType(pt.getType(), pt.getMemberOfClass(), cnst
-							|| pt.isConst(), vol || pt.isVolatile());
-				}
-				return baseType;
-			} else if (baseType instanceof IPointerType) {
-				IPointerType pt= (IPointerType) baseType;
-				if ((cnst && !pt.isConst()) || (vol && !pt.isVolatile())) {
-					return new CPPPointerType(pt.getType(), cnst || pt.isConst(), vol || pt.isVolatile());
-				}
-				return baseType;
+			} catch (DOMException e) {
 			} 
 			
 			return new CPPQualifierType(baseType, cnst, vol);
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/ArrayTypeClone.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/ArrayTypeClone.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,12 +1,12 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 QNX Software Systems and others.
+ * Copyright (c) 2007 QNX Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *    Bryan Wilkinson (QNX) - Initial API and implementation
+ * QNX - Initial API and implementation
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.index;
 
@@ -15,10 +15,11 @@
 import org.eclipse.cdt.core.dom.ast.IArrayType;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.core.dom.ast.ITypedef;
-import org.eclipse.cdt.core.dom.ast.IValue;
-import org.eclipse.cdt.core.parser.util.CharArrayUtils;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
 
+/**
+ * @author Bryan Wilkinson
+ */
 public class ArrayTypeClone implements IIndexType, IArrayType, ITypeContainer {
 	private final IArrayType delegate;
 	private IType type;
@@ -34,33 +35,23 @@
 		if (!(type instanceof IArrayType)) 
 			return false;
 
-		IType type1= this.getType();
-		if (type1 == null)
-			return false;
+		try {
+			IType type1= this.getType();
+			if (type1 == null)
+				return false;
 
-		IArrayType rhs = (IArrayType) type;
-		if (type1.isSameType(rhs.getType())) {
-			IValue s1= getSize();
-			IValue s2= rhs.getSize();
-			if (s1 == s2)
-				return true;
-			if (s1 == null || s2 == null)
-				return false;
-			return CharArrayUtils.equals(s1.getSignature(), s2.getSignature());
+			IArrayType rhs = (IArrayType) type;
+			return type1.isSameType(rhs.getType());
+		} catch (DOMException e) {
 		}
 		return false;
 	}
 
-	public IValue getSize() {
-		return delegate.getSize();
-	}
-	
-	@Deprecated
 	public IASTExpression getArraySizeExpression() throws DOMException {
 		return delegate.getArraySizeExpression();
 	}
 
-	public IType getType() {
+	public IType getType() throws DOMException {
 		if (type == null) {
 			return delegate.getType();
 		}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/CPPReferenceTypeClone.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/CPPReferenceTypeClone.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,20 +1,24 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 QNX Software Systems and others.
+ * Copyright (c) 2007 QNX Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *    Bryan Wilkinson (QNX) - Initial API and implementation
+ * QNX - Initial API and implementation
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.index;
 
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.core.dom.ast.ITypedef;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPReferenceType;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
 
+/**
+ * @author Bryan Wilkinson
+ */
 public class CPPReferenceTypeClone implements ICPPReferenceType, ITypeContainer, IIndexType {
 	private final ICPPReferenceType delegate;
 	private IType type;
@@ -23,7 +27,7 @@
 		this.delegate = reference;
 	}
 
-	public IType getType() {
+	public IType getType() throws DOMException {
 		if (type == null) {
 			return delegate.getType();
 		}
@@ -38,9 +42,12 @@
 			return false;
 
 		ICPPReferenceType rhs = (ICPPReferenceType) type;
-		IType type1= getType();
-		if (type1 != null) {
-			return type1.isSameType(rhs.getType());
+		try {
+			IType type1= getType();
+			if (type1 != null) {
+				return type1.isSameType(rhs.getType());
+			}
+		} catch (DOMException e) {
 		}
 		return false;
 	}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/CPPTypedefClone.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/CPPTypedefClone.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,12 +1,12 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 QNX Software Systems and others.
+ * Copyright (c) 2007, 2008 QNX Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *    Bryan Wilkinson (QNX) - Initial API and implementation
+ * QNX - Initial API and implementation
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.index;
 
@@ -20,6 +20,9 @@
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
 import org.eclipse.core.runtime.CoreException;
 
+/**
+ * @author Bryan Wilkinson
+ */
 public class CPPTypedefClone implements ITypedef, ITypeContainer, IIndexType, ICPPBinding {
 	protected final ITypedef delegate;
 	private IType type;
@@ -28,7 +31,7 @@
 		this.delegate = typedef;
 	}
 
-	public IType getType() {
+	public IType getType() throws DOMException {
 		if (type == null) {
 			return delegate.getType();
 		}
@@ -61,14 +64,18 @@
 	}
 
 	public boolean isSameType(IType type) {
-		IType myrtype = getType();
-		if (myrtype == null)
-			return false;
+		try {
+			IType myrtype = getType();
+			if (myrtype == null)
+				return false;
 
-		if (type instanceof ITypedef) {
-			type= ((ITypedef) type).getType();
+			if (type instanceof ITypedef) {
+				type= ((ITypedef) type).getType();
+			}
+			return myrtype.isSameType(type);
+		} catch (DOMException e) {
 		}
-		return myrtype.isSameType(type);
+		return false;
 	}
 
 	public void setType(IType type) {
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IIndexCPPBindingConstants.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IIndexCPPBindingConstants.java	Wed Aug 05 17:35:39 2009 -0500
@@ -61,5 +61,4 @@
 	 int CPP_FRIEND_DECLARATION = IIndexBindingConstants.LAST_CONSTANT + 45;
 	 int CPP_TEMPLATE_TEMPLATE_PARAMETER= IIndexBindingConstants.LAST_CONSTANT + 46;
 	 int CPP_CLASS_TEMPLATE_PARTIAL_SPEC_SPEC = IIndexBindingConstants.LAST_CONSTANT + 47;
-	 int CPP_UNKNOWN_BINDING = IIndexBindingConstants.LAST_CONSTANT + 48;
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IIndexFragment.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IIndexFragment.java	Wed Aug 05 17:35:39 2009 -0500
@@ -79,11 +79,6 @@
 	public static final String PROPERTY_FRAGMENT_FORMAT_VERSION= "org.eclipse.cdt.internal.core.index.fragment.format.version"; //$NON-NLS-1$
 	
 	/**
-	 * Property key for storing whether indexer has to resume or not.
-	 */
-	public static final String PROPERTY_RESUME_INDEXER= "org.eclipse.cdt.internal.core.index.resume"; //$NON-NLS-1$
-		
-	/**
 	 * Returns the file for the given location and linkage. 
 	 * May return <code>null</code>, if no such file exists.
 	 * This method may only return files that are actually managed by this fragment.
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/PointerTypeClone.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/PointerTypeClone.java	Wed Aug 05 17:35:39 2009 -0500
@@ -6,17 +6,21 @@
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *    Bryan Wilkinson (QNX) - Initial API and implementation
+ *    QNX - Initial API and implementation
  *    Markus Schorn (Wind River Systems)
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.index;
 
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IPointerType;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.core.dom.ast.ITypedef;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPPointerToMemberType;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
 
+/**
+ * @author Bryan Wilkinson
+ */
 public class PointerTypeClone implements IPointerType, ITypeContainer, IIndexType {
 	protected final IPointerType delegate;
 	private IType type;
@@ -25,7 +29,7 @@
 		this.delegate = pointer;
 	}
 
-	public IType getType() {
+	public IType getType() throws DOMException {
 		if (type == null) {
 			return delegate.getType();
 		}
@@ -51,11 +55,14 @@
 	        return false;
 
 		IPointerType rhs = (IPointerType) type;
-		if (isConst() == rhs.isConst() && isVolatile() == rhs.isVolatile()) {
-			IType type1= getType();
-			if (type1 != null) {
-				return type1.isSameType(rhs.getType());
+		try {
+			if (isConst() == rhs.isConst() && isVolatile() == rhs.isVolatile()) {
+				IType type1= getType();
+				if (type1 != null) {
+					return type1.isSameType(rhs.getType());
+				}
 			}
+		} catch (DOMException e) {
 		}
 		return false;
 	}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/QualifierTypeClone.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/QualifierTypeClone.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,21 +1,24 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 QNX Software Systems and others.
+ * Copyright (c) 2007 QNX Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *    Bryan Wilkinson (QNX) - Initial API and implementation
- *    Markus Schorn (Wind River Systems)
+ * QNX - Initial API and implementation
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.index;
 
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IQualifierType;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.core.dom.ast.ITypedef;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
 
+/**
+ * @author Bryan Wilkinson
+ */
 public class QualifierTypeClone implements IQualifierType, ITypeContainer, IIndexType {
 	private final IQualifierType delegate;
 	private IType type;
@@ -24,7 +27,7 @@
 		this.delegate = qualifier;
 	}
 
-	public IType getType() {
+	public IType getType() throws DOMException {
 		if (type == null) {
 			return delegate.getType();
 		}
@@ -46,9 +49,12 @@
 			return false;
 
 		IQualifierType pt = (IQualifierType) type;
-		if (isConst() == pt.isConst() && isVolatile() == pt.isVolatile()) {
-			IType myType= getType();
-			return myType != null && myType.isSameType(pt.getType());
+		try {
+			if (isConst() == pt.isConst() && isVolatile() == pt.isVolatile()) {
+				IType myType= getType();
+				return myType != null && myType.isSameType(pt.getType());
+			}
+		} catch (DOMException e) {
 		}
 		return false;
 	}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/CompositeArrayType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/CompositeArrayType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,18 +1,18 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 Symbian Software Systems and others.
+ * Copyright (c) 2007 Symbian Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *    Andrew Ferguson (Symbian) - Initial implementation
+ * Andrew Ferguson (Symbian) - Initial implementation
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.index.composite;
 
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IASTExpression;
 import org.eclipse.cdt.core.dom.ast.IArrayType;
-import org.eclipse.cdt.core.dom.ast.IValue;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
 import org.eclipse.cdt.internal.core.index.ArrayTypeClone;
 
@@ -21,17 +21,12 @@
 		super((ITypeContainer) arrayType, cf);
 	}
 
+	public IASTExpression getArraySizeExpression() throws DOMException {
+		fail(); return null;
+	}
+	
 	@Override
 	public Object clone() {
 		return new ArrayTypeClone(this);
 	}
-
-	public IValue getSize() {
-		return ((IArrayType) type).getSize();
-	}
-
-	@Deprecated
-	public IASTExpression getArraySizeExpression() {
-		return null;
-	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/CompositeFunctionType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/CompositeFunctionType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 Symbian Software Systems and others.
+ * Copyright (c) 2007 Symbian Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.index.composite;
 
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IFunctionType;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.internal.core.index.IIndexType;
@@ -20,7 +21,7 @@
 		super(rtype, cf);
 	}
 
-	public IType[] getParameterTypes() {
+	public IType[] getParameterTypes() throws DOMException {
 		IType[] result = ((IFunctionType) type).getParameterTypes();
 		for (int i = 0; i < result.length; i++) {
 			result[i] = cf.getCompositeType((IIndexType)result[i]);
@@ -28,7 +29,7 @@
 		return result;
 	}
 
-	public IType getReturnType() {
+	public IType getReturnType() throws DOMException {
 		return cf.getCompositeType((IIndexType) ((IFunctionType) type).getReturnType());
 	}
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/CompositePointerType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/CompositePointerType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,22 +1,23 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 Symbian Software Systems and others.
+ * Copyright (c) 2007 Symbian Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *    Andrew Ferguson (Symbian) - Initial implementation
+ * Andrew Ferguson (Symbian) - Initial implementation
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.index.composite;
 
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IPointerType;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
 import org.eclipse.cdt.internal.core.index.PointerTypeClone;
 
 public class CompositePointerType extends CompositeTypeContainer implements IPointerType {
-	public CompositePointerType(IPointerType pointerType, ICompositesFactory cf) {
+	public CompositePointerType(IPointerType pointerType, ICompositesFactory cf) throws DOMException {
 		super((ITypeContainer) pointerType, cf);
 	}
 	
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/CompositeQualifierType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/CompositeQualifierType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 Symbian Software Systems and others.
+ * Copyright (c) 2007, 2008 Symbian Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,13 +10,14 @@
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.index.composite;
 
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IQualifierType;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
 import org.eclipse.cdt.internal.core.index.QualifierTypeClone;
 
 public class CompositeQualifierType extends CompositeTypeContainer implements IQualifierType {
-	public CompositeQualifierType(IQualifierType qualifierType, ICompositesFactory cf) {
+	public CompositeQualifierType(IQualifierType qualifierType, ICompositesFactory cf) throws DOMException {
 		super((ITypeContainer) qualifierType, cf);
 	}
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/CompositeTypeContainer.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/CompositeTypeContainer.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 Symbian Software Systems and others.
+ * Copyright (c) 2007 Symbian Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,9 +8,11 @@
  * Contributors:
  *    Andrew Ferguson (Symbian) - Initial implementation
  *******************************************************************************/
+
 package org.eclipse.cdt.internal.core.index.composite;
 
 import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
 import org.eclipse.cdt.internal.core.index.IIndexType;
@@ -21,12 +23,16 @@
 		super(rtype, cf);
 	}
 
-	public final IType getType() {
+	public final IType getType() throws DOMException {
 		return cf.getCompositeType((IIndexType) ((ITypeContainer) type).getType());
 	}
 
 	@Override
 	public String toString() {
-		return ASTTypeUtil.getType(getType());
+		try {
+			return ASTTypeUtil.getType(getType());
+		} catch (DOMException e) {
+			return ""; //$NON-NLS-1$
+		}
 	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/ICompositesFactory.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/ICompositesFactory.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 Symbian Software Systems and others.
+ * Copyright (c) 2007, 2008 Symbian Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.index.composite;
 
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IBinding;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.core.index.IIndexBinding;
@@ -25,7 +26,7 @@
 	 * Returns a composite (in the sense of potentially spanning multiple index fragments - i.e. not to be confused
 	 * with ICompositeType) type for the specified type.
 	 */
-	public IType getCompositeType(IIndexType rtype);
+	public IType getCompositeType(IIndexType rtype) throws DOMException;
 
 	/**
 	 * Returns a composite (index context carrying) binding for the specified binding. It does not
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/c/CCompositesFactory.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/c/CCompositesFactory.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 Symbian Software Systems and others.
+ * Copyright (c) 2007, 2008 Symbian Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -68,7 +68,7 @@
 	/* 
 	 * @see org.eclipse.cdt.internal.core.index.composite.cpp.ICompositesFactory#getCompositeType(org.eclipse.cdt.core.index.IIndex, org.eclipse.cdt.core.dom.ast.IType)
 	 */
-	public IType getCompositeType(IIndexType rtype) {
+	public IType getCompositeType(IIndexType rtype) throws DOMException {
 		IType result;
 		
 		if(rtype==null) {
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/c/CompositeCTypedef.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/c/CompositeCTypedef.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,15 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 Symbian Software Systems and others.
+ * Copyright (c) 2007 Symbian Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *    Andrew Ferguson (Symbian) - Initial implementation
+ * Andrew Ferguson (Symbian) - Initial implementation
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.index.composite.c;
 
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.core.dom.ast.ITypedef;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
@@ -22,7 +23,7 @@
 		super(cf, rbinding);
 	}
 
-	public IType getType() {
+	public IType getType() throws DOMException {
 		IType type = ((ITypedef)rbinding).getType();
 		return cf.getCompositeType((IIndexType)type);
 	}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CPPCompositesFactory.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CPPCompositesFactory.java	Wed Aug 05 17:35:39 2009 -0500
@@ -12,6 +12,7 @@
 package org.eclipse.cdt.internal.core.index.composite.cpp;
 
 import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IASTName;
 import org.eclipse.cdt.core.dom.ast.IArrayType;
 import org.eclipse.cdt.core.dom.ast.IBasicType;
@@ -116,7 +117,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.index.composite.cpp.ICompositesFactory#getCompositeType(org.eclipse.cdt.core.index.IIndex, org.eclipse.cdt.core.dom.ast.IType)
 	 */
-	public IType getCompositeType(IIndexType rtype) {
+	public IType getCompositeType(IIndexType rtype) throws DOMException {
 		IType result;
 
 		if (rtype instanceof ICPPSpecialization) {
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPPointerToMemberType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPPointerToMemberType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -11,6 +11,7 @@
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.index.composite.cpp;
 
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPPointerToMemberType;
 import org.eclipse.cdt.internal.core.index.CPPPointerToMemberTypeClone;
@@ -20,7 +21,7 @@
 
 class CompositeCPPPointerToMemberType extends CompositePointerType implements ICPPPointerToMemberType {
 	
-	CompositeCPPPointerToMemberType(ICompositesFactory cf, ICPPPointerToMemberType pointerToMemberType) {
+	CompositeCPPPointerToMemberType(ICompositesFactory cf, ICPPPointerToMemberType pointerToMemberType) throws DOMException {
 		super(pointerToMemberType, cf);
 	}
 	
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPReferenceType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPReferenceType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,15 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 Symbian Software Systems and others.
+ * Copyright (c) 2007 Symbian Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *    Andrew Ferguson (Symbian) - Initial implementation
+ * Andrew Ferguson (Symbian) - Initial implementation
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.index.composite.cpp;
 
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPReferenceType;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
 import org.eclipse.cdt.internal.core.index.CPPReferenceTypeClone;
@@ -17,7 +18,7 @@
 import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
 
 class CompositeCPPReferenceType extends CompositeTypeContainer implements ICPPReferenceType {
-	public CompositeCPPReferenceType(ICPPReferenceType referenceType, ICompositesFactory cf) {
+	public CompositeCPPReferenceType(ICPPReferenceType referenceType, ICompositesFactory cf) throws DOMException {
 		super((ITypeContainer) referenceType, cf);
 	}
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPTypedef.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPTypedef.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,15 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 Symbian Software Systems and others.
+ * Copyright (c) 2007, 2008 Symbian Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *    Andrew Ferguson (Symbian) - Initial implementation
+ * Andrew Ferguson (Symbian) - Initial implementation
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.index.composite.cpp;
 
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.core.dom.ast.ITypedef;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding;
@@ -23,7 +24,7 @@
 		super(cf, delegate);
 	}
 
-	public IType getType() {
+	public IType getType() throws DOMException {
 		IType type = ((ITypedef)rbinding).getType();
 		return cf.getCompositeType((IIndexType)type);
 	}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/TemplateInstanceUtil.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/TemplateInstanceUtil.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 Symbian Software Systems and others.
+ * Copyright (c) 2007, 2008 Symbian Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -41,9 +41,9 @@
 		CPPTemplateParameterMap result= new CPPTemplateParameterMap(keys.length);
 		
 		try {
-			for (Integer key : keys) {
-				ICPPTemplateArgument arg= preresult.getArgument(key);
-				result.put(key, convert(cf, arg));
+			for(int i = 0; i < keys.length; i++) {
+				ICPPTemplateArgument arg= preresult.getArgument(keys[i]);
+				result.put(keys[i], convert(cf, arg));
 			}
 		} catch(DOMException de) {
 			CCorePlugin.log(de);
@@ -148,8 +148,12 @@
 	
 	@Deprecated
 	private static IType[] getArguments(ICompositesFactory cf, IType[] result) {
-		for(int i=0; i<result.length; i++) {
-			result[i] = cf.getCompositeType((IIndexType)result[i]);
+		try {
+			for(int i=0; i<result.length; i++) {
+				result[i] = cf.getCompositeType((IIndexType)result[i]);
+			}
+		} catch(DOMException de) {
+			CCorePlugin.log(de);
 		}
 		return result;
 	}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/indexer/StandaloneIndexer.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/indexer/StandaloneIndexer.java	Wed Aug 05 17:35:39 2009 -0500
@@ -23,8 +23,10 @@
 import org.eclipse.cdt.core.parser.IParserLogService;
 import org.eclipse.cdt.core.parser.IScannerInfo;
 import org.eclipse.cdt.internal.core.index.IWritableIndex;
+import org.eclipse.cdt.internal.core.index.IWritableIndexFragment;
 import org.eclipse.cdt.internal.core.pdom.IndexerProgress;
 import org.eclipse.cdt.internal.core.pdom.PDOMWriter;
+import org.eclipse.cdt.internal.core.pdom.WritablePDOM;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 
@@ -174,6 +176,8 @@
 		fLog = log;	
 		fScanner = scanner;
 		fScannerInfoProvider = null;
+		
+		setupASTFilePathResolver();
 	}
 	
 	
@@ -185,9 +189,19 @@
 		fLog = log;	
 		fScanner = null;
 		fScannerInfoProvider = scannerProvider;
+		
+		setupASTFilePathResolver();
 	}
 	
-
+	
+	private void setupASTFilePathResolver() {
+		IWritableIndexFragment fragment = getIndex().getWritableFragment();
+		if(fragment instanceof WritablePDOM) {
+			WritablePDOM pdom = (WritablePDOM)fragment;
+			pdom.setASTFilePathResolver(new StandaloneIndexerInputAdapter(this));
+		}
+	}
+	
 	public void setScannerInfoProvider(IStandaloneScannerInfoProvider provider) {
 		fScannerInfoProvider = provider;
 		fScanner = null;
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/CPreprocessor.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/CPreprocessor.java	Wed Aug 05 17:35:39 2009 -0500
@@ -74,6 +74,7 @@
 	
     private static final char[] EMPTY_CHAR_ARRAY = new char[0];
     private static final char[] ONE = "1".toCharArray(); //$NON-NLS-1$
+    private static final String EMPTY_STRING = ""; //$NON-NLS-1$
 
 
     // standard built-ins
@@ -95,15 +96,15 @@
 	private static final Token END_OF_INPUT = new Token(IToken.tEND_OF_INPUT, null, 0, 0);
 
 	private interface IIncludeFileTester<T> {
-    	T checkFile(String path, boolean isHeuristicMatch, IncludeSearchPathElement onPath);
+    	T checkFile(String path, String fileName, boolean isHeuristicMatch);
     }
 
-	final private IIncludeFileTester<IncludeFileContent> createCodeReaderTester= new IIncludeFileTester<IncludeFileContent>() { 
-    	public IncludeFileContent checkFile(String path, boolean isHeuristicMatch, IncludeSearchPathElement onPath) {
-			final IncludeFileContent fc= fCodeReaderFactory.getContentForInclusion(path);
+    final private IIncludeFileTester<IncludeFileContent> createCodeReaderTester= new IIncludeFileTester<IncludeFileContent>() { 
+    	public IncludeFileContent checkFile(String path, String fileName, boolean isHeuristicMatch) {
+    		final String finalPath = ScannerUtility.createReconciledPath(path, fileName);
+			final IncludeFileContent fc= fCodeReaderFactory.getContentForInclusion(finalPath);
 			if (fc != null) {
 				fc.setFoundByHeuristics(isHeuristicMatch);
-				fc.setFoundOnPath(onPath);
 			}
 			return fc;
     	}
@@ -111,11 +112,12 @@
     
     private static class IncludeResolution {String fLocation; boolean fHeuristic;}
     final private IIncludeFileTester<IncludeResolution> createPathTester= new IIncludeFileTester<IncludeResolution>() { 
-    	public IncludeResolution checkFile(String path, boolean isHeuristicMatch, IncludeSearchPathElement onPath) {
-    		if (fCodeReaderFactory.getInclusionExists(path)) {
+    	public IncludeResolution checkFile(String path, String fileName, boolean isHeuristicMatch) {
+    		String finalPath= ScannerUtility.createReconciledPath(path, fileName);
+    		if (fCodeReaderFactory.getInclusionExists(finalPath)) {
     			IncludeResolution res= new IncludeResolution();
     			res.fHeuristic= isHeuristicMatch;
-    			res.fLocation= path;
+    			res.fLocation= finalPath;
     			return res;
     		}
     		return null;
@@ -166,7 +168,8 @@
     final private char[] fAdditionalNumericLiteralSuffixes;
     final private CharArrayIntMap fKeywords;
     final private CharArrayIntMap fPPKeywords;
-    private IncludeSearchPathElement[] fIncludeSearchPath;
+    final private String[] fIncludePaths;
+    final private String[] fQuoteIncludePaths;
     private String[][] fPreIncludedFiles= null;
 
     private int fContentAssistLimit= -1;
@@ -204,6 +207,9 @@
         fPPKeywords= new CharArrayIntMap(40, -1);
         configureKeywords(language, configuration);
 
+    	fIncludePaths= info.getIncludePaths();
+    	fQuoteIncludePaths= getQuoteIncludePath(info);
+
         fExpressionEvaluator= new ExpressionEvaluator();
         fMacroDefinitionParser= new MacroDefinitionParser();
         fMacroExpander= new MacroExpander(this, fMacroDictionary, fLocationMap, fLexOptions);
@@ -212,10 +218,9 @@
         	fIncludeFileResolutionHeuristics= (IIncludeFileResolutionHeuristics) ((IAdaptable) readerFactory).getAdapter(IIncludeFileResolutionHeuristics.class);
         }
 
-        final String filePath= new String(reader.filename);
-        configureIncludeSearchPath(new File(filePath).getParentFile(), info);
         setupMacroDictionary(configuration, info, language);		
                 
+        final String filePath= new String(reader.filename);
         fAllIncludedFiles.add(filePath);
         ILocationCtx ctx= fLocationMap.pushTranslationUnit(filePath, reader.buffer);
         fCodeReaderFactory.reportTranslationUnitFile(filePath);
@@ -313,35 +318,21 @@
 		return array == null ? EMPTY_CHAR_ARRAY : array;
 	}
 
-    private void configureIncludeSearchPath(File directory, IScannerInfo info) {
-    	String[] searchPath= info.getIncludePaths();
-    	int idx= 0;
+    private String[] getQuoteIncludePath(IScannerInfo info) {
         if (info instanceof IExtendedScannerInfo) {
         	final IExtendedScannerInfo einfo= (IExtendedScannerInfo) info;
-            final String[] quoteIncludeSearchPath= einfo.getLocalIncludePath();
-            if (quoteIncludeSearchPath != null && quoteIncludeSearchPath.length > 0) {
-            	fIncludeSearchPath= new IncludeSearchPathElement[quoteIncludeSearchPath.length + searchPath.length];
-            	for (String qip : quoteIncludeSearchPath) {
-					fIncludeSearchPath[idx++]= new IncludeSearchPathElement(makeAbsolute(directory, qip), true);
-				}
-            } 
+            final String[] qip= einfo.getLocalIncludePath();
+            if (qip != null && qip.length > 0) {
+            	final String[] result= new String[qip.length + fIncludePaths.length];
+            	System.arraycopy(qip, 0, result, 0, qip.length);
+            	System.arraycopy(fIncludePaths, 0, result, qip.length, fIncludePaths.length);
+            	return result;
+            }
         }
-        if (fIncludeSearchPath == null) {
-        	fIncludeSearchPath= new IncludeSearchPathElement[searchPath.length];
-        }
-        for (String path : searchPath) {
-			fIncludeSearchPath[idx++]= new IncludeSearchPathElement(makeAbsolute(directory, path), false);
-		}
+        return info.getIncludePaths();
 	}
 
-	private String makeAbsolute(File directory, String inlcudePath) {
-		if (directory == null || new File(inlcudePath).isAbsolute()) {
-			return inlcudePath;
-		}
-		return ScannerUtility.createReconciledPath(directory.getAbsolutePath(), inlcudePath);
-	}
-
-	private void setupMacroDictionary(IScannerExtensionConfiguration config, IScannerInfo info, ParserLanguage lang) {
+    private void setupMacroDictionary(IScannerExtensionConfiguration config, IScannerInfo info, ParserLanguage lang) {
     	// built in macros
     	fMacroDictionary.put(__CDT_PARSER__.getNameCharArray(), __CDT_PARSER__);
         fMacroDictionary.put(__STDC__.getNameCharArray(), __STDC__);
@@ -881,20 +872,20 @@
         }
     }
 
-    private <T> T findInclusion(final String includeDirective, final boolean quoteInclude, 
+    private <T> T findInclusion(final String filename, final boolean quoteInclude, 
     		final boolean includeNext, final String currentFile, final IIncludeFileTester<T> tester) {
         T reader = null;
 		// filename is an absolute path or it is a Linux absolute path on a windows machine
-		if (new File(includeDirective).isAbsolute() || includeDirective.startsWith("/")) {  //$NON-NLS-1$
-		    return tester.checkFile(includeDirective, false, null);
+		if (new File(filename).isAbsolute() || filename.startsWith("/")) {  //$NON-NLS-1$
+		    return tester.checkFile(EMPTY_STRING, filename, false);
 		}
 		                
         if (currentFile != null && quoteInclude && !includeNext) {
             // Check to see if we find a match in the current directory
     		final File currentDir= new File(currentFile).getParentFile();
     		if (currentDir != null) {
-        		final String fileLocation = ScannerUtility.createReconciledPath(currentDir.getAbsolutePath(), includeDirective);
-    			reader = tester.checkFile(fileLocation, false, null);
+    			String absolutePath = currentDir.getAbsolutePath();
+    			reader = tester.checkFile(absolutePath, filename, false);
     			if (reader != null) {
     				return reader;
     			}
@@ -903,31 +894,43 @@
         
         // if we're not include_next, then we are looking for the first occurrence of 
         // the file, otherwise, we ignore all the paths before the current directory
-        IncludeSearchPathElement searchAfter= includeNext ? fCurrentContext.getFoundOnPath() : null;
-        for (IncludeSearchPathElement path : fIncludeSearchPath) {
-        	if (searchAfter != null) {
-        		if (searchAfter.equals(path)) {
-        			searchAfter= null;
+        final String[] isp= quoteInclude ? fQuoteIncludePaths : fIncludePaths;
+        if (isp != null) {
+        	int i=0;
+        	if (includeNext && currentFile != null) {
+        		final File currentDir= new File(currentFile).getParentFile();
+        		if (currentDir != null) {
+        			i= findIncludePos(isp, currentDir) + 1;
         		}
-        	} else if (quoteInclude || !path.isForQuoteIncludesOnly()) {
-        		String fileLocation = path.getLocation(includeDirective);
-        		if (fileLocation != null) {
-        			reader= tester.checkFile(fileLocation, false, path);
-        			if (reader != null) {
-        				return reader;
-        			}
+        	}
+        	for (; i < isp.length; ++i) {
+        		reader= tester.checkFile(isp[i], filename, false);
+        		if (reader != null) {
+        			return reader;
         		}
         	}
         }
         if (fIncludeFileResolutionHeuristics != null) {
-        	String location= fIncludeFileResolutionHeuristics.findInclusion(includeDirective, currentFile);
+        	String location= fIncludeFileResolutionHeuristics.findInclusion(filename, currentFile);
         	if (location != null) {
-        		return tester.checkFile(location, true, null);
+        		return tester.checkFile(null, location, true);
         	}
         }
         return null;
     }
 
+    private int findIncludePos(String[] paths, File currentDirectory) {
+    	for (; currentDirectory != null; currentDirectory = currentDirectory.getParentFile()) {
+	        for (int i = 0; i < paths.length; ++i) {
+	        	File pathDir = new File(paths[i]);
+	        	if (currentDirectory.equals(pathDir))
+	        		return i;
+        	}
+        }
+
+        return -1;
+    }
+
     @Override
 	public String toString() {
         StringBuffer buffer = new StringBuffer("Scanner @ file:");  //$NON-NLS-1$
@@ -1188,7 +1191,6 @@
 						fAllIncludedFiles.add(path);
 						ILocationCtx ctx= fLocationMap.pushInclusion(poundOffset, nameOffsets[0], nameOffsets[1], condEndOffset, reader.buffer, path, headerName, userInclude, isHeuristic, fi.isSource());
 						ScannerContext fctx= new ScannerContext(ctx, fCurrentContext, new Lexer(reader.buffer, fLexOptions, this, this));
-						fctx.setFoundOnPath(fi.getFoundOnPath());
 						fCurrentContext= fctx;
 					}
 					break;
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/IncludeFileContent.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/IncludeFileContent.java	Wed Aug 05 17:35:39 2009 -0500
@@ -46,7 +46,6 @@
 	private boolean fHeuristic;
 	private boolean fIsSource= false;
 	private List<IIndexFile> fFiles;
-	private IncludeSearchPathElement fFoundOnPath;
 	
 	/**
 	 * For skipping include files.
@@ -166,12 +165,4 @@
 	public void setIsSource(boolean isSource) {
 		fIsSource= isSource;
 	}
-
-	public IncludeSearchPathElement getFoundOnPath() {
-		return fFoundOnPath;
-	}
-
-	public void setFoundOnPath(IncludeSearchPathElement isp) {
-		fFoundOnPath= isp;
-	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/IncludeSearchPathElement.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Wind River Systems, Inc. and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Markus Schorn - initial API and implementation
- *******************************************************************************/ 
-package org.eclipse.cdt.internal.core.parser.scanner;
-
-import java.io.File;
-
-/** 
- * Represents an entry of the include search path
- */
-final class IncludeSearchPathElement {
-	private static final boolean NON_SLASH_SEPARATOR = File.separatorChar != '/';
-	public static final String FRAMEWORK_VAR = "__framework__"; //$NON-NLS-1$
-	public static final String FILE_VAR = "__header__"; //$NON-NLS-1$
-
-
-	private final String fPath;
-	private final boolean fForQuoteIncludesOnly;
-	private final boolean fIsFrameworkDirectory;   
-	
-	IncludeSearchPathElement(String path, boolean forQuoteIncludesOnly) {
-		fPath= path;
-		fForQuoteIncludesOnly= forQuoteIncludesOnly;
-		
-		if (path.indexOf('_') != -1 && path.indexOf(FRAMEWORK_VAR) != -1 && path.indexOf(FILE_VAR) != -1) {
-			fIsFrameworkDirectory= true;
-		} else {
-			fIsFrameworkDirectory= false;
-		}
-	}
-	
-	public boolean isForQuoteIncludesOnly() {
-		return fForQuoteIncludesOnly;
-	}
-
-	public String getLocation(String includeDirective) {
-		if (fIsFrameworkDirectory) {
-			int firstSep = firstSeparator(includeDirective);
-			if (firstSep < 1) {
-				return null;
-			}
-			String framework = includeDirective.substring(0, firstSep);
-			String file= includeDirective.substring(firstSep+1);
-			if (file.length() == 0)
-				return null;
-			
-			StringBuilder buf= new StringBuilder(fPath);
-			replace(buf, FRAMEWORK_VAR, framework);
-			replace(buf, FILE_VAR, file);
-			return ScannerUtility.reconcilePath(buf.toString());
-		}
-		return ScannerUtility.createReconciledPath(fPath, includeDirective);
-	}
-
-	private int firstSeparator(String path) {
-		int firstSep= path.indexOf('/');
-		if (NON_SLASH_SEPARATOR) {
-			firstSep= Math.max(firstSep, path.indexOf(File.separatorChar));
-		}
-		return firstSep;
-	}
-
-	private void replace(StringBuilder buf, String find, final String replace) {
-		int idx= buf.indexOf(find);
-		if (idx >= 0) {
-			buf.replace(idx, idx+find.length(), replace);
-		}
-	}
-}
\ No newline at end of file
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ScannerContext.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ScannerContext.java	Wed Aug 05 17:35:39 2009 -0500
@@ -44,7 +44,6 @@
 	private Token fTokens;
 	private ArrayList<Conditional> fConditionals= null;
 	private CodeState fCurrentState= CodeState.eActive;
-	private IncludeSearchPathElement fFoundOnPath;
 
 	/**
 	 * @param ctx 
@@ -57,7 +56,9 @@
 	}
 	
 	public ScannerContext(ILocationCtx ctx, ScannerContext parent, TokenList tokens) {
-		this (ctx, parent, (Lexer) null);
+		fLocationCtx= ctx;
+		fParent= parent;
+		fLexer= null;
 		fTokens= tokens.first();
 		fInactiveState= CodeState.eSkipInactive;  // no branches in result of macro expansion
 	}
@@ -269,18 +270,4 @@
 			return 0;
 		return fConditionals.size();
 	}
-
-	/**
-	 * Returns the element of the include search path that was used to find this context, or <code>null</code> if not applicable.
-	 */
-	public IncludeSearchPathElement getFoundOnPath() {
-		return fFoundOnPath;
-	}
-
-	/**
-	 * Returns the element of the include search path that was used to find this context, or <code>null</code> if not applicable.
-	 */
-	public void setFoundOnPath(IncludeSearchPathElement foundOnPath) {
-		fFoundOnPath= foundOnPath;
-	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/AbstractIndexerTask.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/AbstractIndexerTask.java	Wed Aug 05 17:35:39 2009 -0500
@@ -43,7 +43,6 @@
 import org.eclipse.cdt.core.parser.ScannerInfo;
 import org.eclipse.cdt.internal.core.dom.AbstractCodeReaderFactory;
 import org.eclipse.cdt.internal.core.dom.IIncludeFileResolutionHeuristics;
-import org.eclipse.cdt.internal.core.index.IIndexFragment;
 import org.eclipse.cdt.internal.core.index.IIndexFragmentFile;
 import org.eclipse.cdt.internal.core.index.IWritableIndex;
 import org.eclipse.cdt.internal.core.index.IndexBasedCodeReaderFactory;
@@ -307,8 +306,6 @@
 				final ArrayList<IIndexFragmentFile> ifilesToRemove= new ArrayList<IIndexFragmentFile>();
 				extractFiles(files, ifilesToRemove, monitor);
 
-				setResume(true); 
-
 				// remove files from index
 				removeFilesInIndex(fFilesToRemove, ifilesToRemove, monitor);
 
@@ -316,9 +313,6 @@
 				for (int linkageID : getLinkagesToParse()) {
 					parseLinkage(linkageID, files, monitor);
 				}
-				if (!monitor.isCanceled()) {
-					setResume(false);
-				}
 			} finally {
 				fIndex.flush();
 			}
@@ -329,15 +323,6 @@
 		}
 	}
 
-	private void setResume(boolean value) throws InterruptedException, CoreException {
-		fIndex.acquireWriteLock(1);
-		try {
-			fIndex.getWritableFragment().setProperty(IIndexFragment.PROPERTY_RESUME_INDEXER, String.valueOf(value)); 
-		} finally {
-			fIndex.releaseWriteLock(1);
-		}
-	}
-
 	private void extractFiles(Map<Integer, List<Object>> files, List<IIndexFragmentFile> iFilesToRemove,
 			IProgressMonitor monitor) throws CoreException {
 		final boolean forceAll= (fUpdateFlags & IIndexManager.UPDATE_ALL) != 0;
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/IndexUpdatePolicy.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/IndexUpdatePolicy.java	Wed Aug 05 17:35:39 2009 -0500
@@ -72,37 +72,35 @@
 		return fIndexer;
 	}
 
-	public boolean isAutomatic() {
-		return fKind != MANUAL;
-	}
-	
 	public IPDOMIndexerTask handleDelta(ITranslationUnit[] force, ITranslationUnit[] changed, ITranslationUnit[] removed) {
 		if (isNullIndexer()) {
 			return null;
 		}
 
 		switch(fKind) {
-		case MANUAL:
+		case IndexUpdatePolicy.MANUAL:
 			return null;
-		case POST_CHANGE:
+		case IndexUpdatePolicy.POST_CHANGE:
 			if (fIndexer != null) {
 				return fIndexer.createTask(force, changed, removed);
 			}
 			break;
 		}
 		
-		for (ITranslationUnit tu : removed) {
+		for (int i = 0; i < removed.length; i++) {
+			ITranslationUnit tu = removed[i];
 			fForce.remove(tu);
 			fTimestamp.remove(tu);
 			fRemoved.add(tu);
 		}
-		for (ITranslationUnit tu : force) {
+		for (int i = 0; i < force.length; i++) {
+			ITranslationUnit tu = force[i];
 			fForce.add(tu);
 			fTimestamp.remove(tu);
 			fRemoved.remove(tu);
 		}
-		for (ITranslationUnit element : changed) {
-			ITranslationUnit tu = element;
+		for (int i = 0; i < changed.length; i++) {
+			ITranslationUnit tu = changed[i];
 			if (!fForce.contains(tu)) {
 				fTimestamp.add(tu);
 			}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOM.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOM.java	Wed Aug 05 17:35:39 2009 -0500
@@ -179,14 +179,17 @@
 	 *  82.0 - offsets for using directives, bug 270806
 	 *  #83.0# - unconditionally store name in PDOMInclude, bug 272815 - <<CDT 6.0>>
 	 *  84.0 - storing free record pointers as (ptr>>3) and allocated pointers as (ptr-2)>>3 RECPTR_DENSE_VERSION
-	 *  
-	 *  CDT 7.0 development (versions not supported on the 6.0.x branch)
-	 *  90.0 - support for array sizes, bug 269926
-	 *  91.0 - storing unknown bindings other than unknown class types, bug 284686.
 	 */
-	private static final int MIN_SUPPORTED_VERSION= version(91, 0);
-	private static final int MAX_SUPPORTED_VERSION= version(91, Short.MAX_VALUE);
-	private static final int DEFAULT_VERSION = version(91, 0);
+	private static final int MIN_SUPPORTED_VERSION= version(83, 0);
+	private static final int MAX_SUPPORTED_VERSION= version(84, Short.MAX_VALUE);
+	private static int DEFAULT_VERSION = version(83, 0);
+	public static final int DENSE_RECPTR_VERSION = version(84, 0);
+	
+	static {
+		if (System.getProperty("org.eclipse.cdt.core.parser.pdom.useDensePointers", "false").equals("true")) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			DEFAULT_VERSION= DENSE_RECPTR_VERSION;
+		}
+	}
 	
 	private static int version(int major, int minor) {
 		return (major << 16) + minor;
@@ -229,6 +232,15 @@
 		private boolean fReloaded= false;
 		private boolean fNewFiles= false;
 
+		public void clear() {
+			fReloaded= false;
+			fCleared= false;
+			fNewFiles= false;
+			
+			fClearedFiles.clear();
+			fFilesWritten.clear();
+		}
+
 		private void setCleared() {
 			fCleared= true;
 			fReloaded= false;
@@ -258,10 +270,6 @@
 		public boolean hasNewFiles() {
 			return fNewFiles;
 		}
-
-		public boolean isTrivial() {
-			return !fCleared && !fReloaded && !fNewFiles && fClearedFiles.isEmpty() && fFilesWritten.isEmpty();
-		}
 	}
 	public static interface IListener {
 		public void handleChange(PDOM pdom, ChangeEvent event);
@@ -374,9 +382,8 @@
 	}
 
 	private void fireChange(ChangeEvent event) {
-		if (listeners == null || event.isTrivial())
+		if (listeners == null)
 			return;
-		
 		Iterator<IListener> i = listeners.iterator();
 		while (i.hasNext())
 			i.next().handleChange(this, event);
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMFileSet.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMFileSet.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Wind River Systems, Inc. and others.
+ * Copyright (c) 2008 Wind River Systems, Inc. and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java	Wed Aug 05 17:35:39 2009 -0500
@@ -236,8 +236,8 @@
 
 		try {
 			ICProject[] projects= model.getCModel().getCProjects();
-			for (ICProject project : projects) {
-				addProject(project);
+			for (int i = 0; i < projects.length; i++) {
+				addProject(projects[i]);
 			}
 		} catch (CModelException e) {
 			CCorePlugin.log(e);
@@ -517,7 +517,7 @@
 		return null;
 	}
 
-	private void createIndexer(ICProject project, IProgressMonitor pm) throws InterruptedException {
+	private void createIndexer(ICProject project, IProgressMonitor pm) {
 		assert !Thread.holdsLock(fProjectToPDOM);
 		IProject prj= project.getProject();
 		try {
@@ -540,24 +540,13 @@
 				}
 				if (!rebuild) {
 					registerIndexer(project, indexer);
-					IPDOMIndexerTask task= policy.createTask();
+					IPDOMIndexerTask task= createPolicy(project).createTask();
 					if (task != null) {
 						enqueue(task);
-					} else {
+					}
+					else {
 						enqueue(new TriggerNotificationTask(this, pdom));
 					}
-					if (policy.isAutomatic()) {
-						boolean resume= false;
-						pdom.acquireReadLock();
-						try {
-							resume= "true".equals(pdom.getProperty(IIndexFragment.PROPERTY_RESUME_INDEXER)); //$NON-NLS-1$
-						} finally {
-							pdom.releaseReadLock();
-						}
-						if (resume) {
-							enqueue(new PDOMUpdateTask(indexer, IIndexManager.UPDATE_CHECK_TIMESTAMPS));
-						}
-					}
 					return;
 				}
 			}
@@ -623,7 +612,8 @@
 		}
     	synchronized (fTaskQueue) {
     		int i=0;
-    		for (IPDOMIndexerTask task : fTaskQueue) {
+    		for (Iterator<IPDOMIndexerTask> it = fTaskQueue.iterator(); it.hasNext();) {
+				final IPDOMIndexerTask task= it.next();
 				final IPDOMIndexer ti = task.getIndexer();
 				if (ti != null && referencing.contains(ti.getProject().getProject())) {
 					fTaskQueue.add(i, subjob);
@@ -705,12 +695,7 @@
 				if (project.isOpen() && !postponeSetup(cproject)) {
 					syncronizeProjectSettings(project, new SubProgressMonitor(monitor, 1));
 					if (getIndexer(cproject) == null) {
-						try {
-							createIndexer(cproject, new SubProgressMonitor(monitor, 99));
-						} catch (InterruptedException e) {
-							Thread.currentThread().interrupt();
-							return Status.CANCEL_STATUS;
-						}
+						createIndexer(cproject, new SubProgressMonitor(monitor, 99));
 					}
 				}
 				return Status.OK_STATUS;
@@ -906,7 +891,8 @@
 		ICProject[] cProjects;
 		try {
 			cProjects = CoreModel.getDefault().getCModel().getCProjects();
-			for (ICProject project : cProjects) {
+			for (int i = 0; i < cProjects.length; i++) {
+				ICProject project = cProjects[i];
 				reindex(project);
 			}
 		} catch (CModelException e) {
@@ -978,8 +964,8 @@
     				fIndexerStateEvent.setState(state);
     				Object[] listeners= fStateListeners.getListeners();
     				monitor.beginTask(Messages.PDOMManager_notifyTask_message, listeners.length);
-    				for (Object listener2 : listeners) {
-    					final IIndexerStateListener listener = (IIndexerStateListener) listener2;
+    				for (int i = 0; i < listeners.length; i++) {
+    					final IIndexerStateListener listener = (IIndexerStateListener) listeners[i];
     					SafeRunner.run(new ISafeRunnable(){
     						public void handleException(Throwable exception) {
     							CCorePlugin.log(exception);
@@ -1017,8 +1003,8 @@
 					fIndexChangeEvent.setAffectedProject(finalProject, e);
 					Object[] listeners= fChangeListeners.getListeners();
 					monitor.beginTask(Messages.PDOMManager_notifyTask_message, listeners.length);
-					for (Object listener2 : listeners) {
-						final IIndexChangeListener listener = (IIndexChangeListener) listener2;
+					for (int i = 0; i < listeners.length; i++) {
+						final IIndexChangeListener listener = (IIndexChangeListener) listeners[i];
 						SafeRunner.run(new ISafeRunnable(){
 							public void handleException(Throwable exception) {
 								CCorePlugin.log(exception);
@@ -1340,7 +1326,8 @@
 	void handlePostBuildEvent() {
 		assert !Thread.holdsLock(fProjectToPDOM);
 		synchronized (fUpdatePolicies) {
-			for (IndexUpdatePolicy policy : fUpdatePolicies.values()) {
+			for (Iterator<IndexUpdatePolicy> i = fUpdatePolicies.values().iterator(); i.hasNext();) {
+				IndexUpdatePolicy policy= i.next();
 				IPDOMIndexerTask task= policy.createTask();
 				if (task != null) {
 					enqueue(task);
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMWriter.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMWriter.java	Wed Aug 05 17:35:39 2009 -0500
@@ -139,8 +139,8 @@
 	 * @since 4.0
 	 */
 	public void addSymbols(IASTTranslationUnit ast, IIndexFileLocation[] ifls, IWritableIndex index, 
-			int readlockCount, boolean flushIndex, int configHash, ITodoTaskUpdater taskUpdater,
-			IProgressMonitor pm) throws InterruptedException, CoreException {
+			int readlockCount, boolean flushIndex, int configHash, ITodoTaskUpdater taskUpdater, IProgressMonitor pm) 
+			throws InterruptedException, CoreException {
 		if (fShowProblems) {
 			fShowInclusionProblems= true;
 			fShowScannerProblems= true;
@@ -159,8 +159,7 @@
 		resolveNames(symbolMap, ifls, stati, pm);
 
 		// index update
-		storeSymbolsInIndex(symbolMap, ifls, ast.getLinkage().getLinkageID(), configHash, contextIncludes,
-				index, readlockCount, flushIndex,	stati, pm);
+		storeSymbolsInIndex(symbolMap, ifls, ast.getLinkage().getLinkageID(), configHash, contextIncludes, index, readlockCount, flushIndex,	stati, pm);
 
 		if (taskUpdater != null) {
 			taskUpdater.updateTasks(ast.getComments(), ifls);
@@ -187,14 +186,13 @@
 		}
 	}
 
-	private void storeSymbolsInIndex(final Map<IIndexFileLocation, Symbols> symbolMap, IIndexFileLocation[] ifls,
-			int linkageID, int configHash, HashSet<IASTPreprocessorIncludeStatement> contextIncludes,
-			IWritableIndex index, int readlockCount, boolean flushIndex,
+	private void storeSymbolsInIndex(final Map<IIndexFileLocation, Symbols> symbolMap, IIndexFileLocation[] ifls, int linkageID, int configHash,
+			HashSet<IASTPreprocessorIncludeStatement> contextIncludes, IWritableIndex index, int readlockCount, boolean flushIndex,
 			ArrayList<IStatus> stati, IProgressMonitor pm) throws InterruptedException, CoreException {
 		index.acquireWriteLock(readlockCount);
 		long start= System.currentTimeMillis();
 		try {
-			for (int i= 0; i < ifls.length; i++) {
+			for (int i=0; i<ifls.length; i++) {
 				if (pm.isCanceled()) 
 					return;
 
@@ -214,10 +212,9 @@
 						th= e;
 					}
 					if (th != null) {
-						stati.add(createStatus(NLS.bind(Messages.PDOMWriter_errorWhileParsing,
-								ifl.getURI().getPath()), th));
+						stati.add(createStatus(NLS.bind(Messages.PDOMWriter_errorWhileParsing, ifl.getURI().getPath()), th));
 					}
-					if (i < ifls.length - 1) {
+					if (i<ifls.length-1) {
 						updateFileCount(0, 0, 1); // update header count
 					}
 				}
@@ -228,8 +225,7 @@
 		fStatistics.fAddToIndexTime+= System.currentTimeMillis()-start;
 	}
 
-	private void resolveNames(final Map<IIndexFileLocation, Symbols> symbolMap, IIndexFileLocation[] ifls,
-			ArrayList<IStatus> stati, IProgressMonitor pm) {
+	private void resolveNames(final Map<IIndexFileLocation, Symbols> symbolMap, IIndexFileLocation[] ifls, ArrayList<IStatus> stati, IProgressMonitor pm) {
 		long start= System.currentTimeMillis();
 		for (IIndexFileLocation path : ifls) {
 			if (pm.isCanceled()) {
@@ -257,8 +253,7 @@
 						} else if (name.isReference()) {
 							if (binding instanceof ICPPTemplateParameter || 
 									binding instanceof ICPPUnknownBinding || 
-									((fSkipReferences & SKIP_TYPE_REFERENCES) != 0 &&
-											isTypeReferenceBinding(binding))) {
+									((fSkipReferences & SKIP_TYPE_REFERENCES) != 0 && isTypeReferenceBinding(binding))) {
 								if (!isRequiredReference(name)) {
 									na[0]= null;
 								} else {
@@ -279,8 +274,8 @@
 					}
 					if (th != null) {
 						if (!reported) {
-							stati.add(CCorePlugin.createStatus(NLS.bind(Messages.PDOMWriter_errorResolvingName,
-									name.toString(), path.getURI().getPath()), th));
+							stati.add(CCorePlugin.createStatus(
+									NLS.bind(Messages.PDOMWriter_errorResolvingName, name.toString(), path.getURI().getPath()), th));
 						}
 						reported= true;
 						j.remove();
@@ -291,8 +286,8 @@
 		fStatistics.fResolutionTime += System.currentTimeMillis()-start;
 	}
 
-	private void extractSymbols(IASTTranslationUnit ast, final Map<IIndexFileLocation, Symbols> symbolMap,
-			Collection<IASTPreprocessorIncludeStatement> contextIncludes) throws CoreException {
+	private void extractSymbols(IASTTranslationUnit ast, final Map<IIndexFileLocation, Symbols> symbolMap, Collection<IASTPreprocessorIncludeStatement> contextIncludes) throws CoreException {
+		
 		final HashSet<IIndexFileLocation> contextIFLs= new HashSet<IIndexFileLocation>();
 		final IIndexFileLocation astIFL = fResolver.resolveASTPath(ast.getFilePath());
 		
@@ -312,7 +307,8 @@
 				if (include.isActive()) {
 					if (!include.isResolved()) {
 						unresolvedIncludes++;
-					} else if (updateSource) {
+					}
+					else if (updateSource) {
 						// the include was parsed, check if we want to update the included file in the index
 						final IIndexFileLocation targetIFL= fResolver.resolveASTPath(include.getPath());
 						if (symbolMap.containsKey(targetIFL) && contextIFLs.add(targetIFL)) {
@@ -425,15 +421,13 @@
 			lists.fNames.add(thing);
 	}		
 
-	private void addToMap(Map<IIndexFileLocation, Symbols> map, IIndexFileLocation location,
-			IASTPreprocessorIncludeStatement thing) {
+	private void addToMap(Map<IIndexFileLocation, Symbols> map, IIndexFileLocation location, IASTPreprocessorIncludeStatement thing) {
 		Symbols lists= map.get(location);
 		if (lists != null) 
 			lists.fIncludes.add(thing);
 	}		
 
-	private void addToMap(Map<IIndexFileLocation, Symbols> map, IIndexFileLocation location,
-			IASTPreprocessorStatement thing) {
+	private void addToMap(Map<IIndexFileLocation, Symbols> map, IIndexFileLocation location, IASTPreprocessorStatement thing) {
 		Symbols lists= map.get(location);
 		if (lists != null) 
 			lists.fMacros.add(thing);
@@ -446,9 +440,8 @@
 		return false;
 	}
 
-	private IIndexFragmentFile storeFileInIndex(IWritableIndex index, IIndexFileLocation location,
-			Map<IIndexFileLocation, Symbols> symbolMap, int linkageID, int configHash,
-			Set<IASTPreprocessorIncludeStatement> contextIncludes) throws CoreException {
+	private IIndexFragmentFile storeFileInIndex(IWritableIndex index, IIndexFileLocation location, Map<IIndexFileLocation, Symbols> symbolMap, 
+			int linkageID, int configHash, Set<IASTPreprocessorIncludeStatement> contextIncludes) throws CoreException {
 		Set<IIndexFileLocation> clearedContexts= Collections.emptySet();
 		IIndexFragmentFile file= index.getWritableFile(linkageID, location);
 		if (file != null) {
@@ -471,7 +464,7 @@
 			}
 
 			IncludeInformation[] includeInfos= new IncludeInformation[lists.fIncludes.size()];
-			for (int i= 0; i < lists.fIncludes.size(); i++) {
+			for (int i=0; i<lists.fIncludes.size(); i++) {
 				final IASTPreprocessorIncludeStatement include = lists.fIncludes.get(i);
 				final IncludeInformation info= includeInfos[i]= new IncludeInformation();
 				info.fStatement= include;
@@ -501,9 +494,9 @@
 	 */
 	protected final void updateFileCount(int sources, int primaryHeader, int header) {
 		synchronized(fInfo) {
-			fInfo.fCompletedSources += sources;
-			fInfo.fPrimaryHeaderCount += primaryHeader;
-			fInfo.fCompletedHeaders += header;
+			fInfo.fCompletedSources+= sources;
+			fInfo.fPrimaryHeaderCount+= primaryHeader;
+			fInfo.fCompletedHeaders+= header;
 		}
 	}
 	
@@ -527,7 +520,7 @@
 			msg+= "; " + problem.getMessage(); //$NON-NLS-1$
 		System.out.println(msg);
 	}
-
+	
 	private void reportProblem(IASTProblem problem) {
 		String msg= "Indexer: " + problem.getMessageWithLocation(); //$NON-NLS-1$
 		System.out.println(msg);
@@ -540,4 +533,5 @@
 	protected IStatus createStatus(String msg, Throwable e) {
 		return CCorePlugin.createStatus(msg, e);
 	}
+
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/BTree.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/BTree.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 QNX Software Systems and others.
+ * Copyright (c) 2005, 2007 QNX Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/Chunk.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/Chunk.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 QNX Software Systems and others.
+ * Copyright (c) 2005, 2008 QNX Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -106,10 +106,19 @@
 	 * pointer is not moved past the BLOCK_HEADER_SIZE.
 	 */
 	public void putRecPtr(final long offset, final long value) {
-		putFreeRecPtr(offset, value == 0 ? value : value - Database.BLOCK_HEADER_SIZE);
+		if (!fDatabase.usesDensePointers()) {
+			putFreeRecPtr(offset, value);
+		} else {
+			putFreeRecPtr(offset, value == 0 ? value : value - Database.BLOCK_HEADER_SIZE);
+		}
+		return;
 	}
 	
 	public void putFreeRecPtr(final long offset, final long value) {
+		if (!fDatabase.usesDensePointers()) {
+			putInt(offset, (int) value);
+			return;
+		}
 		/*
 		 * This assert verifies the alignment. We expect the low bits to be clear.
 		 */
@@ -118,6 +127,9 @@
 	}
 	
 	public long getRecPtr(final long offset) {
+		if (!fDatabase.usesDensePointers()) {
+			return getInt(offset);
+		}
 		long address = getFreeRecPtr(offset);
 		return address != 0 ? (address + Database.BLOCK_HEADER_SIZE) : address;
 	}
@@ -125,6 +137,9 @@
 	
 	public long getFreeRecPtr(final long offset) {
 		int value = getInt(offset);
+		if (!fDatabase.usesDensePointers()) {
+			return value;
+		}
 		/*
 		 * We need to properly manage the integer that was read. The value will be sign-extended 
 		 * so if the most significant bit is set, the resulting long will look negative. By 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/DBProperties.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/DBProperties.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 Symbian Software Systems and others.
+ * Copyright (c) 2007, 2008 Symbian Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/Database.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/Database.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 QNX Software Systems and others.
+ * Copyright (c) 2005, 2008 QNX Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -24,6 +24,7 @@
 import java.util.ArrayList;
 
 import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
@@ -73,9 +74,6 @@
 	public static final int MIN_BLOCK_DELTAS = 2;	// a block must at least be 2 + 2*4 bytes to link the free blocks.
 	public static final int MAX_BLOCK_DELTAS = CHUNK_SIZE/BLOCK_SIZE_DELTA;	
 	public static final int MAX_MALLOC_SIZE = MAX_BLOCK_DELTAS*BLOCK_SIZE_DELTA - BLOCK_HEADER_SIZE;  
-	public static final int PTR_SIZE = 4;  // size of a pointer in the database in bytes  
-	public static final long MAX_DB_SIZE= ((long) 1 << (Integer.SIZE + BLOCK_SIZE_DELTA_BITS));
-
 
 	public static final int VERSION_OFFSET = 0;
 	public static final int DATA_AREA = (CHUNK_SIZE / BLOCK_SIZE_DELTA - MIN_BLOCK_DELTAS + 2) * INT_SIZE;
@@ -362,8 +360,14 @@
 			 * special status, the indexing operation should be stopped. This is desired since generally, once
 			 * the max size is exceeded, there are lots of errors.
 			 */
-			if (address >= MAX_DB_SIZE) {
-				Object bindings[] = { this.getLocation().getAbsolutePath(), MAX_DB_SIZE };
+			long max_size;
+			if (usesDensePointers()) {
+				max_size = ((long) 1 << (Integer.SIZE + BLOCK_SIZE_DELTA_BITS));
+			} else {
+				max_size = ((long) 1 << (Integer.SIZE - 1));
+			}
+			if (address >= max_size) {
+				Object bindings[] = { this.getLocation().getAbsolutePath(), max_size };
 				throw new CoreException(new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID,
 						CCorePlugin.STATUS_PDOM_TOO_LARGE, NLS.bind(CCorePlugin
 								.getResourceString("pdom.DatabaseTooLarge"), bindings), null)); //$NON-NLS-1$
@@ -373,6 +377,13 @@
 	}
 
 	/**
+	 * Returns whether this database uses dense pointers.
+	 */
+	boolean usesDensePointers() {
+		return getVersion() >= PDOM.DENSE_RECPTR_VERSION;
+	}
+
+	/**
 	 * for testing purposes, only.
 	 */
 	private long createNewChunks(int numChunks) throws CoreException {
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/IBTreeComparator.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/IBTreeComparator.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 QNX Software Systems and others.
+ * Copyright (c) 2005 QNX Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/IBTreeVisitor.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/IBTreeVisitor.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 QNX Software Systems and others.
+ * Copyright (c) 2005, 2006 QNX Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/IString.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/IString.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 QNX Software Systems and others.
+ * Copyright (c) 2006, 2007 QNX Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/ListItem.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/ListItem.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 QNX Software Systems and others.
+ * Copyright (c) 2006, 2007 QNX Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/LongString.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/LongString.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 QNX Software Systems and others.
+ * Copyright (c) 2006, 2007 QNX Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/ShortString.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/ShortString.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 QNX Software Systems and others.
+ * Copyright (c) 2006, 2007 QNX Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMArrayType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMArrayType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -17,42 +17,32 @@
 import org.eclipse.cdt.core.dom.ast.IArrayType;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.core.dom.ast.ITypedef;
-import org.eclipse.cdt.core.dom.ast.IValue;
-import org.eclipse.cdt.core.parser.util.CharArrayUtils;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
-import org.eclipse.cdt.internal.core.dom.parser.Value;
 import org.eclipse.cdt.internal.core.index.ArrayTypeClone;
 import org.eclipse.cdt.internal.core.index.IIndexBindingConstants;
 import org.eclipse.cdt.internal.core.index.IIndexType;
-import org.eclipse.cdt.internal.core.pdom.db.Database;
 import org.eclipse.core.runtime.CoreException;
 
 public class PDOMArrayType extends PDOMNode implements IIndexType, IArrayType, ITypeContainer {
 
 	private static final int TYPE = PDOMNode.RECORD_SIZE;
-	private static final int ARRAYSIZE= TYPE + Database.PTR_SIZE;
 	@SuppressWarnings("hiding")
-	private static final int RECORD_SIZE= ARRAYSIZE + Database.PTR_SIZE;
+	private static final int RECORD_SIZE= TYPE+4;
 
-	private IType fCachedType= null;
-	private IValue fCachedValue= Value.NOT_INITIALIZED;
-	
 	public PDOMArrayType(PDOMLinkage linkage, long record) {
 		super(linkage, record);
 	}
 
 	public PDOMArrayType(PDOMLinkage linkage, PDOMNode parent, IArrayType type) throws CoreException {
 		super(linkage, parent);
-		PDOMNode targetTypeNode = getLinkage().addType(this, type.getType());
-		if (targetTypeNode != null) {
-			long typeRec = targetTypeNode.getRecord();
-			final Database db = getDB();
-			db.putRecPtr(record + TYPE, typeRec);
-			IValue val= type.getSize();
-			if (val != null) {
-				long ptr= PDOMValue.store(db, linkage, val);
-				db.putRecPtr(record + ARRAYSIZE, ptr);
+		try {
+			PDOMNode targetTypeNode = getLinkage().addType(this, type.getType());
+			if (targetTypeNode != null) {
+				long typeRec = targetTypeNode.getRecord();
+				getDB().putRecPtr(record + TYPE, typeRec);
 			}
+		} catch (DOMException e) {
+			CCorePlugin.log(e);
 		}
 	}
 
@@ -66,33 +56,18 @@
 		return IIndexBindingConstants.ARRAY_TYPE;
 	}
 
-	public IType getType() {
-		if (fCachedType == null) {
-			try {
-				PDOMNode node = getLinkage().getNode(getDB().getRecPtr(record + TYPE));
-				if (node instanceof IType) {
-					return fCachedType= (IType) node;
-				}
-			} catch (CoreException e) {
-				CCorePlugin.log(e);
-			}
-		}
-		return fCachedType;
+	public IASTExpression getArraySizeExpression() throws DOMException {
+		return null;
 	}
 
-	
-	public IValue getSize() {
-		if (fCachedValue == Value.NOT_INITIALIZED) {
-			try {
-				final Database db = getDB();
-				long ptr= db.getRecPtr(record + ARRAYSIZE);
-				return fCachedValue= PDOMValue.restore(db, getLinkage(), ptr); 
-			} catch (CoreException e) {
-				CCorePlugin.log(e);
-			}
-			return fCachedValue= null;
+	public IType getType() {
+		try {
+			PDOMNode node = getLinkage().getNode(getDB().getRecPtr(record + TYPE));
+			return node instanceof IType ? (IType)node : null;
+		} catch (CoreException e) {
+			CCorePlugin.log(e);
+			return null;
 		}
-		return fCachedValue;
 	}
 
 	public boolean isSameType(IType type) {
@@ -102,19 +77,14 @@
 		if( !( type instanceof IArrayType )) 
 		    return false;
 		
-		IType type1= this.getType();
-		if( type1 == null )
-		    return false;
-		
-		IArrayType rhs = (IArrayType) type;
-		if (type1.isSameType(rhs.getType())) {
-			IValue s1 = getSize();
-			IValue s2 = rhs.getSize();
-			if (s1 == s2)
-				return true;
-			if (s1 == null || s2 == null)
-				return false;
-			return CharArrayUtils.equals(s1.getSignature(), s2.getSignature());
+		try {
+			IType type1= this.getType();
+			if( type1 == null )
+			    return false;
+			
+			IArrayType rhs = (IArrayType) type;
+			return type1.isSameType( rhs.getType() );
+		} catch (DOMException e) {
 		}
 		return false;
 	}
@@ -133,9 +103,4 @@
 		linkage.deleteType(getType(), record);
 		super.delete(linkage);
 	}
-	
-	@Deprecated
-	public IASTExpression getArraySizeExpression() throws DOMException {
-		return null;
-	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java	Wed Aug 05 17:35:39 2009 -0500
@@ -175,14 +175,8 @@
 		return null;
 	}
 
-	public final PDOMNode getNode(long record) throws CoreException {
-		if (record == 0) {
-			return null;
-		}
-		final int nodeType= PDOMNode.getNodeType(fDatabase, record);
-		switch (nodeType) {
-		case LINKAGE:
-			return null;
+	public PDOMNode getNode(long record) throws CoreException {
+		switch (PDOMNode.getNodeType(fDatabase, record)) {
 		case POINTER_TYPE:
 			return new PDOMPointerType(this, record);
 		case ARRAY_TYPE:
@@ -190,11 +184,9 @@
 		case QUALIFIER_TYPE:
 			return new PDOMQualifierType(this, record);
 		}
-		return getNode(record, nodeType);
+		return null;
 	}
 
-	abstract public PDOMNode getNode(long record, int nodeType) throws CoreException;
-
 	public PDOMNode addType(PDOMNode parent, IType type) throws CoreException {
 		if (type instanceof IPointerType)
 			return new PDOMPointerType(this, parent, (IPointerType)type);
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMPointerType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMPointerType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -15,10 +15,12 @@
 
 import org.eclipse.cdt.core.CCorePlugin;
 import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IPointerType;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.core.dom.ast.ITypedef;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPPointerToMemberType;
+import org.eclipse.cdt.internal.core.Util;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
 import org.eclipse.cdt.internal.core.index.IIndexBindingConstants;
 import org.eclipse.cdt.internal.core.index.IIndexType;
@@ -55,21 +57,25 @@
 		
 		Database db = getDB();
 		
-		// type
-		long typeRec = 0;
-		byte flags = 0;
-		if (type != null) {
-			IType targetType= type.getType();
-			PDOMNode targetTypeNode = getLinkage().addType(this, targetType);
-			if (targetTypeNode != null)
-				typeRec = targetTypeNode.getRecord();
-			if (type.isConst())
-				flags |= CONST;
-			if (type.isVolatile())
-				flags |= VOLATILE;
+		try {
+			// type
+			long typeRec = 0;
+			byte flags = 0;
+			if (type != null) {
+				IType targetType= type.getType();
+				PDOMNode targetTypeNode = getLinkage().addType(this, targetType);
+				if (targetTypeNode != null)
+					typeRec = targetTypeNode.getRecord();
+				if (type.isConst())
+					flags |= CONST;
+				if (type.isVolatile())
+					flags |= VOLATILE;
+			}
+			db.putRecPtr(record + TYPE, typeRec);
+			db.putByte(record + FLAGS, flags);
+		} catch (DOMException e) {
+			throw new CoreException(Util.createStatus(e));
 		}
-		db.putRecPtr(record + TYPE, typeRec);
-		db.putByte(record + FLAGS, flags);
 	}
 
 	@Override
@@ -135,11 +141,14 @@
 	        return false;
 
 		IPointerType rhs = (IPointerType) type;
-		if (isConst() == rhs.isConst() && isVolatile() == rhs.isVolatile()) {
-			IType type1= getType();
-			if (type1 != null) {
-				return type1.isSameType(rhs.getType());
+		try {
+			if (isConst() == rhs.isConst() && isVolatile() == rhs.isVolatile()) {
+				IType type1= getType();
+				if (type1 != null) {
+					return type1.isSameType(rhs.getType());
+				}
 			}
+		} catch (DOMException e) {
 		}
 		return false;
 	}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMQualifierType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMQualifierType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -14,10 +14,12 @@
 
 import org.eclipse.cdt.core.CCorePlugin;
 import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IQualifierType;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.core.dom.ast.ITypedef;
 import org.eclipse.cdt.core.dom.ast.c.ICQualifierType;
+import org.eclipse.cdt.internal.core.Util;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
 import org.eclipse.cdt.internal.core.index.IIndexBindingConstants;
 import org.eclipse.cdt.internal.core.index.IIndexType;
@@ -54,21 +56,26 @@
 		
 		Database db = getDB();
 		
-		if (type != null) {
-			IType targetType = type.getType();
-			PDOMNode targetTypeNode = getLinkage().addType(this, targetType);
-			if (targetTypeNode != null) {
-				db.putRecPtr(record + TYPE, targetTypeNode.getRecord());
-			}
-			// flags
-			byte flags = 0;
-			if (type.isConst())
-				flags |= CONST;
-			if (type.isVolatile())
-				flags |= VOLATILE;
-			if (type instanceof ICQualifierType && ((ICQualifierType)type).isRestrict())
-				flags |= RESTRICT;
-			db.putByte(record + FLAGS, flags);
+		// type
+		try {
+			if (type != null) {
+				IType targetType = type.getType();
+				PDOMNode targetTypeNode = getLinkage().addType(this, targetType);
+				if (targetTypeNode != null) {
+					db.putRecPtr(record + TYPE, targetTypeNode.getRecord());
+				}
+				// flags
+				byte flags = 0;
+				if (type.isConst())
+					flags |= CONST;
+				if (type.isVolatile())
+					flags |= VOLATILE;
+				if (type instanceof ICQualifierType && ((ICQualifierType)type).isRestrict())
+					flags |= RESTRICT;
+				db.putByte(record + FLAGS, flags);
+			}			
+		} catch (DOMException e) {
+			throw new CoreException(Util.createStatus(e));
 		}
 	}
 
@@ -140,12 +147,15 @@
 	        return false;
 	    
 	    IQualifierType pt = (IQualifierType) type;
-	    boolean flagsMatch= isConst() == pt.isConst() && isVolatile() == pt.isVolatile();
-		if (flagsMatch && type instanceof ICQualifierType)
-			flagsMatch &= isRestrict() == ((ICQualifierType) type).isRestrict();
-		if (flagsMatch) {
-			IType myType= getType();
-		    return myType != null && myType.isSameType(pt.getType());
+	    try {
+	    	boolean flagsMatch= isConst() == pt.isConst() && isVolatile() == pt.isVolatile();
+	    	if (flagsMatch && type instanceof ICQualifierType)
+	    		flagsMatch &= isRestrict() == ((ICQualifierType) type).isRestrict();
+			if (flagsMatch) {
+				IType myType= getType();
+			    return myType != null && myType.isSameType(pt.getType());
+			}
+		} catch (DOMException e) {
 		}
 	    return false;
 	}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunctionType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunctionType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -61,17 +61,20 @@
 	public PDOMCFunctionType(PDOMLinkage linkage, PDOMNode parent, IFunctionType type) throws CoreException {
 		super(linkage, parent);
 
-		PDOMNodeLinkedList list= new PDOMNodeLinkedList(parent.getLinkage(), record + TYPELIST, true);
-		setReturnType(type.getReturnType());
-		IType[] pt= type.getParameterTypes();
-		for (IType element : pt) {
-			PDOMNode typeNode;
-			if (element == null || element instanceof IProblemBinding) {
-				typeNode= null;
-			} else {
-				typeNode= linkage.addType(this, element);
+		try {
+			PDOMNodeLinkedList list= new PDOMNodeLinkedList(parent.getLinkage(), record + TYPELIST, true);
+			setReturnType(type.getReturnType());
+			IType[] pt= type.getParameterTypes();
+			for (int i = 0; i < pt.length; i++) {
+				PDOMNode typeNode;
+				if (pt[i] == null || pt[i] instanceof IProblemBinding) {
+					typeNode= null;
+				} else {
+					typeNode= linkage.addType(this, pt[i]);
+				}
+				list.addMember(typeNode);
 			}
-			list.addMember(typeNode);
+		} catch (DOMException de) {
 		}
 	}
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java	Wed Aug 05 17:35:39 2009 -0500
@@ -296,8 +296,11 @@
 	}
 
 	@Override
-	public PDOMNode getNode(long record, int nodeType) throws CoreException {
-		switch (nodeType) {
+	public PDOMNode getNode(long record) throws CoreException {
+		if (record == 0)
+			return null;
+
+		switch (PDOMNode.getNodeType(getDB(), record)) {
 		case CVARIABLE:
 			return new PDOMCVariable(this, record);
 		case CFUNCTION:
@@ -320,8 +323,7 @@
 			return new PDOMCFunctionType(this, record);
 		}
 
-		assert false;
-		return null;
+		return super.getNode(record);
 	}
 
 	@Override
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCTypedef.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCTypedef.java	Wed Aug 05 17:35:39 2009 -0500
@@ -95,7 +95,8 @@
 					return true;
 				}
 				IType[] params= ft.getParameterTypes();
-				for (IType param : params) {
+				for (int i = 0; i < params.length; i++) {
+					IType param = params[i];
 					if (introducesRecursion(param, tdname)) {
 						return true;
 					}
@@ -130,14 +131,18 @@
 	}
 
 	public boolean isSameType(IType type) {
-		IType myrtype = getType();
-		if (myrtype == null)
-			return false;
-		
-		if (type instanceof ITypedef) {
-			type= ((ITypedef)type).getType();
+		try {
+			IType myrtype = getType();
+			if (myrtype == null)
+				return false;
+			
+			if (type instanceof ITypedef) {
+				type= ((ITypedef)type).getType();
+			}
+			return myrtype.isSameType(type);
+		} catch (DOMException e) {
 		}
-		return myrtype.isSameType(type);
+		return false;
 	}
 
 	@Override
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -12,6 +12,7 @@
 package org.eclipse.cdt.internal.core.pdom.dom.cpp;
 
 import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IBasicType;
 import org.eclipse.cdt.core.dom.ast.IPointerType;
 import org.eclipse.cdt.core.dom.ast.IType;
@@ -36,10 +37,10 @@
 		public boolean isVolatile() {
 			return false;
 		}
-		public IType[] getParameterTypes() {
+		public IType[] getParameterTypes() throws DOMException {
 			return IType.EMPTY_TYPE_ARRAY;
 		}
-		public IType getReturnType() {
+		public IType getReturnType() throws DOMException {
 			return FALLBACK_RETURN_TYPE;
 		}
 		public boolean isSameType(IType type) {
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java	Wed Aug 05 17:35:39 2009 -0500
@@ -313,18 +313,6 @@
 			if (parent instanceof PDOMCPPClassType || parent instanceof PDOMCPPClassSpecialization) {
 				pdomBinding = new PDOMCPPField(this, parent, (ICPPField) binding);
 			}
-		} else if (binding instanceof ICPPClassTemplate) {
-			pdomBinding= new PDOMCPPClassTemplate(this, parent, (ICPPClassTemplate) binding);
-		} else if (binding instanceof ICPPClassType) {
-			if (binding instanceof ICPPUnknownClassInstance) {
-				pdomBinding= new PDOMCPPUnknownClassInstance(this, parent, (ICPPUnknownClassInstance) binding);
-			} else if (binding instanceof ICPPUnknownClassType) {
-				pdomBinding= new PDOMCPPUnknownClassType(this, parent, (ICPPUnknownClassType) binding);
-			} else {
-				pdomBinding= new PDOMCPPClassType(this, parent, (ICPPClassType) binding);
-			}
-		} else if (binding instanceof ICPPUnknownBinding) {
-			pdomBinding= new PDOMCPPUnknownBinding(this, parent, (ICPPUnknownBinding) binding);
 		} else if (binding instanceof ICPPVariable) {
 			ICPPVariable var= (ICPPVariable) binding;
 			pdomBinding = new PDOMCPPVariable(this, parent, var);
@@ -346,6 +334,16 @@
 			}
 		} else if (binding instanceof ICPPFunction) {
 			pdomBinding = new PDOMCPPFunction(this, parent, (ICPPFunction) binding, true);
+		} else if (binding instanceof ICPPClassTemplate) {
+			pdomBinding= new PDOMCPPClassTemplate(this, parent, (ICPPClassTemplate) binding);
+		} else if (binding instanceof ICPPClassType) {
+			if (binding instanceof ICPPUnknownClassInstance) {
+				pdomBinding= new PDOMCPPUnknownClassInstance(this, parent, (ICPPUnknownClassInstance) binding);
+			} else if (binding instanceof ICPPUnknownClassType) {
+				pdomBinding= new PDOMCPPUnknownClassType(this, parent, (ICPPUnknownClassType) binding);
+			} else {
+				pdomBinding= new PDOMCPPClassType(this, parent, (ICPPClassType) binding);
+			}
 		} else if (binding instanceof ICPPNamespaceAlias) {
 			pdomBinding = new PDOMCPPNamespaceAlias(this, parent, (ICPPNamespaceAlias) binding);
 		} else if (binding instanceof ICPPNamespace) {
@@ -733,8 +731,11 @@
 	}
 	
 	@Override
-	public PDOMNode getNode(long record, int nodeType) throws CoreException {
-		switch (nodeType) {
+	public PDOMNode getNode(long record) throws CoreException {
+		if (record == 0)
+			return null;
+
+		switch (PDOMNode.getNodeType(getDB(), record)) {
 		case CPPVARIABLE:
 			return new PDOMCPPVariable(this, record);
 		case CPPFUNCTION:
@@ -791,8 +792,6 @@
 			return new PDOMCPPClassInstance(this, record);
 		case CPP_DEFERRED_CLASS_INSTANCE:
 			return new PDOMCPPDeferredClassInstance(this, record);
-		case CPP_UNKNOWN_BINDING:
-			return new PDOMCPPUnknownBinding(this, record);
 		case CPP_UNKNOWN_CLASS_TYPE:
 			return new PDOMCPPUnknownClassType(this, record);
 		case CPP_UNKNOWN_CLASS_INSTANCE:
@@ -827,9 +826,9 @@
 			return new PDOMCPPFunctionType(this, record);
 		case CPP_PARAMETER_SPECIALIZATION:
 			return new PDOMCPPParameterSpecialization(this, record);
+		default:
+			return super.getNode(record);
 		}
-		assert false : "nodeid= " + nodeType; //$NON-NLS-1$
-		return null;
 	}
 
 	@Override
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPReferenceType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPReferenceType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -13,9 +13,11 @@
 
 import org.eclipse.cdt.core.CCorePlugin;
 import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.core.dom.ast.ITypedef;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPReferenceType;
+import org.eclipse.cdt.internal.core.Util;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
 import org.eclipse.cdt.internal.core.index.CPPReferenceTypeClone;
 import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants;
@@ -44,15 +46,19 @@
 		
 		Database db = getDB();
 		
-		// type
-		long typeRec = 0;
-		if (type != null) {
-			IType targetType = type.getType();
-			PDOMNode targetTypeNode = getLinkage().addType(this, targetType);
-			if (targetTypeNode != null)
-				typeRec = targetTypeNode.getRecord();
+		try {
+			// type
+			long typeRec = 0;
+			if (type != null) {
+				IType targetType = type.getType();
+				PDOMNode targetTypeNode = getLinkage().addType(this, targetType);
+				if (targetTypeNode != null)
+					typeRec = targetTypeNode.getRecord();
+			}
+			db.putRecPtr(record + TYPE, typeRec);
+		} catch (DOMException e) {
+			throw new CoreException(Util.createStatus(e));
 		}
-		db.putRecPtr(record + TYPE, typeRec);
 	}
 
 	@Override
@@ -90,9 +96,12 @@
 		    return false;
 		
 		ICPPReferenceType rhs = (ICPPReferenceType) type;
-		IType type1= getType();
-		if (type1 != null) {
-			return type1.isSameType(rhs.getType());
+		try {
+			IType type1= getType();
+			if (type1 != null) {
+				return type1.isSameType(rhs.getType());
+			}
+		} catch (DOMException e) {
 		}
 		return false;
 	}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedef.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedef.java	Wed Aug 05 17:35:39 2009 -0500
@@ -100,7 +100,8 @@
 					return true;
 				}
 				IType[] params= ft.getParameterTypes();
-				for (IType param : params) {
+				for (int i = 0; i < params.length; i++) {
+					IType param = params[i];
 					if (introducesRecursion(param, parentRec, tdname)) {
 						return true;
 					}
@@ -135,17 +136,21 @@
 	}
 
 	public boolean isSameType(IType type) {
-		IType myrtype = getType();
-		if (myrtype == null)
-			return false;
-		
-		if (type instanceof ITypedef) {
-			type= ((ITypedef)type).getType();
-			if (type == null) {
+		try {
+			IType myrtype = getType();
+			if (myrtype == null)
 				return false;
+			
+			if (type instanceof ITypedef) {
+				type= ((ITypedef)type).getType();
+				if (type == null) {
+					return false;
+				}
 			}
+			return myrtype.isSameType(type);
+		} catch (DOMException e) {
 		}
-		return myrtype.isSameType(type);
+		return false;
 	}
 	
 	@Override
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedefSpecialization.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedefSpecialization.java	Wed Aug 05 17:35:39 2009 -0500
@@ -12,9 +12,11 @@
 package org.eclipse.cdt.internal.core.pdom.dom.cpp;
 
 import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IType;
 import org.eclipse.cdt.core.dom.ast.ITypedef;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization;
+import org.eclipse.cdt.internal.core.Util;
 import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTypedefSpecialization;
 import org.eclipse.cdt.internal.core.index.CPPTypedefClone;
@@ -53,6 +55,8 @@
 			PDOMNode typeNode = parent.getLinkage().addType(this, type);
 			if (typeNode != null)
 				getDB().putRecPtr(record + TYPE, typeNode.getRecord());
+		} catch (DOMException e) {
+			throw new CoreException(Util.createStatus(e));
 		} finally {
 			if (typedef instanceof CPPTypedefSpecialization) {
 				((CPPTypedefSpecialization) typedef).incResolutionDepth(-1);
@@ -74,7 +78,7 @@
 		return IIndexCPPBindingConstants.CPP_TYPEDEF_SPECIALIZATION;
 	}
 
-	public IType getType() {
+	public IType getType() throws DOMException {
 		try {
 			PDOMNode node = getLinkage().getNode(getDB().getRecPtr(record + TYPE));
 			return node instanceof IType ? (IType)node : null;
@@ -87,16 +91,23 @@
 	public boolean isSameType(IType o) {
         if( this.equals(o) )
             return true;
-	    if( o instanceof ITypedef ) {
-			IType t = getType();
-			if( t != null )
-			    return t.isSameType( ((ITypedef)o).getType());
-			return false;
-		}
+	    if( o instanceof ITypedef )
+            try {
+                IType t = getType();
+                if( t != null )
+                    return t.isSameType( ((ITypedef)o).getType());
+                return false;
+            } catch ( DOMException e ) {
+                return false;
+            }
 	        
-        IType t = getType();
-		if( t != null )
-		    return t.isSameType( o );
+        try {
+		    IType t = getType();
+		    if( t != null )
+		        return t.isSameType( o );
+        } catch ( DOMException e ) {
+            return false;
+        }
 	    return false;
 	}
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUnknownBinding.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Wind River Systems, Inc and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Markus Schorn (Wind River Systems) - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.pdom.dom.cpp;
-
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPScope;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPUnknownBinding;
-import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants;
-import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage;
-import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode;
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * Models unknown bindings. The class is directly used for objects (variables, functions, ...) and
- * serves as a base for unknown types.
- */
-class PDOMCPPUnknownBinding extends PDOMCPPBinding implements ICPPUnknownBinding {
-
-	@SuppressWarnings("hiding")
-	protected static final int RECORD_SIZE = PDOMCPPBinding.RECORD_SIZE;
-	
-	public PDOMCPPUnknownBinding(PDOMLinkage linkage, PDOMNode parent, ICPPUnknownBinding binding) throws CoreException {
-		super(linkage, parent, binding.getNameCharArray());
-	}
-
-	public PDOMCPPUnknownBinding(PDOMLinkage linkage, long bindingRecord) {
-		super(linkage, bindingRecord);
-	}
-
-	@Override
-	protected int getRecordSize() {
-		return RECORD_SIZE;
-	}
-
-	@Override
-	public int getNodeType() {
-		return IIndexCPPBindingConstants.CPP_UNKNOWN_BINDING;
-	}
-	
-    public ICPPScope asScope() {
-    	return null;
-    }
-    
-	@Override
-	public boolean mayHaveChildren() {
-		return false;
-	}
-
-	public IASTName getUnknownName() {
-		return new CPPASTName(getNameCharArray());
-	}
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUnknownClassType.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUnknownClassType.java	Wed Aug 05 17:35:39 2009 -0500
@@ -31,6 +31,7 @@
 import org.eclipse.cdt.core.index.IIndexFileSet;
 import org.eclipse.cdt.core.parser.util.CharArrayUtils;
 import org.eclipse.cdt.internal.core.Util;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPDeferredClassInstance;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPUnknownClassInstance;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPUnknownClassType;
@@ -47,18 +48,18 @@
 /**
  * @author Sergey Prigogin
  */
-class PDOMCPPUnknownClassType extends PDOMCPPUnknownBinding implements ICPPClassScope, ICPPUnknownClassType,
+class PDOMCPPUnknownClassType extends PDOMCPPBinding implements ICPPClassScope, ICPPUnknownClassType,
 		IPDOMMemberOwner, IIndexType, IIndexScope {
 
 	private static final int KEY = PDOMCPPBinding.RECORD_SIZE + 0; // byte
 	private static final int MEMBERLIST = PDOMCPPBinding.RECORD_SIZE + 4;
 	@SuppressWarnings("hiding")
-	protected static final int RECORD_SIZE = PDOMCPPUnknownBinding.RECORD_SIZE + 8;
+	protected static final int RECORD_SIZE = PDOMCPPBinding.RECORD_SIZE + 8;
 	
 	private ICPPScope unknownScope;
 
 	public PDOMCPPUnknownClassType(PDOMLinkage linkage, PDOMNode parent, ICPPUnknownClassType classType) throws CoreException {
-		super(linkage, parent, classType);
+		super(linkage, parent, classType.getNameCharArray());
 
 		setKind(classType);
 		// linked list is initialized by storage being zero'd by malloc
@@ -120,8 +121,7 @@
 		return this;
 	}
 
-    @Override
-	public ICPPScope asScope() {
+    public ICPPScope asScope() {
     	if (unknownScope == null) {
     		unknownScope= new PDOMCPPUnknownScope(this, getUnknownName());
     	}
@@ -262,6 +262,10 @@
 		return ICPPClassType.EMPTY_CLASS_ARRAY;
 	}
 	
+	public IASTName getUnknownName() {
+		return new CPPASTName(getNameCharArray());
+	}
+
 	public boolean isAnonymous() {
 		return false;
 	}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java	Wed Aug 05 17:35:39 2009 -0500
@@ -28,12 +28,12 @@
 
 import org.eclipse.cdt.core.cdtvariables.ICdtVariableManager;
 import org.eclipse.cdt.core.cdtvariables.IUserVarSupplier;
+import org.eclipse.cdt.core.dom.CDOM;
 import org.eclipse.cdt.core.dom.IPDOMManager;
 import org.eclipse.cdt.core.envvar.IEnvironmentVariableManager;
 import org.eclipse.cdt.core.index.IIndexManager;
 import org.eclipse.cdt.core.model.CModelException;
 import org.eclipse.cdt.core.model.CoreModel;
-import org.eclipse.cdt.core.model.ILanguage;
 import org.eclipse.cdt.core.model.ITranslationUnit;
 import org.eclipse.cdt.core.model.IWorkingCopy;
 import org.eclipse.cdt.core.parser.IScannerInfoProvider;
@@ -95,11 +95,10 @@
 	public static final int STATUS_CDTPROJECT_MISMATCH = 2;
 	public static final int CDT_PROJECT_NATURE_ID_MISMATCH = 3;
 	/**
-	 * Status code for core exception that is thrown if a pdom grew larger than the supported limit.
-	 * @since 5.2
+	 * Will be public and final in the next CDT version.
+	 * @noreference
 	 */
-	public static final int STATUS_PDOM_TOO_LARGE = 4;
-
+	public static int STATUS_PDOM_TOO_LARGE = 4;
 	public static final String PLUGIN_ID = "org.eclipse.cdt.core"; //$NON-NLS-1$
 
 	public static final String BUILDER_MODEL_ID = PLUGIN_ID + ".CBuildModel"; //$NON-NLS-1$
@@ -1008,12 +1007,8 @@
 		return getPluginPreferences().getBoolean(PREF_USE_STRUCTURAL_PARSE_MODE);
 	}
 	
-	/**
-	 * @deprecated use {@link ITranslationUnit} or {@link ILanguage} to construct ASTs, instead.
-	 */
-	@Deprecated
-	public org.eclipse.cdt.core.dom.CDOM getDOM() {
-	    return org.eclipse.cdt.core.dom.CDOM.getInstance();
+	public CDOM getDOM() {
+	    return CDOM.getInstance();
 	}
 
 	public ICdtVariableManager getCdtVariableManager(){
@@ -1267,14 +1262,4 @@
 	public static IPDOMManager getPDOMManager() {
 		return getDefault().pdomManager;
 	}
-
-	/**
-	 * Returns preference controlling whether source roots are shown at the top of projects
-	 * or embedded within the resource tree of projects when they are not top level folders.
-	 * 
-	 * @return boolean preference value
-	 */
-	public static boolean showSourceRootsAtTopOfProject() {
-		return getDefault().getPluginPreferences().getBoolean( CCorePreferenceConstants.SHOW_SOURCE_ROOTS_AT_TOP_LEVEL_OF_PROJECT);
-	}
 }
\ No newline at end of file
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePreferenceConstants.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePreferenceConstants.java	Wed Aug 05 17:35:39 2009 -0500
@@ -135,9 +135,4 @@
 	 * Attempt to show source files for executable binaries.
 	 */
 	public static final String SHOW_SOURCE_FILES_IN_BINARIES = CCorePlugin.PLUGIN_ID + ".showSourceFilesInBinaries"; //$NON-NLS-1$
-	
-	/**
-	 * Show source roots at the top level of projects.
-	 */
-	public static final String SHOW_SOURCE_ROOTS_AT_TOP_LEVEL_OF_PROJECT = CCorePlugin.PLUGIN_ID + ".showSourceRootsAtTopLevelOfProject"; //$NON-NLS-1$
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/src/org/eclipse/cdt/core/formatter/DefaultCodeFormatterConstants.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/src/org/eclipse/cdt/core/formatter/DefaultCodeFormatterConstants.java	Wed Aug 05 17:35:39 2009 -0500
@@ -2198,35 +2198,35 @@
 	 * @param wrapStyle the given wrapping style
 	 * @param indentStyle the given indent style
 	 * 
-	 * @return the new alignment value
+	 * @return the new alignement value
 	 */
 	public static String createAlignmentValue(boolean forceSplit, int wrapStyle, int indentStyle) {
 		int alignmentValue = 0; 
-		switch (wrapStyle) {
-			case WRAP_COMPACT:
+		switch(wrapStyle) {
+			case WRAP_COMPACT :
 				alignmentValue |= Alignment.M_COMPACT_SPLIT;
 				break;
-			case WRAP_COMPACT_FIRST_BREAK:
+			case WRAP_COMPACT_FIRST_BREAK :
 				alignmentValue |= Alignment.M_COMPACT_FIRST_BREAK_SPLIT;
 				break;
-			case WRAP_NEXT_PER_LINE:
+			case WRAP_NEXT_PER_LINE :
 				alignmentValue |= Alignment.M_NEXT_PER_LINE_SPLIT;
 				break;
-			case WRAP_NEXT_SHIFTED:
+			case WRAP_NEXT_SHIFTED :
 				alignmentValue |= Alignment.M_NEXT_SHIFTED_SPLIT;
 				break;
-			case WRAP_ONE_PER_LINE:
+			case WRAP_ONE_PER_LINE :
 				alignmentValue |= Alignment.M_ONE_PER_LINE_SPLIT;
 				break;
 		}		
 		if (forceSplit) {
 			alignmentValue |= Alignment.M_FORCE;
 		}
-		switch (indentStyle) {
-			case INDENT_BY_ONE:
+		switch(indentStyle) {
+			case INDENT_BY_ONE :
 				alignmentValue |= Alignment.M_INDENT_BY_ONE;
 				break;
-			case INDENT_ON_COLUMN:
+			case INDENT_ON_COLUMN :
 				alignmentValue |= Alignment.M_INDENT_ON_COLUMN;
 		}
 		return String.valueOf(alignmentValue);
@@ -2349,16 +2349,16 @@
 		}
 		try {
 			int existingValue = Integer.parseInt(value) & Alignment.SPLIT_MASK;
-			switch (existingValue) {
-				case Alignment.M_COMPACT_SPLIT:
+			switch(existingValue) {
+				case Alignment.M_COMPACT_SPLIT :
 					return WRAP_COMPACT;
-				case Alignment.M_COMPACT_FIRST_BREAK_SPLIT:
+				case Alignment.M_COMPACT_FIRST_BREAK_SPLIT :
 					return WRAP_COMPACT_FIRST_BREAK;
-				case Alignment.M_NEXT_PER_LINE_SPLIT:
+				case Alignment.M_NEXT_PER_LINE_SPLIT :
 					return WRAP_NEXT_PER_LINE;
-				case Alignment.M_NEXT_SHIFTED_SPLIT:
+				case Alignment.M_NEXT_SHIFTED_SPLIT :
 					return WRAP_NEXT_SHIFTED;
-				case Alignment.M_ONE_PER_LINE_SPLIT:
+				case Alignment.M_ONE_PER_LINE_SPLIT :
 					return WRAP_ONE_PER_LINE;
 				default:
 					return WRAP_NO_SPLIT;
@@ -2419,11 +2419,11 @@
 			throw WRONG_ARGUMENT;
 		}
 		switch(indentStyle) {
-			case INDENT_BY_ONE:
-			case INDENT_DEFAULT:
-			case INDENT_ON_COLUMN:
+			case INDENT_BY_ONE :
+			case INDENT_DEFAULT :
+			case INDENT_ON_COLUMN :
 				break;
-			default:
+			default :
 				throw WRONG_ARGUMENT;
 		}
 		try {
@@ -2431,10 +2431,10 @@
 			// clear existing indent bits
 			existingValue &= ~(Alignment.M_INDENT_BY_ONE | Alignment.M_INDENT_ON_COLUMN);
 			switch(indentStyle) {
-				case INDENT_BY_ONE:
+				case INDENT_BY_ONE :
 					existingValue |= Alignment.M_INDENT_BY_ONE;
 					break;
-				case INDENT_ON_COLUMN:
+				case INDENT_ON_COLUMN :
 					existingValue |= Alignment.M_INDENT_ON_COLUMN;
 			}
 			return String.valueOf(existingValue);
@@ -2466,13 +2466,13 @@
 		if (value == null) {
 			throw WRONG_ARGUMENT;
 		}
-		switch (wrappingStyle) {
-			case WRAP_COMPACT:
-			case WRAP_COMPACT_FIRST_BREAK:
-			case WRAP_NEXT_PER_LINE:
-			case WRAP_NEXT_SHIFTED:
-			case WRAP_NO_SPLIT:
-			case WRAP_ONE_PER_LINE:
+		switch(wrappingStyle) {
+			case WRAP_COMPACT :
+			case WRAP_COMPACT_FIRST_BREAK :
+			case WRAP_NEXT_PER_LINE :
+			case WRAP_NEXT_SHIFTED :
+			case WRAP_NO_SPLIT :
+			case WRAP_ONE_PER_LINE :
 				break;
 			default:
 				throw WRONG_ARGUMENT;
@@ -2481,20 +2481,20 @@
 			int existingValue = Integer.parseInt(value);
 			// clear existing split bits
 			existingValue &= ~(Alignment.SPLIT_MASK);
-			switch (wrappingStyle) {
-				case WRAP_COMPACT:
+			switch(wrappingStyle) {
+				case WRAP_COMPACT :
 					existingValue |= Alignment.M_COMPACT_SPLIT;
 					break;
-				case WRAP_COMPACT_FIRST_BREAK:
+				case WRAP_COMPACT_FIRST_BREAK :
 					existingValue |= Alignment.M_COMPACT_FIRST_BREAK_SPLIT;
 					break;
-				case WRAP_NEXT_PER_LINE:
+				case WRAP_NEXT_PER_LINE :
 					existingValue |= Alignment.M_NEXT_PER_LINE_SPLIT;
 					break;
-				case WRAP_NEXT_SHIFTED:
+				case WRAP_NEXT_SHIFTED :
 					existingValue |= Alignment.M_NEXT_SHIFTED_SPLIT;
 					break;
-				case WRAP_ONE_PER_LINE:
+				case WRAP_ONE_PER_LINE :
 					existingValue |= Alignment.M_ONE_PER_LINE_SPLIT;
 					break;
 			}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CCorePluginResources.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CCorePluginResources.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -22,7 +22,7 @@
 CoreModel.NullBinaryParser.Null_Format=Null Format
 
 CoreModel.PathEntry.IllegalContainerPath= Illegal container entry
-CoreModel.PathEntry.DuplicateEntry= Duplicate path entries found: {0}
+CoreModel.PathEntry.DuplicateEntry= Duplicate path entries
 CoreModel.PathEntry.NestedEntry= Nested path entries
 CoreModel.PathEntry.InvalidPathEntry= Invalid path
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CCorePreferenceInitializer.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CCorePreferenceInitializer.java	Wed Aug 05 17:35:39 2009 -0500
@@ -59,8 +59,6 @@
 
 		defaultPreferences.putBoolean(CCorePreferenceConstants.SHOW_SOURCE_FILES_IN_BINARIES, true);
 		defaultPreferences.putBoolean(CCorePlugin.PREF_USE_STRUCTURAL_PARSE_MODE, false);
-		
-		defaultPreferences.putBoolean(CCorePreferenceConstants.SHOW_SOURCE_ROOTS_AT_TOP_LEVEL_OF_PROJECT, true);
 
 		// indexer defaults
 		IndexerPreferences.initializeDefaultPreferences(defaultPreferences);
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/cdtvariables/CdtVariableResolver.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/cdtvariables/CdtVariableResolver.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 Intel Corporation and others.
+ * Copyright (c) 2005, 2007 Intel Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,50 +7,31 @@
  *
  * Contributors:
  * Intel Corporation - Initial API and implementation
- * Andrew Gvozdev (Quoin Inc.)
  *******************************************************************************/
 package org.eclipse.cdt.utils.cdtvariables;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 import org.eclipse.cdt.core.cdtvariables.CdtVariableException;
 import org.eclipse.cdt.core.cdtvariables.ICdtVariable;
 import org.eclipse.cdt.core.cdtvariables.ICdtVariableStatus;
 
 /**
- * Utility class to resolve macro references. Provides fixture to parse ${macro}
- * expressions and replace macros with actual values using {@link IVariableSubstitutor}.
+ * This is the utility class used to resolve macro references and that provides
+ * other functionality related to the macro resolving 
  * 
  * @since 3.0
  */
 public class CdtVariableResolver {
 	private static final String EMPTY_STRING = "";	//$NON-NLS-1$
 	
-	public  static final String VARIABLE_PREFIX = "${";	//$NON-NLS-1$
-	private static final String VARIABLE_PREFIX_MASKED = "$\1";	//$NON-NLS-1$
-	public  static final char VARIABLE_SUFFIX = '}';
-	private static final char VARIABLE_SUFFIX_MASKED = '\2';
-	public  static final char VARIABLE_ESCAPE_CHAR = '\\';
-	private static final char VARIABLE_ESCAPE_CHAR_MASKED = '\3';
+	public static final String VARIABLE_PREFIX = "${";	//$NON-NLS-1$
+	public static final char VARIABLE_SUFFIX = '}';	
+	public static final char VARIABLE_ESCAPE_CHAR = '\\';	
+	private static final int VARIABLE_PREFIX_LENGTH = VARIABLE_PREFIX.length();
 
-	// Regular expression fragments
-	private static final String RE_VPREFIX = "\\$\\{"; //$NON-NLS-1$
-	private static final String RE_VSUFFIX = "\\}"; //$NON-NLS-1$
-	private static final String RE_VNAME = "[^${}]*"; //$NON-NLS-1$
-	private static final String RE_BSLASH = "[\\\\]"; // *one* backslash //$NON-NLS-1$
-	
-	/**
-	 * Converts list of strings to one string using given string as delimiter,
-	 * i.e -> "string1:string2:string3"
-	 * 
-	 * @param value - list of strings to convert.
-	 * @param listDelimiter - delimiter.
-	 * @return all strings from the list separated with given delimiter.
-	 */
 	static public String convertStringListToString(String value[], String listDelimiter) {
 		
 		if(value == null || value.length == 0)
@@ -66,61 +47,17 @@
 	}
 
 	/**
-	 * Resolves macros of kind ${Macro} in the given string by calling the macro substitutor
-	 * for each macro reference found. Macros can be inside one another like
-	 * ${workspace_loc:/${ProjName}/} but resolved just once. No recursive or concatenated
-	 * macro names are allowed. It is possible to prevent macro from expanding using backslash \$.
+	 * resolves macros in the given string by calling the macro subsitutor for each macro reference found
 	 * 
-	 * @param string - macro expression.
-	 * @param substitutor - macro resolution provider to retrieve macro values.
+	 * @param string
+	 * @param substitutor
 	 * @return resolved string
 	 * 
-	 * @throws CdtVariableException if substitutor can't handle the macro and returns null or throws.
+	 * @throws CdtVariableException
 	 */
 	static public String resolveToString(String string, IVariableSubstitutor substitutor)
 			throws CdtVariableException{
-		if (string==null) {
-			return EMPTY_STRING;
-		}
-
-		final Pattern pattern = Pattern.compile(".*?("+RE_BSLASH+"*)("+RE_VPREFIX+"("+RE_VNAME+")"+RE_VSUFFIX+").*"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
-
-		StringBuffer buffer = new StringBuffer(string);
-		int limit=string.length();
-		for (Matcher matcher = pattern.matcher(buffer);matcher.matches();matcher = pattern.matcher(buffer)) {
-			String bSlashes=matcher.group(1);
-			String macro=matcher.group(2);
-			String name=matcher.group(3);
-			String resolved = name.length()>0 ? substitutor.resolveToString(name) : EMPTY_STRING;
-			if (resolved==null) {
-				throw new CdtVariableException(ICdtVariableStatus.TYPE_MACRO_UNDEFINED, null, string, name);
-			}
-			if (limit-- < 0) {
-				// to prevent incidental looping
-				throw new CdtVariableException(ICdtVariableStatus.TYPE_ERROR, name, matcher.group(0), resolved);
-			}
-
-			int nBSlashes=bSlashes.length();
-			if ((nBSlashes & 1)==1) {
-				// if odd number of backslashes in front of "${...}" do not expand macro
-				resolved = macro;
-			}
-			// Only one expansion is allowed, so hide any text interfering with macro syntax
-			resolved=resolved.replace(VARIABLE_PREFIX, VARIABLE_PREFIX_MASKED);
-			resolved=resolved.replace(VARIABLE_SUFFIX, VARIABLE_SUFFIX_MASKED);
-			buffer.replace(matcher.start(2), matcher.end(2), resolved);
-			// collapse and hide backslashes  \\\\${Macro} -> \\MacroValue or \\\\\${Macro} -> \\${Macro} 
-			buffer.replace(matcher.start(1), matcher.end(1),
-				bSlashes.substring(0, nBSlashes/2).replace(VARIABLE_ESCAPE_CHAR, VARIABLE_ESCAPE_CHAR_MASKED));
-		}
-		String result = buffer.toString();
-
-		// take hidden data back
-		result=result.replace(VARIABLE_PREFIX_MASKED, VARIABLE_PREFIX);
-		result=result.replace(VARIABLE_SUFFIX_MASKED, VARIABLE_SUFFIX);
-		result=result.replace(VARIABLE_ESCAPE_CHAR_MASKED, VARIABLE_ESCAPE_CHAR);
-
-		return result;
+		return (String)resolve(string,substitutor,false,false);
 	}
 
 	/**
@@ -130,26 +67,108 @@
 	 * @param string
 	 * @param substitutor
 	 * @throws CdtVariableException
-	 * 
-	 * @deprecated Use {@link #resolveToString} which would do full nested expansion.
 	 */
-	@Deprecated
 	static public void checkVariables(String string, IVariableSubstitutor substitutor)
 			throws CdtVariableException{
-		resolveToString(string, substitutor);
+		resolve(string, substitutor, false, true);
+	}
+
+	static private Object resolve(String string, IVariableSubstitutor substitutor, boolean asList, boolean checkOnly)
+			throws CdtVariableException{
+		if(string == null)
+			return EMPTY_STRING;
+
+		int macroStart = -1;
+		int macroEnd = -1;
+		int processed = 0;
+		StringBuffer buffer = checkOnly ? null : new StringBuffer();
+		boolean listMode = false;
+		String listValue[] = null;
+		final int length = string.length();
+
+		do{
+			//find macro prefix
+			macroStart = string.indexOf(VARIABLE_PREFIX, macroEnd+1);
+			if(macroStart == -1){
+				if(buffer != null)
+					buffer.append(string.substring(processed,length));
+				break;
+			}
+
+			//macro prefix found, find macro suffix
+			macroEnd = string.indexOf(VARIABLE_SUFFIX, macroStart);
+			if(macroEnd == -1){
+				if(buffer != null)
+					buffer.append(string.substring(processed,length));
+				break;
+			}
+
+			if(asList && macroStart == 0 && macroEnd == length - 1)
+				listMode = true;
+			
+			//check whether macro is prepended with the back-clash
+			if(macroStart > 0 && VARIABLE_ESCAPE_CHAR == string.charAt(macroStart - 1)){
+				int num;
+				for(num = macroStart-2; num >= 0 && VARIABLE_ESCAPE_CHAR == string.charAt(num); num--){}
+				
+				//number of back-slashes
+				num = macroStart - num - 1;
+				if(buffer != null)
+					buffer.append(string.substring(processed,macroStart - ((num + 1) >> 1)));
+
+				if((num & 1) == 0)
+					processed = macroStart;
+				else {
+					if(buffer != null)
+						buffer.append(string.substring(macroStart,macroEnd+1));
+					processed = macroEnd+1;
+					continue;
+				}
+			}
+
+			if(macroStart > processed && buffer != null)
+				buffer.append(string.substring(processed,macroStart));
+				
+			String name = string.substring(macroStart + VARIABLE_PREFIX_LENGTH, macroEnd);
+			if(!EMPTY_STRING.equals(name)){
+			
+				if(listMode){
+					listValue = substitutor.resolveToStringList(name);
+					if(listValue == null)
+						throw new CdtVariableException(ICdtVariableStatus.TYPE_MACRO_UNDEFINED,(String)null,string,name);
+				}
+				else{
+					String resolved = substitutor.resolveToString(name);
+					if(resolved == null)
+						throw new CdtVariableException(ICdtVariableStatus.TYPE_MACRO_UNDEFINED,(String)null,string,name);
+					if(buffer != null)
+						buffer.append(resolved);
+				}
+			}
+			processed = macroEnd+1;
+
+		}while(true);
+
+		if(asList){
+			String result[] = null;
+			if(listMode){
+				if(listValue != null)
+					result = listValue;
+				else
+					result = new String[0];
+			}
+			else if(buffer != null)
+				result = new String[]{buffer.toString()};
+			return result;
+		}
+		else if(buffer != null)
+			return buffer.toString();
+		return null;
 	}
 
 	/**
-	 * Resolves array of macros using {@code substitutor} to pull macro's list of values.
-	 * Note that each macro of input array can in turn provide list of values and
-	 * the resulting array combines all of them.
-	 * 
-	 * @param values - input array of macros.
-	 * @param substitutor - macro resolution provider to retrieve macro values.
-	 * @param ignoreErrors - if {@code true} then exceptions are caught and ignored.
-	 * @return array of resolved values.
-	 * @throws CdtVariableException if substitutor throws {@link CdtVariableException}
-	 *         and {@code ignoreErrors}={@code null}.
+	 * resolves macros in the array of string-list values
+	 * @throws CdtVariableException
 	 */
 	static public String[] resolveStringListValues(String values[], IVariableSubstitutor substitutor, boolean ignoreErrors) 
 						throws CdtVariableException {
@@ -183,40 +202,16 @@
 	}
 
 	/**
-	 * Resolves macro ${ListMacro} in the given String to the String-list using substitutor
-	 * to pull macro's list of values. If the provided string is not exactly a single macro
-	 * it is treated as macro expression and result is put into the first element of resulting array.
-	 * 
-	 * @param string - input string.
-	 * @param substitutor - macro resolution provider to retrieve macro values.
-	 * @return array of resolved values.
-	 * @throws CdtVariableException if substitutor can't handle the macro and returns null or throws.
+	 * Resolves macros in the given String to the String-list
+	 * @throws CdtVariableException
 	 */
 	static public String[] resolveToStringList(String string, IVariableSubstitutor substitutor)
 			throws CdtVariableException{
-		
-		StringBuffer buffer = new StringBuffer(string);
-		final Pattern pattern = Pattern.compile("^"+RE_VPREFIX+"("+RE_VNAME+")"+RE_VSUFFIX+"$"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		Matcher matcher = pattern.matcher(buffer);
-		if (matcher.matches()) {
-			String name=matcher.group(1);
-			if (name.equals(EMPTY_STRING)) {
-				return new String[0];
-			}
-			String[] result = substitutor.resolveToStringList(name);
-			if (result==null) {
-				throw new CdtVariableException(ICdtVariableStatus.TYPE_MACRO_UNDEFINED, null, string, name);
-			}
-			return result;
-		}
-		return new String[] {resolveToString(string, substitutor)};
+		return (String[])resolve(string,substitutor,true,false);
 	}
 
 	/**
-	 * Test for String-list type of macro.
-	 *
-	 * @param macroType - type of tested macro.
-	 * @return {@code true} if the given macro is a String-list macro.
+	 * returns true if the given macro is a String-list macro.
 	 */
 	public static boolean isStringListVariable(int macroType){
 		switch(macroType){
@@ -231,12 +226,8 @@
 	}
 	
 	/**
-	 * Checks the macros integrity for the given context. If test fails {@link CdtVariableException}
-	 * is thrown.
-	 * 
-	 * @param info - context information to acquire list of available macros.
-	 * @param substitutor - macro resolution provider to retrieve macro values.
-	 * @throws CdtVariableException propagated up if {@code substitutor} throws.
+	 * checks the macros integrity for the given context
+	 * @throws CdtVariableException
 	 */
 	public static void checkIntegrity(
 			IVariableContextInfo info,
@@ -256,14 +247,68 @@
 	}
 	
 	/**
-	 * Constructs a macro reference given the macro name
+	 * creates a macro reference given the macro name
 	 * e.g. if the "macro1" name is passed, returns "${macro1}"
 	 * 
-	 * @param name - macro name.
-	 * @return macro variable in form "${macro}"
+	 * @param name
+	 * @return String
 	 */
 	public static String createVariableReference(String name){
 		return VARIABLE_PREFIX + name + VARIABLE_SUFFIX;
 	}
 	
+	/**
+	 * Returns the array of the explicit file macros, referenced in the given string
+	 * (Explicit file macros are the file-specific macros, whose values are not provided
+	 * by the tool-integrator. As a result these macros contain explicit values, but not the values
+	 * specified in the format of the builder automatic variables and text functions)
+	 * 
+	 * @param expression
+	 * @param contextType
+	 * @param contextData
+	 * @return
+	 */
+/*	public static IBuildMacro[] getReferencedExplitFileMacros(String expression, int contextType, Object contextData){
+		ExplicitFileMacroCollector collector = new ExplicitFileMacroCollector(contextType,contextData);
+		try {
+			resolveToString(expression,collector);
+		} catch (BuildMacroException e){
+		}
+		return collector.getExplicisFileMacros();
+	}
+*/
+/*	static public ICdtVariable[] filterMacros(ICdtVariable macros[], String remove[]){
+		
+		if(macros == null || macros.length == 0)
+			return macros;
+		
+		ICdtVariable filtered[] = new ICdtVariable[macros.length];
+		int filteredNum = 0;
+		for(int i = 0; i < macros.length; i++){
+			ICdtVariable var = macros[i];
+			String name = null;
+			if(var != null && (name = EnvVarOperationProcessor.normalizeName(var.getName())) != null){
+				boolean skip = false;
+				if(remove != null && remove.length > 0){
+					for(int j = 0; j < remove.length; j++){
+						if(remove[j] != null && remove[j].equals(name)){
+							skip = true;
+							break;
+						}
+					}
+				}
+				if(!skip)
+					filtered[filteredNum++] = var;
+			}
+		}
+
+		if(filteredNum != filtered.length){
+			IBuildMacro m[] = new IBuildMacro[filteredNum];
+			for(int i = 0; i < filteredNum; i++)
+				m[i] = filtered[i];
+			filtered = m;
+		}
+		return filtered;
+	}
+*/
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/plugin.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/plugin.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -11,7 +11,6 @@
 #     Ken Ryall (Nokia) - Added support for breakpoint problems( 170027 )
 #     Ken Ryall (Nokia) - Added support for Breakpoint Actions ( 118308 ) 
 #	  IBM Corporation
-#     Texas Instruments - added extension point for source container type (279473) 
 ###############################################################################
 pluginName=C/C++ Development Tools Debug Model
 providerName=Eclipse CDT
@@ -22,7 +21,6 @@
 
 CDebugger.name=C/C++ Development Tools Core Debugger Extension
 BreakpointAction.name=Breakpoint Action Extension
-SupportedSourceContainerTypes.name=C/C++ Supported Source Container Types Extension
 
 cLineBreakpoints.name=C/C++ Line Breakpoints
 cAddressBreakpoints.name=C/C++ Address Breakpoints
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/plugin.xml	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/plugin.xml	Wed Aug 05 17:35:39 2009 -0500
@@ -5,11 +5,6 @@
      <extension-point id="CDebugger" name="%CDebugger.name" schema="schema/CDebugger.exsd"/>
      <extension-point id="BreakpointActionType" name="%BreakpointAction" schema="schema/BreakpointAction.exsd"/>
      <extension-point id="BreakpointExtension" name="%BreakpointAction" schema="schema/BreakpointExtension.exsd"/>
-     <extension-point id="ExecutablesProvider" name="Executables Provider" schema="schema/ExecutablesProvider.exsd"/>
-     <extension-point id="SourceFilesProvider" name="Source Files Provider" schema="schema/SourceFilesProvider.exsd"/>
-     <extension-point id="SourceRemappingProvider" name="Source Remapping Provider" schema="schema/SourceRemappingProvider.exsd"/>
-     <extension-point id="ExecutablesImporter" name="Executables Importer" schema="schema/ExecutablesImporter.exsd"/>
-     <extension-point id="supportedSourceContainerTypes" name="%SupportedSourceContainerTypes.name" schema="schema/SupportedSourceContainerTypes.exsd"/>
 
     <extension
          point="org.eclipse.debug.core.launchConfigurationTypes">
@@ -261,20 +256,5 @@
             markerType="org.eclipse.cdt.debug.core.cBreakpointMarker">
       </breakpointExtension>
    </extension>
-   <extension
-         point="org.eclipse.cdt.debug.core.supportedSourceContainerTypes">
-      <sourceContainer
-            id="org.eclipse.cdt.debug.core.containerType.absolutePath"/>
-      <sourceContainer
-            id="org.eclipse.cdt.debug.core.containerType.mapping"/>
-      <sourceContainer
-            id="org.eclipse.debug.core.containerType.folder"/>
-      <sourceContainer
-            id="org.eclipse.debug.core.containerType.workspace"/>
-      <sourceContainer
-            id="org.eclipse.debug.core.containerType.directory"/>
-      <sourceContainer
-      		id="org.eclipse.debug.core.containerType.project"/>
-   </extension>
  
 </plugin>
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/schema/BreakpointAction.exsd	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/schema/BreakpointAction.exsd	Wed Aug 05 17:35:39 2009 -0500
@@ -1,106 +1,106 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.cdt.debug.core">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.cdt.debug.core" id="BreakpointActionType" name="BreakpointActionType"/>
-      </appInfo>
-      <documentation>
-         Extension to provide additional actions to execute when a breakpoint is hit.
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <sequence>
-            <element ref="actionType"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="actionType">
-      <complexType>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-         <attribute name="class" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         [Enter the first release in which this extension point appears.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         [Enter extension point usage example here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         [Enter API information here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         [Enter information about supplied implementation of this extension point.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) 2007 Nokia and others.
-All rights reserved. This program and the accompanying materials
-are made available under the terms of the Eclipse Public License v1.0
-which accompanies this distribution, and is available at
-http://www.eclipse.org/legal/epl-v10.html
-      </documentation>
-   </annotation>
-
-</schema>
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.cdt.debug.core">
+<annotation>
+      <appInfo>
+         <meta.schema plugin="org.eclipse.cdt.debug.core" id="BreakpointActionType" name="BreakpointActionType"/>
+      </appInfo>
+      <documentation>
+         Extension to provide additional actions to execute when a breakpoint is hit.
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <complexType>
+         <sequence>
+            <element ref="actionType"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="actionType">
+      <complexType>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appInfo>
+                  <meta.attribute translatable="true"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+         <attribute name="class" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="since"/>
+      </appInfo>
+      <documentation>
+         [Enter the first release in which this extension point appears.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="examples"/>
+      </appInfo>
+      <documentation>
+         [Enter extension point usage example here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="apiInfo"/>
+      </appInfo>
+      <documentation>
+         [Enter API information here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="implementation"/>
+      </appInfo>
+      <documentation>
+         [Enter information about supplied implementation of this extension point.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="copyright"/>
+      </appInfo>
+      <documentation>
+         Copyright (c) 2007 Nokia and others.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+      </documentation>
+   </annotation>
+
+</schema>
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/schema/ExecutablesImporter.exsd	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.cdt.debug.core" xmlns="http://www.w3.org/2001/XMLSchema">
-<annotation>
-      <appinfo>
-         <meta.schema plugin="org.eclipse.cdt.debug.core" id="ExecutablesImporter" name="Executables Importer"/>
-      </appinfo>
-      <documentation>
-         This extension points allows you to extened the executables manager in CDT by providing your own executables importer.
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <annotation>
-         <appinfo>
-            <meta.element />
-         </appinfo>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="provider"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appinfo>
-                  <meta.attribute translatable="true"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="importer">
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appinfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.cdt.debug.core.executables.IExecutableImporter"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="since"/>
-      </appinfo>
-      <documentation>
-         CDT 7.0
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="examples"/>
-      </appinfo>
-      <documentation>
-         &lt;extension
-         point=&quot;org.eclipse.cdt.debug.core.ExecutablesImporter&quot;&gt;
-      &lt;modifier class=&quot;com.xyz.MyExecutablesImporter&quot;/&gt;
-   &lt;/extension&gt;
-      </documentation>
-   </annotation>
-
-</schema>
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/schema/ExecutablesProvider.exsd	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.cdt.debug.core" xmlns="http://www.w3.org/2001/XMLSchema">
-<annotation>
-      <appinfo>
-         <meta.schema plugin="org.eclipse.cdt.debug.core" id="ExecutablesProvider" name="Executables Provider"/>
-      </appinfo>
-      <documentation>
-         This extension points allows you to extened the executables manager in CDT by providing your own executables provider for certain types of projects.
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <annotation>
-         <appinfo>
-            <meta.element />
-         </appinfo>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="provider"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appinfo>
-                  <meta.attribute translatable="true"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="provider">
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appinfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.cdt.debug.core.executables.IProjectExecutablesProvider"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="since"/>
-      </appinfo>
-      <documentation>
-         CDT 7.0
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="examples"/>
-      </appinfo>
-      <documentation>
-         &lt;extension
-         point=&quot;org.eclipse.cdt.debug.core.ExecutablesProvider&quot;&gt;
-      &lt;modifier class=&quot;com.xyz.MyExecutablesProvider&quot;/&gt;
-   &lt;/extension&gt;
-      </documentation>
-   </annotation>
-
-</schema>
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/schema/SourceFilesProvider.exsd	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.cdt.debug.core" xmlns="http://www.w3.org/2001/XMLSchema">
-<annotation>
-      <appinfo>
-         <meta.schema plugin="org.eclipse.cdt.debug.core" id="SourceFilesProvider" name="Source Files Provider"/>
-      </appinfo>
-      <documentation>
-         This extension points allows you to extened the executables manager in CDT by providing your own source files provider for certain types of executables.
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <annotation>
-         <appinfo>
-            <meta.element />
-         </appinfo>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="provider"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appinfo>
-                  <meta.attribute translatable="true"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="provider">
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appinfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.cdt.debug.core.executables.ISourceFilesProvider"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="since"/>
-      </appinfo>
-      <documentation>
-         CDT 7.0
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="examples"/>
-      </appinfo>
-      <documentation>
-         &lt;extension
-         point=&quot;org.eclipse.cdt.debug.core.SourceFilesProvider&quot;&gt;
-      &lt;modifier class=&quot;com.xyz.MySourceFilesProvider&quot;/&gt;
-   &lt;/extension&gt;
-      </documentation>
-   </annotation>
-
-</schema>
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/schema/SourceRemappingProvider.exsd	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.cdt.debug.core" xmlns="http://www.w3.org/2001/XMLSchema">
-<annotation>
-      <appinfo>
-         <meta.schema plugin="org.eclipse.cdt.debug.core" id="SourceRemappingProvider" name="Source Remapping Provider"/>
-      </appinfo>
-      <documentation>
-         This extension points allows you to extened the executables manager in CDT by providing your own source remapping provider.
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <annotation>
-         <appinfo>
-            <meta.element />
-         </appinfo>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="provider"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appinfo>
-                  <meta.attribute translatable="true"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="provider">
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appinfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.cdt.debug.core.executables.ISourceFileRemapping"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="since"/>
-      </appinfo>
-      <documentation>
-         CDT 7.0
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="examples"/>
-      </appinfo>
-      <documentation>
-         &lt;extension
-         point=&quot;org.eclipse.cdt.debug.core.SourceRemappingProvider&quot;&gt;
-      &lt;modifier class=&quot;com.xyz.MySourceRemappingProvider&quot;/&gt;
-   &lt;/extension&gt;
-      </documentation>
-   </annotation>
-
-</schema>
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/schema/SupportedSourceContainerTypes.exsd	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.cdt.debug.core" xmlns="http://www.w3.org/2001/XMLSchema">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.cdt.debug.core" id="supportedSourceContainerTypes" name="C/C++ Supported Source Container Types Extension"/>
-      </appInfo>
-      <documentation>
-         The extension point provides a mechanism for contributing source container types to the preference page &quot;C/C++, Debug,Common Source Lookup Path&quot;.
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <annotation>
-         <appInfo>
-            <meta.element />
-         </appInfo>
-      </annotation>
-      <complexType>
-         <sequence minOccurs="1" maxOccurs="unbounded">
-            <element ref="sourceContainer" minOccurs="1" maxOccurs="unbounded"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="sourceContainer">
-      <complexType>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  Value of this attribute must be a contribution to the extension point &quot;org.eclipse.debug.core.sourceContainerTypes&quot;.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="identifier"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         In the above example, C debugger specifies that it supports absolutePath contaner type.
-&lt;pre&gt;
-   &lt;extension
-         point=&quot;org.eclipse.cdt.debug.core.supportedSourceContainerTypes&quot;&gt;
-      &lt;sourceContainer
-            id=&quot;org.eclipse.cdt.debug.core.containerType.absolutePath&quot;/&gt;
-   &lt;/extension&gt;
-&lt;/pre&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiinfo"/>
-      </appInfo>
-      <documentation>
-         Value of the attribute id must be a contribution to the extension point &quot;org.eclipse.debug.core.sourceContainerTypes&quot;.
-      </documentation>
-   </annotation>
-
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) 2009 Texas Instruments and others
-All rights reserved. This program and the accompanying materials
-are made available under the terms of the Eclipse Public License v1.0
-which accompanies this distribution, and is available at
-http://www.eclipse.org/legal/epl-v10.html
-      </documentation>
-   </annotation>
-
-</schema>
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICDTLaunchConfigurationConstants.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICDTLaunchConfigurationConstants.java	Wed Aug 05 17:35:39 2009 -0500
@@ -50,19 +50,6 @@
 	public static final String ATTR_PROJECT_NAME = CDT_LAUNCH_ID + ".PROJECT_ATTR"; //$NON-NLS-1$
 
 	/**
-	 * Launch configuration attribute value constants for build before launch.
-	 */
-	public static final int BUILD_BEFORE_LAUNCH_DISABLED = 0;
-	public static final int BUILD_BEFORE_LAUNCH_ENABLED = 1;
-	public static final int BUILD_BEFORE_LAUNCH_USE_WORKSPACE_SETTING = 2;
-
-	/**
-	 * Launch configuration attribute key. The value is the ID of the project's
-	 * build configuration that should be used when a build is required before launch.
-	 */
-	public static final String ATTR_BUILD_BEFORE_LAUNCH = CDT_LAUNCH_ID + ".ATTR_BUILD_BEFORE_LAUNCH_ATTR"; //$NON-NLS-1$
-
-	/**
 	 * Launch configuration attribute key. The value is the ID of the project's
 	 * build configuration that should be used when a build is required before launch.
 	 */
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/Executable.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/Executable.java	Wed Aug 05 17:35:39 2009 -0500
@@ -135,7 +135,7 @@
 	 * @noreference This method is not intended to be referenced by clients.
 	 * @since 6.0
 	 */
-	public synchronized TranslationUnit[] getSourceFiles(IProgressMonitor monitor) {
+	public TranslationUnit[] getSourceFiles(IProgressMonitor monitor) {
 		
 		if (!refreshSourceFiles)
 			return sourceFiles.toArray(new TranslationUnit[sourceFiles.size()]) ;
@@ -241,7 +241,7 @@
 		this.refreshSourceFiles = refreshSourceFiles;
 	}
 
-	public synchronized String getOriginalLocation(ITranslationUnit tu) {
+	public String getOriginalLocation(ITranslationUnit tu) {
 		String orgLocation = remappedPaths.get(tu);
 		if (orgLocation == null)
 			orgLocation = tu.getLocation().toOSString();
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java	Wed Aug 05 17:35:39 2009 -0500
@@ -11,50 +11,29 @@
 
 package org.eclipse.cdt.debug.core.executables;
 
-import java.text.DateFormat;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
-import org.eclipse.cdt.core.model.CoreModel;
-import org.eclipse.cdt.core.settings.model.CProjectDescriptionEvent;
-import org.eclipse.cdt.core.settings.model.ICProjectDescription;
-import org.eclipse.cdt.core.settings.model.ICProjectDescriptionListener;
 import org.eclipse.cdt.debug.core.CDebugCorePlugin;
+import org.eclipse.cdt.debug.internal.core.executables.ExecutablesChangeEvent;
 import org.eclipse.cdt.debug.internal.core.executables.StandardExecutableImporter;
+import org.eclipse.cdt.debug.internal.core.executables.StandardExecutableProvider;
 import org.eclipse.cdt.debug.internal.core.executables.StandardSourceFileRemapping;
 import org.eclipse.cdt.debug.internal.core.executables.StandardSourceFilesProvider;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IProjectDescription;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.resources.IResourceDeltaVisitor;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IExtensionRegistry;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.PlatformObject;
 import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.core.runtime.SubProgressMonitor;
 import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.osgi.service.debug.DebugOptions;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
+import org.eclipse.debug.core.DebugPlugin;
 
 /**
  * The Executables Manager maintains a collection of executables built by all of
@@ -64,78 +43,28 @@
  * @author Ken Ryall
  * 
  */
-public class ExecutablesManager extends PlatformObject implements IResourceChangeListener, ICProjectDescriptionListener {
+public class ExecutablesManager extends PlatformObject {
 
-	private static final String EXECUTABLES_MANAGER_DEBUG_TRACING = CDebugCorePlugin.PLUGIN_ID + "EXECUTABLES_MANAGER_DEBUG_TRACING"; //$NON-NLS-1$
-		
-	private Map<IProject, IProjectExecutablesProvider> executablesProviderMap = new HashMap<IProject, IProjectExecutablesProvider>();
-	private Map<IProject, List<Executable>> executablesMap = new HashMap<IProject, List<Executable>>();
-	private List<IExecutablesChangeListener> changeListeners = Collections.synchronizedList(new ArrayList<IExecutablesChangeListener>());
-	private List<IProjectExecutablesProvider> executableProviders;
-	private List<ISourceFilesProvider> sourceFileProviders;
-	private List<ISourceFileRemapping> sourceFileRemappings;
-	private List<IExecutableImporter> executableImporters;
-	
-	private boolean DEBUG;
+	private final HashMap<String, Executable> executables = new HashMap<String, Executable>();
+	private final List<IExecutablesChangeListener> changeListeners = Collections.synchronizedList(new ArrayList<IExecutablesChangeListener>());
+	private final List<ISourceFileRemapping> sourceFileRemappings = Collections.synchronizedList(new ArrayList<ISourceFileRemapping>());
+	private final List<IExecutableProvider> executableProviders = Collections.synchronizedList(new ArrayList<IExecutableProvider>());
+	private final List<ISourceFilesProvider> sourceFileProviders = Collections.synchronizedList(new ArrayList<ISourceFilesProvider>());
+	private final List<IExecutableImporter> executableImporters = Collections.synchronizedList(new ArrayList<IExecutableImporter>());
+	private boolean refreshNeeded = true;
+	private boolean tempDisableRefresh = false;
 	
 	private final Job refreshJob = new Job("Get Executables") {
 
 		@Override
 		public IStatus run(IProgressMonitor monitor) {
-
-			trace("Get Executables job started at "
-					+ getStringFromTimestamp(System.currentTimeMillis()));
-
-			List<IProject> projects = getProjectsToCheck();
-
-			SubMonitor subMonitor = SubMonitor
-					.convert(monitor, projects.size());
-
-			for (IProject project : projects) {
-				if (subMonitor.isCanceled()) {
-					trace("Get Executables job cancelled at "
-							+ getStringFromTimestamp(System.currentTimeMillis()));
-					return Status.CANCEL_STATUS;
-				}
-
-				subMonitor.subTask("Checking project: " + project.getName());
-
-				// get the executables provider for this project
-				IProjectExecutablesProvider provider = getExecutablesProviderForProject(project);
-				if (provider != null) {
-					trace("Getting executables for project: "
-							+ project.getName() + " using "
-							+ provider.toString());
-
-					// store the list of executables for this project
-					synchronized (executablesMap) {
-						executablesMap.put(project, provider.getExecutables(
-								project, subMonitor.newChild(1,
-										SubMonitor.SUPPRESS_NONE)));
-					}
-				}
-			}
-
-			// notify the listeners
-			synchronized (changeListeners) {
-				for (IExecutablesChangeListener listener : changeListeners) {
-					listener.executablesListChanged();
-				}
-			}
-
-			trace("Get Executables job finished at "
-					+ getStringFromTimestamp(System.currentTimeMillis()));
-
+			refreshExecutables(monitor);
 			return Status.OK_STATUS;
 		}
 	};
 
 	private static ExecutablesManager executablesManager = null;
-	
-	/**
-	* Get the executables manager instance
-	* @return the executables manager
-	*/
+
 	public static ExecutablesManager getExecutablesManager() {
 		if (executablesManager == null)
 			executablesManager = new ExecutablesManager();
@@ -143,130 +72,126 @@
 	}
 
 	public ExecutablesManager() {
-		// check if debugging is enabled
-		BundleContext context = CDebugCorePlugin.getDefault().getBundle()
-				.getBundleContext();
-		if (context != null) {
-			ServiceReference reference = CDebugCorePlugin.getDefault()
-					.getBundle().getBundleContext().getServiceReference(
-							DebugOptions.class.getName());
-			if (reference != null) {
-				DebugOptions service = (DebugOptions) context
-						.getService(reference);
-				if (service != null) {
-					try {
-						DEBUG = service.getBooleanOption(
-								EXECUTABLES_MANAGER_DEBUG_TRACING, false);
-					} finally {
-						// we have what we want - release the service
-						context.ungetService(reference);
-					}
-				}
-			}
-		}
-
-		refreshJob.setPriority(Job.SHORT);
-
-		// load the extension points
-		loadExecutableProviderExtensions();
-		loadSoureFileProviderExtensions();
-		loadSoureRemappingExtensions();
-		loadExecutableImporterExtensions();
-
-		// add the standard providers
-		executableProviders.add(0, new StandardExecutableProvider());
-		sourceFileProviders.add(0, new StandardSourceFilesProvider());
-		sourceFileRemappings.add(0, new StandardSourceFileRemapping());
-		executableImporters.add(0, new StandardExecutableImporter());
-
-		// listen for events we're interested in
-		ResourcesPlugin.getWorkspace().addResourceChangeListener(
-				this,
-				IResourceChangeEvent.POST_CHANGE
-						| IResourceChangeEvent.POST_BUILD);
-		CoreModel.getDefault().getProjectDescriptionManager()
-				.addCProjectDescriptionListener(this,
-						CProjectDescriptionEvent.DATA_APPLIED);
-
-		// schedule a refresh so we get up to date
-		scheduleRefresh();
-
+		addSourceFileRemapping(new StandardSourceFileRemapping());
+		addExecutableImporter(new StandardExecutableImporter());
+		addExecutablesProvider(new StandardExecutableProvider());
+		addSourceFilesProvider(new StandardSourceFilesProvider());
 	}
 
-	/**
-	* Adds an executable listener
-	* @param listener the listener to add
-	*/
 	public void addExecutablesChangeListener(IExecutablesChangeListener listener) {
 		changeListeners.add(listener);
 	}
 
-	/**
-	* Removes an executable listener
-	* @param listener the listener to remove
-	*/
 	public void removeExecutablesChangeListener(IExecutablesChangeListener listener) {
 		changeListeners.remove(listener);
 	}
 
-	
+	public void addSourceFileRemapping(ISourceFileRemapping remapping) {
+		sourceFileRemappings.add(remapping);
+	}
+
+	public void removeSourceFileRemapping(ISourceFileRemapping remapping) {
+		sourceFileRemappings.remove(remapping);
+	}
+
+	public void addExecutableImporter(IExecutableImporter importer) {
+		executableImporters.add(importer);
+	}
+
+	public void removeExecutableImporter(IExecutableImporter importer) {
+		executableImporters.remove(importer);
+	}
+
+	public void addExecutablesProvider(IExecutableProvider provider) {
+		executableProviders.add(provider);
+	}
+
+	/**
+	 * @since 6.0
+	 */
+	public void addSourceFilesProvider(ISourceFilesProvider provider) {
+		sourceFileProviders.add(provider);
+	}
 
 	/**
-	* Gets the list of executables in the workspace.
-	* @return the list of executables which may be empty
-	*/
-	public Collection<Executable> getExecutables() {	
-		trace("getExecutables called at " + getStringFromTimestamp(System.currentTimeMillis()));
-		List<Executable> executables = new ArrayList<Executable>();
+	 * @since 6.0
+	 */
+	public void removeSourceFilesProvider(ISourceFilesProvider provider) {
+		sourceFileProviders.remove(provider);
+	}
+
+	public void removeExecutablesProvider(IExecutableProvider provider) {
+		executableProviders.remove(provider);
+	}
+
+	public IStatus refreshExecutables(IProgressMonitor monitor) {
+		if (tempDisableRefresh) {
+			return Status.OK_STATUS;
+		}
+
+		
+		synchronized (executables) {
+			HashMap<String, Executable> oldList = new HashMap<String, Executable>(executables);
+			executables.clear();
+
+			IExecutableProvider[] exeProviders = getExecutableProviders();
+
+			Arrays.sort(exeProviders, new Comparator<IExecutableProvider>() {
 
-		synchronized (executablesMap) {
-			for (List<Executable> exes : executablesMap.values()) {
-				for (Executable exe : exes) {
-					if (!executables.contains(exe)) {
-						executables.add(exe);
-					}
+				public int compare(IExecutableProvider arg0, IExecutableProvider arg1) {
+					int p0 = arg0.getPriority();
+					int p1 = arg1.getPriority();
+					if (p0 > p1)
+						return 1;
+					if (p0 < p1)
+						return -1;
+					return 0;
+				}});
 
+			refreshNeeded = false;
+			monitor.beginTask("Refresh Executables", exeProviders.length);
+			for (IExecutableProvider provider : exeProviders) {
+				Executable[] exes = provider.getExecutables(new SubProgressMonitor(monitor, 1));
+				for (Executable executable : exes) {
+					executables.put(executable.getPath().toOSString(), executable);
+				}
+			}
+			monitor.done();
+
+			synchronized (changeListeners) {
+				Collection<Executable> newExes = executables.values();
+				Executable[] exeArray = newExes.toArray(new Executable[newExes.size()]);
+				Collection<Executable> oldExes = oldList.values();
+				Executable[] oldArray = oldExes.toArray(new Executable[oldExes.size()]);				
+				for (IExecutablesChangeListener listener : changeListeners) {
+					listener.executablesChanged(new ExecutablesChangeEvent(oldArray, exeArray));
 				}
 			}
 		}
 
-		trace("getExecutables returned at " + getStringFromTimestamp(System.currentTimeMillis()));
+		return monitor.isCanceled() ? Status.CANCEL_STATUS : Status.OK_STATUS;
+	}
+
+	public Executable[] getExecutables() {
+		if (refreshNeeded) {
+			try {
+				refreshJob.schedule();
+				refreshJob.join();
+			} catch (InterruptedException e) {
+				DebugPlugin.log( e );
+			}
+		}
 		
-		return executables;
-
+		synchronized (executables)
+		{
+			Collection<Executable> exes = executables.values();
+			return exes.toArray(new Executable[exes.size()]);
+		}
 	}
 
 	/**
-	* Gets the collection of executables for the given project
-	* @param project the project
-	* @return collection of executables which may be empty
-	*/
-	public Collection<Executable> getExecutablesForProject(IProject project) {
-		List<Executable> executables = new ArrayList<Executable>();
-
-		synchronized (executablesMap) {
-			List<Executable> exes = executablesMap.get(project);
-			if (exes != null) {
-				for (Executable exe : exes) {
-					if (!executables.contains(exe)) {
-						executables.add(exe);
-					}
-				}
-			}
-		}
-		return executables;
-	}
-			
-
-	/**
-	* Attempt to remap the path to the given source file in the given executable using
-	* source file mapping extensions
-	* @param executable the executable
-	* @param filePath the absolute path to the source file
-	* @return the new path to the source file, which was remapped if possible
-	*
-	* @since 6.0
-	*/
+	 * @since 6.0
+	 */
 	public String remapSourceFile(Executable executable, String filePath) {
 		synchronized (sourceFileRemappings) {
 			for (ISourceFileRemapping remapping : sourceFileRemappings) {
@@ -278,64 +203,45 @@
 		return filePath;
 	}
 
-	/**
-	* Import the given executables into the manager
-	* @param fileNames the absolute paths of the executables to import
-	* @param monitor progress monitor
-	*/
-	public void importExecutables(final String[] fileNames,
-			IProgressMonitor monitor) {
+	public void importExecutables(final String[] fileNames, IProgressMonitor monitor) {
 		boolean handled = false;
-		monitor.beginTask("Import Executables", executableImporters.size());
-		synchronized (executableImporters) {
-			Collections.sort(executableImporters,
-					new Comparator<IExecutableImporter>() {
-
-						public int compare(IExecutableImporter arg0,
-								IExecutableImporter arg1) {
-							int p0 = arg0.getPriority(fileNames);
-							int p1 = arg1.getPriority(fileNames);
-							if (p0 < p1)
-								return 1;
-							if (p0 > p1)
-								return -1;
-							return 0;
-						}
-					});
+		try {
+			
+			tempDisableRefresh = true;
+			monitor.beginTask("Import Executables", executableImporters.size());
+			synchronized (executableImporters) {
+				Collections.sort(executableImporters, new Comparator<IExecutableImporter>() {
 
-			for (IExecutableImporter importer : executableImporters) {
-				if (handled || monitor.isCanceled()) {
-					break;
-				}
-			}
-		}
+					public int compare(IExecutableImporter arg0, IExecutableImporter arg1) {
+						int p0 = arg0.getPriority(fileNames);
+						int p1 = arg1.getPriority(fileNames);
+						if (p0 < p1)
+							return 1;
+						if (p0 > p1)
+							return -1;
+						return 0;
+					}});
 
-		scheduleRefresh();
-	}
-							
-	/**
-	 * Determines if the given executable is currently known by the manager
-	 * 
-	 * @param exePath
-	 *            the absolute path to the executable
-	 * @return true if the manager knows about it, false otherwise
-	 */
-	public boolean executableExists(IPath exePath) {
-		synchronized (executablesMap) {
-			for (List<Executable> exes : executablesMap.values()) {
-				for (Executable exe : exes) {
-					if (exe.getPath().equals(exePath)) {
-						return true;
-
+				for (IExecutableImporter importer : executableImporters) {
+					handled = importer.importExecutables(fileNames, new SubProgressMonitor(monitor, 1));
+					if (handled || monitor.isCanceled()) {
+						break;
 					}
 				}
 			}
 
+		} finally {
+			tempDisableRefresh = false;
 		}
-
-		return false;
+		
+		if (handled)
+			refreshExecutables(monitor);
+		monitor.done();
 	}
 
+	public ISourceFileRemapping[] getSourceFileRemappings() {
+		return sourceFileRemappings.toArray(new ISourceFileRemapping[sourceFileRemappings.size()]);
+	}
 
 	public IExecutableProvider[] getExecutableProviders() {
 		return executableProviders.toArray(new IExecutableProvider[executableProviders.size()]);
@@ -348,17 +254,31 @@
 		return sourceFileProviders.toArray(new ISourceFilesProvider[sourceFileProviders.size()]);
 	}
 
+	public IExecutableImporter[] getExecutableImporters() {
+		return executableImporters.toArray(new IExecutableImporter[executableImporters.size()]);
+	}
+
+	public void scheduleRefresh(IExecutableProvider provider, long delay) {
+		refreshNeeded = true;
+		refreshJob.schedule(delay);
+	}
+
+	public boolean refreshNeeded() {
+		return refreshNeeded;
+	}
+	
+	public boolean executableExists(IPath exePath) {
+		synchronized (executables) {
+			return executables.containsKey(exePath.toOSString());			
+		}
+	}
+
 	/**
-	* Get the list of source files for the given executable
-	* @param executable the executable
-	* @param monitor progress monitor
-	* @return an array of source files which may be empty
-	*/
-	public String[] getSourceFiles(final Executable executable, IProgressMonitor monitor) {
-			String[] result = new String[0];
-			trace("getSourceFiles called at " + getStringFromTimestamp(System.currentTimeMillis()) + " for " + executable.getPath().toOSString());
-
-
+	 * @since 6.0
+	 */
+	public String[] getSourceFiles(final Executable executable,
+			IProgressMonitor monitor) {
+		String[] result = new String[0];
 		synchronized (sourceFileProviders) {
 			Collections.sort(sourceFileProviders, new Comparator<ISourceFilesProvider>() {
 
@@ -375,467 +295,67 @@
 			monitor.beginTask("Finding source files in " + executable.getName(), sourceFileProviders.size());
 			for (ISourceFilesProvider provider : sourceFileProviders) {
 				String[] sourceFiles = provider.getSourceFiles(executable, new SubProgressMonitor(monitor, 1));
-				if (sourceFiles.length > 0) {
+				if (sourceFiles.length > 0)
+				{
 					result = sourceFiles;
-					trace("getSourceFiles got " + sourceFiles.length + " files from " + provider.toString());
 					break;
 				}
 			}
-			
-			trace("getSourceFiles returned at " + getStringFromTimestamp(System.currentTimeMillis()));
-
 			monitor.done();
 		}
 		return result;
 	}
 
 	/**
-	* Removes the given executables
-	* @param executables the array of executables to be removed
-	* @param monitor progress monitor
-	* @return IStatus of the operation
-	* 
-	* @since 6.0
-	*/
-	public IStatus removeExecutables(Executable[] executables,
-			IProgressMonitor monitor) {
-		MultiStatus status = new MultiStatus(CDebugCorePlugin.PLUGIN_ID,
-				IStatus.WARNING,
-				"Couldn't remove all of the selected executables", null);
+	 * @since 6.0
+	 */
+	public IStatus removeExecutables(Executable[] executables, IProgressMonitor monitor) {
+		IExecutableProvider[] exeProviders = getExecutableProviders();
+
+		IStatus result = Status.OK_STATUS;
+		
+		Arrays.sort(exeProviders, new Comparator<IExecutableProvider>() {
 
-		monitor.beginTask("Remove Executables", executables.length);
+			public int compare(IExecutableProvider arg0, IExecutableProvider arg1) {
+				int p0 = arg0.getPriority();
+				int p1 = arg1.getPriority();
+				if (p0 > p1)
+					return 1;
+				if (p0 < p1)
+					return -1;
+				return 0;
+			}
+		});
 
+		MultiStatus combinedStatus = new MultiStatus(CDebugCorePlugin.PLUGIN_ID, IStatus.WARNING, "Couldn't remove all of the selected executables", null);
+		refreshNeeded = false;
+		monitor.beginTask("Remove Executables", exeProviders.length);
 		for (Executable executable : executables) {
-			IProjectExecutablesProvider provider = getExecutablesProviderForProject(executable
-					.getProject());
-			if (provider != null) {
-				IStatus result = provider.removeExecutable(executable,
-						new SubProgressMonitor(monitor, 1));
-				if (result.isOK()) {
-					// remove the exe from the list
-					List<Executable> exes = executablesMap.get(executable
-							.getProject());
-					if (exes != null) {
-						exes.remove(executable);
-					}
-				} else {
-					status.add(result);
-				}
+			boolean handled = false;
+			IStatus rmvStatus = Status.OK_STATUS;;
+			for (IExecutableProvider provider : exeProviders) {
+				if (!handled)
+				{
+					rmvStatus = provider.removeExecutable(executable, new SubProgressMonitor(monitor, 1));
+					handled = rmvStatus.getSeverity() == IStatus.OK;
+				}				
+			}
+			if (!handled)
+			{
+				combinedStatus.add(rmvStatus);
+				result = combinedStatus;
 			}
 		}
-
-		// notify listeners that the list has changed. only do this if at least
-		// one delete succeeded.
-		if (status.getChildren().length != executables.length) {
-			synchronized (changeListeners) {
-				for (IExecutablesChangeListener listener : changeListeners) {
-					listener.executablesListChanged();
-				}
-			}
-		}
-
-		return status;
+		monitor.done();
+		
+		return result;
 	}
 
 	/**
-	* Refresh the list of executables for the given projects
-	* @param projects the list of projects, or null.  if null or the list
-	* is empty, all projects will be refreshed.
-	*/
-	public void refresh(List<IProject> projects) {
-		if (projects == null || projects.size() == 0) {
-			// clear the entire cache
-			executablesMap.clear();
-		} else {
-			for (IProject project : projects) {
-				executablesMap.remove(project);
-			}
-		}
-
-		scheduleRefresh();
-
-	}
-
-	public void resourceChanged(IResourceChangeEvent event) {
-
-		synchronized (executablesMap) {
-			// project needs to be refreshed after a build/clean as the binary
-			// may
-			// be added/removed/renamed etc.
-			if (event.getType() == IResourceChangeEvent.POST_BUILD) {
-				Object obj = event.getSource();
-				if (obj != null && obj instanceof IProject) {
-					if (executablesMap.containsKey(obj)) {
-						List<Executable> executables = executablesMap
-								.remove(obj);
-
-						trace("Scheduling refresh because project "
-								+ ((IProject) obj).getName()
-								+ " built or cleaned");
-
-						scheduleRefresh();
-
-						// notify the listeners that these executables have
-						// possibly changed
-						if (executables != null && executables.size() > 0) {
-							synchronized (changeListeners) {
-								for (IExecutablesChangeListener listener : changeListeners) {
-									listener.executablesChanged(executables);
-								}
-							}
-						}
-					}
-				}
-				return;
-			}
-
-			// refresh when projects are opened or closed. note that deleted
-			// projects are handled later in this method. new projects are
-			// handled
-			// in handleEvent. resource changed events always start at the
-			// workspace
-			// root, so projects are the next level down
-			boolean refreshNeeded = false;
-			IResourceDelta[] projects = event.getDelta().getAffectedChildren();
-			for (IResourceDelta projectDelta : projects) {
-				if ((projectDelta.getFlags() & IResourceDelta.OPEN) != 0) {
-					if (projectDelta.getKind() == IResourceDelta.CHANGED) {
-						// project was opened or closed
-						if (executablesMap.containsKey(projectDelta
-								.getResource())) {
-							executablesMap.remove(projectDelta.getResource());
-						}
-						refreshNeeded = true;
-					}
-				}
-			}
-
-			if (refreshNeeded) {
-				trace("Scheduling refresh because project(s) opened or closed");
-
-				scheduleRefresh();
-				return;
-			}
-
-			try {
-				event.getDelta().accept(new IResourceDeltaVisitor() {
-
-					public boolean visit(IResourceDelta delta)
-							throws CoreException {
-						if (delta.getKind() == IResourceDelta.ADDED
-								|| delta.getKind() == IResourceDelta.REMOVED) {
-							IResource deltaResource = delta.getResource();
-							if (deltaResource != null) {
-								boolean refresh = false;
-								if (delta.getKind() == IResourceDelta.REMOVED
-										&& deltaResource instanceof IProject) {
-									// project deleted
-									if (executablesMap
-											.containsKey(deltaResource)) {
-										executablesMap.remove(deltaResource);
-										refresh = true;
-
-										trace("Scheduling refresh because project "
-												+ deltaResource.getName()
-												+ " deleted");
-									}
-								} else {
-									// see if a binary has been added/removed
-									IPath resourcePath = deltaResource
-											.getLocation();
-									if (resourcePath != null
-											&& Executable
-													.isExecutableFile(resourcePath)) {
-										if (executablesMap
-												.containsKey(deltaResource
-														.getProject())) {
-											executablesMap.remove(deltaResource
-													.getProject());
-											refresh = true;
-
-											trace("Scheduling refresh because a binary was added/removed");
-										}
-									}
-								}
-
-								if (refresh) {
-									scheduleRefresh();
-									return false;
-								}
-							}
-						}
-						return true;
-					}
-				});
-			} catch (CoreException e) {
-			}
-		}
-	}
-
-	public void handleEvent(CProjectDescriptionEvent event) {
-		// this handles the cases where the active build configuration changes,
-		// and when new projects are created or loaded at startup.
-		boolean refresh = false;
-
-		int eventType = event.getEventType();
-
-		if (eventType == CProjectDescriptionEvent.DATA_APPLIED) {
-
-			synchronized (executablesMap) {
-				// see if the active build config has changed
-				ICProjectDescription newDesc = event
-						.getNewCProjectDescription();
-				ICProjectDescription oldDesc = event
-						.getOldCProjectDescription();
-				if (oldDesc != null && newDesc != null) {
-					String newConfigName = newDesc.getActiveConfiguration()
-							.getName();
-					String oldConfigName = oldDesc.getActiveConfiguration()
-							.getName();
-					if (!newConfigName.equals(oldConfigName)) {
-						if (executablesMap.containsKey(newDesc.getProject())) {
-							executablesMap.remove(newDesc.getProject());
-							refresh = true;
-
-							trace("Scheduling refresh because active build configuration changed");
-						}
-					}
-				} else if (newDesc != null && oldDesc == null) {
-					// project just created
-					refresh = true;
-
-					trace("Scheduling refresh because project "
-							+ newDesc.getProject().getName() + " created");
-				}
-			}
-		}
-
-		if (refresh) {
-			scheduleRefresh();
-		}
-	}
-
-	private List<IProject> getProjectsToCheck() {
-
-		List<IProject> projects = new ArrayList<IProject>();
-
-		synchronized (executablesMap) {
-			// look for any CDT projects not in our cache
-			for (IProject project : ResourcesPlugin.getWorkspace().getRoot()
-					.getProjects()) {
-				if (!executablesMap.containsKey(project)) {
-					if (CoreModel.hasCNature(project)) {
-						projects.add(project);
-					}
-				}
-			}
-		}
-
-		return projects;
+	 * @since 6.0
+	 */
+	public void setRefreshNeeded(boolean refresh) {
+		refreshNeeded = true;
 	}
 
-	private void scheduleRefresh() {
-		trace("scheduleRefresh called at "
-				+ getStringFromTimestamp(System.currentTimeMillis()));
-
-		refreshJob.cancel();
-		refreshJob.schedule();
-	}
-
-	private IProjectExecutablesProvider getExecutablesProviderForProject(
-			IProject project) {
-		IProjectExecutablesProvider provider = executablesProviderMap
-				.get(project);
-		if (provider == null) {
-			// not cached yet. get the list of project natures from the
-			// providers and
-			// pick the one with the closest match
-			try {
-				IProjectDescription description = project.getDescription();
-				int mostNaturesMatched = 0;
-				for (IProjectExecutablesProvider exeProvider : executableProviders) {
-					List<String> natures = exeProvider.getProjectNatures();
-
-					int naturesMatched = 0;
-					for (String nature : description.getNatureIds()) {
-						if (natures.contains(nature)) {
-							naturesMatched++;
-						}
-					}
-
-					if (naturesMatched > mostNaturesMatched) {
-						provider = exeProvider;
-						mostNaturesMatched = naturesMatched;
-					}
-				}
-
-				// cache it
-				executablesProviderMap.put(project, provider);
-
-			} catch (CoreException e) {
-				e.printStackTrace();
-			}
-		}
-
-		return provider;
-	}
-
-	private void loadExecutableProviderExtensions() {
-		executableProviders = Collections
-				.synchronizedList(new ArrayList<IProjectExecutablesProvider>());
-
-		IExtensionRegistry extensionRegistry = Platform.getExtensionRegistry();
-		IExtensionPoint extensionPoint = extensionRegistry
-				.getExtensionPoint(CDebugCorePlugin.PLUGIN_ID
-						+ ".ExecutablesProvider"); //$NON-NLS-1$
-		IExtension[] extensions = extensionPoint.getExtensions();
-
-		for (int i = 0; i < extensions.length; i++) {
-			IExtension extension = extensions[i];
-			IConfigurationElement[] elements = extension
-					.getConfigurationElements();
-			IConfigurationElement element = elements[0];
-
-			boolean failed = false;
-			try {
-				Object extObject = element.createExecutableExtension("class"); //$NON-NLS-1$
-				if (extObject instanceof IProjectExecutablesProvider) {
-					executableProviders
-							.add((IProjectExecutablesProvider) extObject);
-				} else {
-					failed = true;
-				}
-			} catch (CoreException e) {
-				failed = true;
-			}
-
-			if (failed) {
-				CDebugCorePlugin
-						.log("Unable to load ExecutablesProvider extension from "
-								+ extension.getContributor().getName());
-			}
-		}
-	}
-
-	private void loadSoureFileProviderExtensions() {
-		sourceFileProviders = Collections
-				.synchronizedList(new ArrayList<ISourceFilesProvider>());
-
-		IExtensionRegistry extensionRegistry = Platform.getExtensionRegistry();
-		IExtensionPoint extensionPoint = extensionRegistry
-				.getExtensionPoint(CDebugCorePlugin.PLUGIN_ID
-						+ ".SourceFilesProvider"); //$NON-NLS-1$
-		IExtension[] extensions = extensionPoint.getExtensions();
-
-		for (int i = 0; i < extensions.length; i++) {
-			IExtension extension = extensions[i];
-			IConfigurationElement[] elements = extension
-					.getConfigurationElements();
-			IConfigurationElement element = elements[0];
-
-			boolean failed = false;
-			try {
-				Object extObject = element.createExecutableExtension("class"); //$NON-NLS-1$
-				if (extObject instanceof ISourceFilesProvider) {
-					sourceFileProviders.add((ISourceFilesProvider) extObject);
-				} else {
-					failed = true;
-				}
-			} catch (CoreException e) {
-				failed = true;
-			}
-
-			if (failed) {
-				CDebugCorePlugin
-						.log("Unable to load SourceFilesProvider extension from "
-								+ extension.getContributor().getName());
-			}
-		}
-	}
-
-	private void loadSoureRemappingExtensions() {
-		sourceFileRemappings = Collections
-				.synchronizedList(new ArrayList<ISourceFileRemapping>());
-
-		IExtensionRegistry extensionRegistry = Platform.getExtensionRegistry();
-		IExtensionPoint extensionPoint = extensionRegistry
-				.getExtensionPoint(CDebugCorePlugin.PLUGIN_ID
-						+ ".SourceRemappingProvider"); //$NON-NLS-1$
-		IExtension[] extensions = extensionPoint.getExtensions();
-
-		for (int i = 0; i < extensions.length; i++) {
-			IExtension extension = extensions[i];
-			IConfigurationElement[] elements = extension
-					.getConfigurationElements();
-			IConfigurationElement element = elements[0];
-
-			boolean failed = false;
-			try {
-				Object extObject = element.createExecutableExtension("class"); //$NON-NLS-1$
-				if (extObject instanceof ISourceFileRemapping) {
-					sourceFileRemappings.add((ISourceFileRemapping) extObject);
-				} else {
-					failed = true;
-				}
-			} catch (CoreException e) {
-				failed = true;
-			}
-
-			if (failed) {
-				CDebugCorePlugin
-						.log("Unable to load SourceRemappingProvider extension from "
-								+ extension.getContributor().getName());
-			}
-		}
-	}
-
-	private void loadExecutableImporterExtensions() {
-		executableImporters = Collections
-				.synchronizedList(new ArrayList<IExecutableImporter>());
-
-		IExtensionRegistry extensionRegistry = Platform.getExtensionRegistry();
-		IExtensionPoint extensionPoint = extensionRegistry
-				.getExtensionPoint(CDebugCorePlugin.PLUGIN_ID
-						+ ".ExecutablesImporter"); //$NON-NLS-1$
-		IExtension[] extensions = extensionPoint.getExtensions();
-
-		for (int i = 0; i < extensions.length; i++) {
-			IExtension extension = extensions[i];
-			IConfigurationElement[] elements = extension
-					.getConfigurationElements();
-			IConfigurationElement element = elements[0];
-
-			boolean failed = false;
-			try {
-				Object extObject = element.createExecutableExtension("class"); //$NON-NLS-1$
-				if (extObject instanceof IExecutableImporter) {
-					executableImporters.add((IExecutableImporter) extObject);
-				} else {
-					failed = true;
-				}
-			} catch (CoreException e) {
-				failed = true;
-			}
-
-			if (failed) {
-				CDebugCorePlugin
-						.log("Unable to load ExecutablesImporter extension from "
-								+ extension.getContributor().getName());
-			}
-		}
-	}
-
-	private void trace(String msg) {
-		if (DEBUG) {
-			// TODO use Logger?
-			System.out.println(msg);
-		}
-	}
-
-	private String getStringFromTimestamp(long timestamp) {
-		return DateFormat.getTimeInstance(DateFormat.MEDIUM).format(
-				new Date(timestamp));
-	}
-}
-
-	
\ No newline at end of file
+}
\ No newline at end of file
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/IExecutableImporter.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/IExecutableImporter.java	Wed Aug 05 17:35:39 2009 -0500
@@ -42,6 +42,6 @@
 	/**
 	 * @since 6.0
 	 */
-	public boolean importExecutables(String[] fileNames, IProgressMonitor monitor);
+	public abstract boolean importExecutables(String[] fileNames, IProgressMonitor monitor);
 
-}
+}
\ No newline at end of file
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/IExecutablesChangeListener.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/IExecutablesChangeListener.java	Wed Aug 05 17:35:39 2009 -0500
@@ -12,21 +12,9 @@
 package org.eclipse.cdt.debug.core.executables;
 
 import java.util.EventListener;
-import java.util.List;
 
 public interface IExecutablesChangeListener extends EventListener {
 
-	/**
-	 * Called whenever the list of executables in the workspace changes, e.g. a 
-	 * project was opened/closed/created/deleted
-	 */
-	public void executablesListChanged();
+	public void executablesChanged(IExecutablesChangeEvent event);
 
-	/**
-	 * Called whenever some executables have changed, e.g. when a project is rebuilt or
-	 * cleaned.  The content may have changed for example, so the list of source files
-	 * may be different.
-	 * @param executables
-	 */
-	public void executablesChanged(List<Executable> executables);
-}
+}
\ No newline at end of file
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/IProjectExecutablesProvider.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Nokia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Nokia - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.debug.core.executables;
-
-import java.util.List;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-
-/**
- * IProjectExecutablesProvider supplies a list of executables for a project
- * to the Executables Manager.
- * 
- * @author Warren Paul
- * 
- */
-public interface IProjectExecutablesProvider {
-
-	/**
-	 * Get the list of project natures that should be present in projects that
-	 * this provider will get the list of executables for.  Since there could
-	 * be any number of executable providers, the one that matches the given
-	 * project natures the closest will be chosen.
-	 * @return the list of project nature id's
-	 */
-	List<String> getProjectNatures();	
-	
-	/**
-	 * Get the list of executables for the given project
-	 * @param project the project to get the executables for
-	 * @param monitor progress monitor
-	 * @return the list of executables (which may be empty)
-	 */
-	List<Executable> getExecutables(IProject project, IProgressMonitor monitor);
-
-	/**
-	 * Remove the given executable.  Note that the project can be obtained from Executable.
-	 * @param executable the executable to remove
-	 * @param monitor progress monitor
-	 * @return the status of the remove operation
-	 */
-	IStatus removeExecutable(Executable executable, IProgressMonitor monitor);
-
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/StandardExecutableProvider.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Nokia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Nokia - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.debug.core.executables;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.cdt.core.CCProjectNature;
-import org.eclipse.cdt.core.CProjectNature;
-import org.eclipse.cdt.core.model.CModelException;
-import org.eclipse.cdt.core.model.IBinary;
-import org.eclipse.cdt.core.model.ICProject;
-import org.eclipse.cdt.debug.core.CDebugCorePlugin;
-import org.eclipse.cdt.internal.core.model.CModelManager;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubMonitor;
-import org.eclipse.debug.core.DebugPlugin;
-
-public class StandardExecutableProvider implements IProjectExecutablesProvider {
-
-	List<String> supportedNatureIds = new ArrayList<String>();
-	
-	public StandardExecutableProvider() {
-		supportedNatureIds.add(CProjectNature.C_NATURE_ID);
-		supportedNatureIds.add(CCProjectNature.CC_NATURE_ID);
-	}
-	
-	public List<String> getProjectNatures() {
-		return supportedNatureIds;
-	}
-
-	public List<Executable> getExecutables(IProject project, IProgressMonitor monitor) {
-		List<Executable> executables = new ArrayList<Executable>();
-		
-		ICProject cproject = CModelManager.getDefault().create(project);
-		try {
-			IBinary[] binaries = cproject.getBinaryContainer().getBinaries();
-
-			SubMonitor progress = SubMonitor.convert(monitor, binaries.length);
-
-			for (IBinary binary : binaries) {
-				if (progress.isCanceled()) {
-					break;
-				}
-
-				if (binary.isExecutable() || binary.isSharedLib()) {
-					IPath exePath = binary.getResource().getLocation();
-					if (exePath == null)
-						exePath = binary.getPath();
-					executables.add(new Executable(exePath, project, binary.getResource()));
-				}
-				
-				progress.worked(1);
-			}
-		} catch (CModelException e) {
-		}
-		
-		return executables;
-	}
-
-	public IStatus removeExecutable(Executable executable, IProgressMonitor monitor) {
-		IResource exeResource = executable.getResource();
-		if (exeResource != null) {
-			try {
-				exeResource.delete(true, monitor);
-			} catch (CoreException e) {
-				DebugPlugin.log( e );
-			}
-			return Status.OK_STATUS;
-		}
-		return new Status(IStatus.WARNING, CDebugCorePlugin.PLUGIN_ID, "Can't remove " + executable.getName() + ": it is built by project \"" + executable.getProject().getName() + "\"");
-	}
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IMoveToAddress.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IMoveToAddress.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,35 +1,35 @@
-/*******************************************************************************
- * Copyright (c) 2008 Freescale Semiconductor and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Freescale Semiconductor - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.debug.core.model;
-
-import org.eclipse.cdt.core.IAddress;
-import org.eclipse.debug.core.DebugException;
-
-/**
- * Provides the ability to move the instruction pointer of a debug target to the given address.
- * @since 6.0
- */
-public interface IMoveToAddress {
-
-	/**
-	 * Returns whether this operation is currently available for this element.
-	 *
-	 * @return whether this operation is currently available
-	 */
-	public boolean canMoveToAddress( IAddress address );
-
-	/**
-	 * Causes this element can move the instruction pointer to the specified address.
-	 *
-	 * @exception DebugException on failure. Reasons include:
-	 */
-	public void moveToAddress( IAddress address ) throws DebugException;
-}
+/*******************************************************************************
+ * Copyright (c) 2008 Freescale Semiconductor and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Freescale Semiconductor - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.core.model;
+
+import org.eclipse.cdt.core.IAddress;
+import org.eclipse.debug.core.DebugException;
+
+/**
+ * Provides the ability to move the instruction pointer of a debug target to the given address.
+ * @since 6.0
+ */
+public interface IMoveToAddress {
+
+	/**
+	 * Returns whether this operation is currently available for this element.
+	 *
+	 * @return whether this operation is currently available
+	 */
+	public boolean canMoveToAddress( IAddress address );
+
+	/**
+	 * Causes this element can move the instruction pointer to the specified address.
+	 *
+	 * @exception DebugException on failure. Reasons include:
+	 */
+	public void moveToAddress( IAddress address ) throws DebugException;
+}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IMoveToLine.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IMoveToLine.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,34 +1,34 @@
-/*******************************************************************************
- * Copyright (c) 2008 Freescale Semiconductor and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Freescale Semiconductor - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.debug.core.model;
-
-import org.eclipse.debug.core.DebugException;
-
-/**
- * Provides the ability to move the instruction pointer of a debug target to the given line.
- * @since 6.0
- */
-public interface IMoveToLine {
-
-	/**
-	 * Returns whether this operation is currently available for this file and line number.
-	 * 
-	 * @return whether this operation is currently available
-	 */
-	public boolean canMoveToLine( String fileName, int lineNumber );
-
-	/**
-	 * Causes this element to move the instruction pointer to the specified line.
-	 * 
-	 * @exception DebugException on failure. Reasons include:
-	 */
-	public void moveToLine( String fileName, int lineNumber ) throws DebugException;
-}
+/*******************************************************************************
+ * Copyright (c) 2008 Freescale Semiconductor and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Freescale Semiconductor - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.core.model;
+
+import org.eclipse.debug.core.DebugException;
+
+/**
+ * Provides the ability to move the instruction pointer of a debug target to the given line.
+ * @since 6.0
+ */
+public interface IMoveToLine {
+
+	/**
+	 * Returns whether this operation is currently available for this file and line number.
+	 * 
+	 * @return whether this operation is currently available
+	 */
+	public boolean canMoveToLine( String fileName, int lineNumber );
+
+	/**
+	 * Causes this element to move the instruction pointer to the specified line.
+	 * 
+	 * @exception DebugException on failure. Reasons include:
+	 */
+	public void moveToLine( String fileName, int lineNumber ) throws DebugException;
+}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IResumeAtAddress.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IResumeAtAddress.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,35 +1,35 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 QNX Software Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.debug.core.model;
-
-import org.eclipse.cdt.core.IAddress;
-import org.eclipse.debug.core.DebugException;
-
-/**
- * Provides the ability to resume a debug target at the given address.
- * @since 6.0
- */
-public interface IResumeAtAddress {
-
-	/**
-	 * Returns whether this operation is currently available for this element.
-	 * 
-	 * @return whether this operation is currently available
-	 */
-	public boolean canResumeAtAddress( IAddress address );
-
-	/**
-	 * Causes this element to resume the execution at the specified address.
-	 * 
-	 * @exception DebugException on failure. Reasons include:
-	 */
-	public void resumeAtAddress( IAddress address ) throws DebugException;
-}
+/*******************************************************************************
+ * Copyright (c) 2004, 2008 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.core.model;
+
+import org.eclipse.cdt.core.IAddress;
+import org.eclipse.debug.core.DebugException;
+
+/**
+ * Provides the ability to resume a debug target at the given address.
+ * @since 6.0
+ */
+public interface IResumeAtAddress {
+
+	/**
+	 * Returns whether this operation is currently available for this element.
+	 * 
+	 * @return whether this operation is currently available
+	 */
+	public boolean canResumeAtAddress( IAddress address );
+
+	/**
+	 * Causes this element to resume the execution at the specified address.
+	 * 
+	 * @exception DebugException on failure. Reasons include:
+	 */
+	public void resumeAtAddress( IAddress address ) throws DebugException;
+}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IResumeAtLine.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IResumeAtLine.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,50 +1,50 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 QNX Software Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.debug.core.model;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.debug.core.DebugException;
-
-/**
- * Provides the ability to resume a debug target at the given line.
- * @since 6.0
- */
-public interface IResumeAtLine {
-
-	/**
-	 * Returns whether this operation is currently available for this file and line number.
-	 * 
-	 * @return whether this operation is currently available
-	 */
-	public boolean canResumeAtLine( IFile file, int lineNumber );
-
-	/**
-	 * Causes this element to resume the execution at the specified line.
-	 * 
-	 * @exception DebugException
-	 *                on failure. Reasons include:
-	 */
-	public void resumeAtLine( IFile file, int lineNumber ) throws DebugException;
-
-	/**
-	 * Returns whether this operation is currently available for this file and line number.
-	 * 
-	 * @return whether this operation is currently available
-	 */
-	public boolean canResumeAtLine( String fileName, int lineNumber );
-
-	/**
-	 * Causes this element to resume the execution at the specified line.
-	 * 
-	 * @exception DebugException on failure. Reasons include:
-	 */
-	public void resumeAtLine( String fileName, int lineNumber ) throws DebugException;
-}
+/*******************************************************************************
+ * Copyright (c) 2004, 2006 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.core.model;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.debug.core.DebugException;
+
+/**
+ * Provides the ability to resume a debug target at the given line.
+ * @since 6.0
+ */
+public interface IResumeAtLine {
+
+	/**
+	 * Returns whether this operation is currently available for this file and line number.
+	 * 
+	 * @return whether this operation is currently available
+	 */
+	public boolean canResumeAtLine( IFile file, int lineNumber );
+
+	/**
+	 * Causes this element to resume the execution at the specified line.
+	 * 
+	 * @exception DebugException
+	 *                on failure. Reasons include:
+	 */
+	public void resumeAtLine( IFile file, int lineNumber ) throws DebugException;
+
+	/**
+	 * Returns whether this operation is currently available for this file and line number.
+	 * 
+	 * @return whether this operation is currently available
+	 */
+	public boolean canResumeAtLine( String fileName, int lineNumber );
+
+	/**
+	 * Causes this element to resume the execution at the specified line.
+	 * 
+	 * @exception DebugException on failure. Reasons include:
+	 */
+	public void resumeAtLine( String fileName, int lineNumber ) throws DebugException;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/executables/ExecutablesChangeEvent.java	Wed Aug 05 17:35:39 2009 -0500
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Nokia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Nokia - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.internal.core.executables;
+
+import org.eclipse.cdt.debug.core.executables.Executable;
+import org.eclipse.cdt.debug.core.executables.IExecutablesChangeEvent;
+import org.eclipse.core.runtime.PlatformObject;
+
+public class ExecutablesChangeEvent extends PlatformObject implements IExecutablesChangeEvent {
+
+	private Executable[] oldExecutables;
+	private Executable[] newExecutables;
+
+	public ExecutablesChangeEvent(Executable[] oldList, Executable[] newList) {
+		oldExecutables = oldList;
+		newExecutables = newList;
+	}
+
+	public Executable[] getCurrentExecutables() {
+		return newExecutables;
+	}
+
+	public Executable[] getPreviousExecutables() {
+		return oldExecutables;
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/executables/StandardExecutableProvider.java	Wed Aug 05 17:35:39 2009 -0500
@@ -0,0 +1,194 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Nokia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Nokia - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.cdt.debug.internal.core.executables;
+
+import java.util.ArrayList;
+
+import org.eclipse.cdt.core.model.CModelException;
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.model.IBinary;
+import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.core.settings.model.CProjectDescriptionEvent;
+import org.eclipse.cdt.core.settings.model.ICProjectDescription;
+import org.eclipse.cdt.core.settings.model.ICProjectDescriptionListener;
+import org.eclipse.cdt.debug.core.CDebugCorePlugin;
+import org.eclipse.cdt.debug.core.executables.Executable;
+import org.eclipse.cdt.debug.core.executables.ExecutablesManager;
+import org.eclipse.cdt.debug.core.executables.IExecutableProvider;
+import org.eclipse.cdt.internal.core.model.CModelManager;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.DebugPlugin;
+
+public class StandardExecutableProvider implements IResourceChangeListener, ICProjectDescriptionListener, IExecutableProvider {
+
+	private ArrayList<Executable> executables = new ArrayList<Executable>();
+
+	public StandardExecutableProvider() {
+		ResourcesPlugin.getWorkspace().addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE);
+		CoreModel.getDefault().getProjectDescriptionManager().addCProjectDescriptionListener(this,
+				CProjectDescriptionEvent.DATA_APPLIED | CProjectDescriptionEvent.LOADED);
+	}
+
+	public void resourceChanged(IResourceChangeEvent event) {
+
+		// refresh when projects are opened or closed. note that deleted
+		// projects are handled later
+		// in this method. new projects are handled in handleEvent.
+		// resource changed events always start at the workspace root, so
+		// projects
+		// are the next level down
+		IResourceDelta[] projects = event.getDelta().getAffectedChildren();
+		for (IResourceDelta projectDelta : projects) {
+			if ((projectDelta.getFlags() & IResourceDelta.OPEN) != 0) {
+				if (projectDelta.getKind() == IResourceDelta.CHANGED) {
+					// project was opened or closed
+					ExecutablesManager.getExecutablesManager().scheduleRefresh(this, 0);
+					return;
+				}
+			}
+		}
+
+		try {
+			final StandardExecutableProvider provider = this;
+			event.getDelta().accept(new IResourceDeltaVisitor() {
+
+				public boolean visit(IResourceDelta delta) throws CoreException {
+					if (delta.getKind() == IResourceDelta.ADDED || delta.getKind() == IResourceDelta.REMOVED) {
+						IResource deltaResource = delta.getResource();
+						if (deltaResource != null) {
+							boolean refresh = false;
+							if (delta.getKind() == IResourceDelta.REMOVED && deltaResource instanceof IProject) {
+								// project deleted
+								refresh = true;
+							} else {
+								// see if a binary has been added/removed
+								IPath resourcePath = delta.getResource().getLocation();
+								if (resourcePath != null && Executable.isExecutableFile(resourcePath)) {
+									refresh = true;
+								}
+							}
+							if (refresh) {
+								ExecutablesManager.getExecutablesManager().scheduleRefresh(provider, 0);
+								return false;
+							}
+						}
+					}
+					return true;
+				}
+			});
+		} catch (CoreException e) {
+		}
+	}
+
+	public void handleEvent(CProjectDescriptionEvent event) {
+		// this handles the cases where the active build configuration changes,
+		// and when new
+		// projects are created.
+		boolean refresh = false;
+
+		int eventType = event.getEventType();
+
+		if (eventType == CProjectDescriptionEvent.DATA_APPLIED) {
+			// see if the active build config has changed
+			ICProjectDescription newDesc = event.getNewCProjectDescription();
+			ICProjectDescription oldDesc = event.getOldCProjectDescription();
+			if (oldDesc != null && newDesc != null) {
+				String newConfigName = newDesc.getActiveConfiguration().getName();
+				String oldConfigName = oldDesc.getActiveConfiguration().getName();
+				refresh = (!newConfigName.equals(oldConfigName));
+			} else if (newDesc != null && oldDesc == null) {
+				// project just created
+				refresh = true;
+			}
+		}
+
+		if (refresh) {
+			ExecutablesManager.getExecutablesManager().scheduleRefresh(this, 0);
+		}
+	}
+
+	public Executable[] getExecutables(IProgressMonitor monitor) {
+		synchronized (executables) {
+			executables.clear();
+
+			IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+			IProject[] projects = root.getProjects();
+
+			monitor.beginTask("Checking C/C++ Projects", projects.length);
+
+			for (IProject project : projects) {
+
+				if (monitor.isCanceled())
+					break;
+
+				try {
+					if (CoreModel.hasCNature(project)) {
+						CModelManager manager = CModelManager.getDefault();
+						ICProject cproject = manager.create(project);
+						try {
+							IBinary[] binaries = cproject.getBinaryContainer().getBinaries();
+							for (IBinary binary : binaries) {
+								if (binary.isExecutable() || binary.isSharedLib()) {
+									IPath exePath = binary.getResource().getLocation();
+									if (exePath == null)
+										exePath = binary.getPath();
+									Executable exe = new Executable(exePath, project, binary.getResource());
+									executables.add(exe);
+								}
+							}
+						} catch (CModelException e) {
+						}
+					}
+				} catch (Exception e) {
+					DebugPlugin.log( e );
+				}
+				monitor.worked(1);
+			}
+			monitor.done();
+		}
+		return executables.toArray(new Executable[executables.size()]);
+	}
+
+	public int getPriority() {
+		return NORMAL_PRIORITY;
+	}
+
+	public IStatus removeExecutable(Executable executable, IProgressMonitor monitor) {
+		IResource exeResource = executable.getResource();
+		if (exeResource != null)
+		{
+			if (exeResource.isLinked())
+			{
+				try {
+					exeResource.delete(true, monitor);
+				} catch (CoreException e) {
+					DebugPlugin.log( e );
+				}				
+			}
+			return Status.OK_STATUS;
+		}
+		return new Status(IStatus.WARNING, CDebugCorePlugin.PLUGIN_ID, "Can't remove " + executable.getName() + ": it is built by project \"" + executable.getProject().getName() + "\"");
+	}
+
+}
\ No newline at end of file
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLookupDirector.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLookupDirector.java	Wed Aug 05 17:35:39 2009 -0500
@@ -7,8 +7,7 @@
  *
  * Contributors:
  * QNX Software Systems - Initial API and implementation
- * Nokia - Added support for AbsoluteSourceContainer( 159833 )
- * Texas Instruments - added extension point for source container type (279473) 
+ * Nokia - Added support for AbsoluteSourceContainer( 159833 ) 
 *******************************************************************************/
 package org.eclipse.cdt.debug.internal.core.sourcelookup; 
 
@@ -16,7 +15,6 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import org.eclipse.cdt.debug.core.CDebugCorePlugin;
 import org.eclipse.cdt.debug.core.model.ICBreakpoint;
 import org.eclipse.cdt.debug.core.sourcelookup.AbsolutePathSourceContainer;
 import org.eclipse.cdt.debug.core.sourcelookup.MappingSourceContainer;
@@ -24,12 +22,8 @@
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
 import org.eclipse.debug.core.sourcelookup.AbstractSourceLookupDirector;
 import org.eclipse.debug.core.sourcelookup.ISourceContainer;
 import org.eclipse.debug.core.sourcelookup.ISourceContainerType;
@@ -37,6 +31,7 @@
 import org.eclipse.debug.core.sourcelookup.containers.DirectorySourceContainer;
 import org.eclipse.debug.core.sourcelookup.containers.FolderSourceContainer;
 import org.eclipse.debug.core.sourcelookup.containers.ProjectSourceContainer;
+import org.eclipse.debug.core.sourcelookup.containers.WorkspaceSourceContainer;
  
 /**
  * C/C++ source lookup director.
@@ -44,7 +39,16 @@
 public class CSourceLookupDirector extends AbstractSourceLookupDirector {
 
 	private static Set<String> fSupportedTypes;
-	private static Object fSupportedTypesLock = new Object();
+
+	static {
+		fSupportedTypes = new HashSet<String>();
+		fSupportedTypes.add( WorkspaceSourceContainer.TYPE_ID );
+		fSupportedTypes.add( ProjectSourceContainer.TYPE_ID );
+		fSupportedTypes.add( FolderSourceContainer.TYPE_ID );
+		fSupportedTypes.add( DirectorySourceContainer.TYPE_ID );
+		fSupportedTypes.add( MappingSourceContainer.TYPE_ID );
+		fSupportedTypes.add( AbsolutePathSourceContainer.TYPE_ID );
+	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#initializeParticipants()
@@ -56,7 +60,6 @@
 	 * @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#supportsSourceContainerType(org.eclipse.debug.core.sourcelookup.ISourceContainerType)
 	 */
 	public boolean supportsSourceContainerType( ISourceContainerType type ) {
-		readSupportedContainerTypes();
 		return fSupportedTypes.contains( type.getId() );
 	}
 
@@ -189,23 +192,4 @@
 		}
 		return path;
 	}
-	
-	// >> Bugzilla 279473
-	private void readSupportedContainerTypes() {
-		synchronized (fSupportedTypesLock) {
-			if( fSupportedTypes == null) {
-				fSupportedTypes = new HashSet<String>();
-				String name = CDebugCorePlugin.PLUGIN_ID+".supportedSourceContainerTypes"; //$NON-NLS-1$; 
-				IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint( name);
-				if( extensionPoint != null)  
-					for( IExtension extension : extensionPoint.getExtensions()) 
-						for( IConfigurationElement configurationElements : extension.getConfigurationElements()) {
-							String id = configurationElements.getAttribute("id");//$NON-NLS-1$;
-							if( id != null)
-								fSupportedTypes.add(id);
-						}
-			}
-		}
-	}
-	// << Bugzilla 279473
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesContentProvider.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesContentProvider.java	Wed Aug 05 17:35:39 2009 -0500
@@ -17,6 +17,9 @@
 import org.eclipse.cdt.debug.core.executables.Executable;
 import org.eclipse.cdt.debug.core.executables.ExecutablesManager;
 import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jface.viewers.ColumnLabelProvider;
 import org.eclipse.jface.viewers.IStructuredContentProvider;
 import org.eclipse.jface.viewers.ITreeContentProvider;
@@ -26,7 +29,10 @@
 
 class ExecutablesContentProvider extends ColumnLabelProvider implements IStructuredContentProvider, ITreeContentProvider {
 
+	private TreeViewer viewer;
+
 	public ExecutablesContentProvider(TreeViewer viewer) {
+		this.viewer = viewer;
 	}
 
 	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
@@ -37,8 +43,42 @@
 
 	public Object[] getElements(final Object inputElement) {
 		if (inputElement instanceof ExecutablesManager) {
-			ExecutablesManager em = (ExecutablesManager) inputElement;
-			return em.getExecutables().toArray();
+			final ExecutablesManager em = (ExecutablesManager) inputElement;
+			if (em.refreshNeeded()) {
+				// do this asynchronously. just return an empty array
+				// immediately, and then refresh the view
+				// once the list of executables has been calculated. this can
+				// take a while and we don't want
+				// to block the UI.
+				Job refreshJob = new Job(Messages.ExecutablesContentProvider_FetchingExecutables) {
+
+					@Override
+					protected IStatus run(IProgressMonitor monitor) {
+						IStatus status = em.refreshExecutables(monitor);
+
+						// Are we in the UIThread? If so spin it until we are done
+						if (!viewer.getControl().isDisposed()) {
+							if (viewer.getControl().getDisplay().getThread() == Thread.currentThread()) {
+								viewer.refresh(inputElement);
+							} else {
+								viewer.getControl().getDisplay().asyncExec(new Runnable() {
+									public void run() {
+										viewer.refresh(inputElement);
+									}
+								});
+							}
+						}
+
+						monitor.done();
+						return status;
+					}
+				};
+
+				refreshJob.schedule();
+
+			} else {
+				return em.getExecutables();
+			}
 		}
 		return new Object[] {};
 	}
@@ -100,4 +140,4 @@
 		return new Object[] {};
 	}
 
-}
+}
\ No newline at end of file
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesView.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesView.java	Wed Aug 05 17:35:39 2009 -0500
@@ -271,10 +271,6 @@
 			public void selectionChanged(SelectionChangedEvent event) {
 				ISelection newSelection = event.getSelection();
 				if (newSelection instanceof IStructuredSelection) {
-					
-					// update the remove action
-					removeAction.setEnabled(!newSelection.isEmpty());
-					
 					final Object firstElement = ((IStructuredSelection) newSelection).getFirstElement();
 					
 					Job setectExeJob = new Job(Messages.ExecutablesView_Select_Executable) {
@@ -285,19 +281,20 @@
 								Executable executable = (Executable)firstElement;
 								this.setName(Messages.ExecutablesView_Finding_Sources_Job_Name + executable.getName());
 								executable.getSourceFiles(monitor);
-
-								UIJob selectExeUIJob = new UIJob(Messages.ExecutablesView_Select_Executable){
-									@Override
-									public IStatus runInUIThread(IProgressMonitor monitor) {
-										sourceFilesViewer.setInput(firstElement);
+							}
+							UIJob selectExeUIJob = new UIJob(Messages.ExecutablesView_Select_Executable){
+								@Override
+								public IStatus runInUIThread(IProgressMonitor monitor) {
+									sourceFilesViewer.setInput(firstElement);
+									if (firstElement instanceof Executable) {
 										sourceFilesViewer.packColumns();
-										return Status.OK_STATUS;
-									}};
+									}
+									return Status.OK_STATUS;
+								}};
 								selectExeUIJob.schedule();								
-							}
-							return Status.OK_STATUS;
+								return Status.OK_STATUS;
 						}};
-					setectExeJob.schedule();
+						setectExeJob.schedule();
 				}
 			}
 		});
@@ -363,7 +360,6 @@
 
 	private Action createRemoveAction() {
 		Action action = new Action("Remove") {
-			
 			public void run() {				
 				ISelection selection = getExecutablesViewer().getSelection();
 				if (selection instanceof IStructuredSelection)
@@ -408,7 +404,7 @@
 		action.setToolTipText("Remove the selected executables");
 		action.setImageDescriptor(ExecutablesView.DESC_REMOVE);
 		action.setDisabledImageDescriptor(ExecutablesView.DESC_REMOVE_DISABLED);
-		action.setEnabled(false);
+		action.setEnabled(true);
 		return action;
 	}
 
@@ -464,7 +460,7 @@
 	private Action createRefreshAction() {
 		Action action = new Action(Messages.ExecutablesView_Refresh) {
 			public void run() {
-				ExecutablesManager.getExecutablesManager().refresh(null);
+				ExecutablesManager.getExecutablesManager().scheduleRefresh(null, 0);
 			}
 		};
 		action.setToolTipText(Messages.ExecutablesView_RefreshList);
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesViewer.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesViewer.java	Wed Aug 05 17:35:39 2009 -0500
@@ -10,9 +10,9 @@
  *******************************************************************************/
 package org.eclipse.cdt.debug.internal.ui.views.executables;
 
-import java.util.List;
 import org.eclipse.cdt.debug.core.executables.Executable;
 import org.eclipse.cdt.debug.core.executables.ExecutablesManager;
+import org.eclipse.cdt.debug.core.executables.IExecutablesChangeEvent;
 import org.eclipse.cdt.debug.core.executables.IExecutablesChangeListener;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
@@ -166,50 +166,39 @@
 		return new ExecutablesViewerComparator(sortType, column_sort_order[sortType]);
 	}
 
-	public void executablesChanged(final List<Executable> executables) {
-			// some executables have been updated.  if one of them is currently
-			// selected, we need to update the source file list
-			UIJob refreshJob = new UIJob(Messages.ExecutablesViewer_RefreshExecutablesView) {
-	
-				@Override
-				public IStatus runInUIThread(IProgressMonitor monitor) {
-					// if the user has selected an executable, they expect its
-					// list of source files to be refreshed automatically
-					if (getSelection() != null &&
-						getSelection() instanceof IStructuredSelection) {
-						IStructuredSelection selection = (IStructuredSelection)getSelection();
-						
-						Object firstElement = selection.getFirstElement();
-						if (firstElement instanceof Executable) {
-							Executable executable = (Executable) firstElement;
-							if (executables.contains(executable)) {
-								executable.setRefreshSourceFiles(true);
-								setSelection(selection);
-							}
-						}
-					}
-					return Status.OK_STATUS;
-				}
-			};
-			refreshJob.schedule();
-		}
-	
-	public void executablesListChanged() {
-		// Executables list has changed so refresh the view.
-		UIJob refreshJob = new UIJob(
-				Messages.ExecutablesViewer_RefreshExecutablesView) {
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.cdt.debug.core.executables.IExecutablesChangeListener#executablesChanged(org.eclipse.cdt.debug.core.executables.IExecutablesChangeEvent)
+	 */
+	public void executablesChanged(IExecutablesChangeEvent event) {
+		// Executables have changed so refresh the view.
+		final ExecutablesViewer viewer = this;
+		UIJob refreshJob = new UIJob(Messages.ExecutablesViewer_RefreshExecutablesView) {
 
 			@Override
 			public IStatus runInUIThread(IProgressMonitor monitor) {
-				refresh(null);
-				packColumns();
+				// if the user has selected an executable, they expect its
+				// list of source files to be refreshed automatically
+				if (viewer.getSelection() != null &&
+					viewer.getSelection() instanceof IStructuredSelection) {
+					IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
+					
+					Object firstElement = selection.getFirstElement();
+					if (firstElement instanceof Executable) {
+						Executable executable = (Executable)firstElement;
+						executable.setRefreshSourceFiles(true);
+						viewer.setSelection(selection);
+					}
+				}
+				viewer.refresh(null);
+				viewer.packColumns();
 				return Status.OK_STATUS;
 			}
 		};
 		refreshJob.schedule();
 	}
 
-
 	@Override
 	protected String getColumnOrderKey() {
 		return P_COLUMN_ORDER_KEY_EXE;
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/SourceFilesLabelProvider.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/SourceFilesLabelProvider.java	Wed Aug 05 17:35:39 2009 -0500
@@ -70,7 +70,7 @@
 			if (cell.getElement() instanceof ITranslationUnit) {
 				Executable executable = (Executable) viewer.getInput();
 				Path path = new Path(executable.getOriginalLocation((ITranslationUnit) cell.getElement()));
-				cell.setText(path.toOSString());
+				cell.setText(executable.getOriginalLocation((ITranslationUnit) cell.getElement()));
 				if (path.toFile().exists())
 					cell.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_BLACK));
 				else
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ActionsList.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ActionsList.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,183 +1,183 @@
-/*******************************************************************************
- * Copyright (c) 2007 Nokia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Nokia - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.debug.ui.breakpointactions;
-
-import java.util.StringTokenizer;
-
-import org.eclipse.cdt.debug.core.CDebugCorePlugin;
-import org.eclipse.cdt.debug.core.breakpointactions.IBreakpointAction;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-
-public class ActionsList extends Composite {
-
-	private Button removeButton;
-	private Table table;
-
-	public ActionsList(Composite parent, int style) {
-		super(parent, style);
-		final GridLayout gridLayout = new GridLayout();
-		gridLayout.numColumns = 4;
-		setLayout(gridLayout);
-
-		table = new Table(this, SWT.FULL_SELECTION | SWT.BORDER | SWT.MULTI);
-		final GridData gridData = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL);
-		gridData.heightHint = 60;
-		gridData.horizontalSpan = 4;
-		table.setLayoutData(gridData);
-		table.setLinesVisible(true);
-		table.setHeaderVisible(true);
-		table.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				updateButtons();
-			}
-		});
-
-		final TableColumn nameTableColumn = new TableColumn(table, SWT.NONE);
-		nameTableColumn.setWidth(120);
-		nameTableColumn.setText(Messages.getString("ActionsList.0")); //$NON-NLS-1$
-
-		final TableColumn typeTableColumn = new TableColumn(table, SWT.NONE);
-		typeTableColumn.setWidth(120);
-		typeTableColumn.setText(Messages.getString("ActionsList.1")); //$NON-NLS-1$
-
-		final TableColumn summaryTableColumn = new TableColumn(table, SWT.NONE);
-		summaryTableColumn.setWidth(120);
-		summaryTableColumn.setText(Messages.getString("ActionsList.2")); //$NON-NLS-1$
-
-		removeButton = new Button(this, SWT.NONE);
-		removeButton.setText(Messages.getString("ActionsList.3")); //$NON-NLS-1$
-
-		removeButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				HandleRemoveButton();
-			}
-		});
-
-		final Button upButton = new Button(this, SWT.NONE);
-		upButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(final SelectionEvent e) {
-				HandleUpButton();
-			}
-		});
-		upButton.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_END));
-		upButton.setText(Messages.getString("ActionsList.4")); //$NON-NLS-1$
-
-		final Button downButton = new Button(this, SWT.NONE);
-		downButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(final SelectionEvent e) {
-				HandleDownButton();
-			}
-		});
-		downButton.setText(Messages.getString("ActionsList.5")); //$NON-NLS-1$
-		//
-
-		updateButtons();
-	}
-
-	public void addAction(IBreakpointAction action) {
-		TableItem[] currentItems = table.getItems();
-		boolean alreadyInList = false;
-		for (int i = 0; i < currentItems.length && !alreadyInList; i++) {
-			alreadyInList = ((IBreakpointAction) currentItems[i].getData()).equals(action);
-		}
-		if (!alreadyInList) {
-			final TableItem tableItem = new TableItem(table, SWT.NONE);
-			tableItem.setText(0, action.getName());
-			tableItem.setText(1, action.getTypeName());
-			tableItem.setText(2, action.getSummary());
-			tableItem.setData(action);
-		}
-		updateButtons();
-	}
-
-	public String getActionNames() {
-		StringBuffer result = new StringBuffer();
-		TableItem[] currentItems = table.getItems();
-		for (int i = 0; i < currentItems.length; i++) {
-			if (i > 0)
-				result.append(',');
-			result.append(((IBreakpointAction) currentItems[i].getData()).getName());
-		}
-		return result.toString();
-	}
-
-	private void swapItems(TableItem item, TableItem item2) {
-		String[] item2Text = { item2.getText(0), item2.getText(1), item2.getText(2) };
-		Object item2Data = item2.getData();
-
-		item2.setText(0, item.getText(0));
-		item2.setText(1, item.getText(1));
-		item2.setText(2, item.getText(2));
-		item2.setData(item.getData());
-
-		item.setText(0, item2Text[0]);
-		item.setText(1, item2Text[1]);
-		item.setText(2, item2Text[2]);
-		item.setData(item2Data);
-	}
-
-	protected void HandleUpButton() {
-		int[] selection = table.getSelectionIndices();
-		if (selection.length == 1 && selection[0] > 0) {
-			swapItems(table.getItem(selection[0]), table.getItem(selection[0] - 1));
-		}
-	}
-
-	protected void HandleDownButton() {
-		int[] selection = table.getSelectionIndices();
-		if (selection.length == 1 && selection[0] < (table.getItemCount() - 1)) {
-			swapItems(table.getItem(selection[0]), table.getItem(selection[0] + 1));
-		}
-	}
-
-	protected void HandleRemoveButton() {
-		table.remove(table.getSelectionIndices());
-		if (table.getItemCount() > 0) {
-			table.select(table.getItemCount() - 1);
-		}
-		updateButtons();
-	}
-
-	public void setNames(String actionNames) {
-
-		table.removeAll();
-		StringTokenizer tok = new StringTokenizer(actionNames, ","); //$NON-NLS-1$
-
-		while (tok.hasMoreTokens()) {
-			String actionName = tok.nextToken();
-			IBreakpointAction action = CDebugCorePlugin.getDefault().getBreakpointActionManager().findBreakpointAction(actionName);
-			if (action != null) {
-				final TableItem tableItem = new TableItem(table, SWT.NONE);
-				tableItem.setText(0, action.getName());
-				tableItem.setText(1, action.getTypeName());
-				tableItem.setText(2, action.getSummary());
-				tableItem.setData(action);
-			}
-		}
-
-		updateButtons();
-	}
-
-	public void updateButtons() {
-		TableItem[] selectedItems = table.getSelection();
-		removeButton.setEnabled(selectedItems.length > 0);
-	}
-
-}
+/*******************************************************************************
+ * Copyright (c) 2007 Nokia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Nokia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.ui.breakpointactions;
+
+import java.util.StringTokenizer;
+
+import org.eclipse.cdt.debug.core.CDebugCorePlugin;
+import org.eclipse.cdt.debug.core.breakpointactions.IBreakpointAction;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+
+public class ActionsList extends Composite {
+
+	private Button removeButton;
+	private Table table;
+
+	public ActionsList(Composite parent, int style) {
+		super(parent, style);
+		final GridLayout gridLayout = new GridLayout();
+		gridLayout.numColumns = 4;
+		setLayout(gridLayout);
+
+		table = new Table(this, SWT.FULL_SELECTION | SWT.BORDER | SWT.MULTI);
+		final GridData gridData = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL);
+		gridData.heightHint = 60;
+		gridData.horizontalSpan = 4;
+		table.setLayoutData(gridData);
+		table.setLinesVisible(true);
+		table.setHeaderVisible(true);
+		table.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				updateButtons();
+			}
+		});
+
+		final TableColumn nameTableColumn = new TableColumn(table, SWT.NONE);
+		nameTableColumn.setWidth(120);
+		nameTableColumn.setText(Messages.getString("ActionsList.0")); //$NON-NLS-1$
+
+		final TableColumn typeTableColumn = new TableColumn(table, SWT.NONE);
+		typeTableColumn.setWidth(120);
+		typeTableColumn.setText(Messages.getString("ActionsList.1")); //$NON-NLS-1$
+
+		final TableColumn summaryTableColumn = new TableColumn(table, SWT.NONE);
+		summaryTableColumn.setWidth(120);
+		summaryTableColumn.setText(Messages.getString("ActionsList.2")); //$NON-NLS-1$
+
+		removeButton = new Button(this, SWT.NONE);
+		removeButton.setText(Messages.getString("ActionsList.3")); //$NON-NLS-1$
+
+		removeButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				HandleRemoveButton();
+			}
+		});
+
+		final Button upButton = new Button(this, SWT.NONE);
+		upButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(final SelectionEvent e) {
+				HandleUpButton();
+			}
+		});
+		upButton.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_END));
+		upButton.setText(Messages.getString("ActionsList.4")); //$NON-NLS-1$
+
+		final Button downButton = new Button(this, SWT.NONE);
+		downButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(final SelectionEvent e) {
+				HandleDownButton();
+			}
+		});
+		downButton.setText(Messages.getString("ActionsList.5")); //$NON-NLS-1$
+		//
+
+		updateButtons();
+	}
+
+	public void addAction(IBreakpointAction action) {
+		TableItem[] currentItems = table.getItems();
+		boolean alreadyInList = false;
+		for (int i = 0; i < currentItems.length && !alreadyInList; i++) {
+			alreadyInList = ((IBreakpointAction) currentItems[i].getData()).equals(action);
+		}
+		if (!alreadyInList) {
+			final TableItem tableItem = new TableItem(table, SWT.NONE);
+			tableItem.setText(0, action.getName());
+			tableItem.setText(1, action.getTypeName());
+			tableItem.setText(2, action.getSummary());
+			tableItem.setData(action);
+		}
+		updateButtons();
+	}
+
+	public String getActionNames() {
+		StringBuffer result = new StringBuffer();
+		TableItem[] currentItems = table.getItems();
+		for (int i = 0; i < currentItems.length; i++) {
+			if (i > 0)
+				result.append(',');
+			result.append(((IBreakpointAction) currentItems[i].getData()).getName());
+		}
+		return result.toString();
+	}
+
+	private void swapItems(TableItem item, TableItem item2) {
+		String[] item2Text = { item2.getText(0), item2.getText(1), item2.getText(2) };
+		Object item2Data = item2.getData();
+
+		item2.setText(0, item.getText(0));
+		item2.setText(1, item.getText(1));
+		item2.setText(2, item.getText(2));
+		item2.setData(item.getData());
+
+		item.setText(0, item2Text[0]);
+		item.setText(1, item2Text[1]);
+		item.setText(2, item2Text[2]);
+		item.setData(item2Data);
+	}
+
+	protected void HandleUpButton() {
+		int[] selection = table.getSelectionIndices();
+		if (selection.length == 1 && selection[0] > 0) {
+			swapItems(table.getItem(selection[0]), table.getItem(selection[0] - 1));
+		}
+	}
+
+	protected void HandleDownButton() {
+		int[] selection = table.getSelectionIndices();
+		if (selection.length == 1 && selection[0] < (table.getItemCount() - 1)) {
+			swapItems(table.getItem(selection[0]), table.getItem(selection[0] + 1));
+		}
+	}
+
+	protected void HandleRemoveButton() {
+		table.remove(table.getSelectionIndices());
+		if (table.getItemCount() > 0) {
+			table.select(table.getItemCount() - 1);
+		}
+		updateButtons();
+	}
+
+	public void setNames(String actionNames) {
+
+		table.removeAll();
+		StringTokenizer tok = new StringTokenizer(actionNames, ","); //$NON-NLS-1$
+
+		while (tok.hasMoreTokens()) {
+			String actionName = tok.nextToken();
+			IBreakpointAction action = CDebugCorePlugin.getDefault().getBreakpointActionManager().findBreakpointAction(actionName);
+			if (action != null) {
+				final TableItem tableItem = new TableItem(table, SWT.NONE);
+				tableItem.setText(0, action.getName());
+				tableItem.setText(1, action.getTypeName());
+				tableItem.setText(2, action.getSummary());
+				tableItem.setData(action);
+			}
+		}
+
+		updateButtons();
+	}
+
+	public void updateButtons() {
+		TableItem[] selectedItems = table.getSelection();
+		removeButton.setEnabled(selectedItems.length > 0);
+	}
+
+}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ActionsPreferencePage.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ActionsPreferencePage.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,64 +1,64 @@
-/*******************************************************************************
- * Copyright (c) 2007 Nokia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Nokia - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.debug.ui.breakpointactions;
-
-import org.eclipse.cdt.debug.core.CDebugCorePlugin;
-import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.PlatformUI;
-
-public class ActionsPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
-
-	private String contextHelpID = "breakpoint_actions_page_help"; //$NON-NLS-1$
-
-	public ActionsPreferencePage() {
-		super();
-		setPreferenceStore(CDebugUIPlugin.getDefault().getPreferenceStore());
-	}
-
-	public Control createContents(Composite parent) {
-		Composite container = new Composite(parent, SWT.NONE);
-		final GridLayout gridLayout = new GridLayout();
-		container.setLayout(gridLayout);
-
-		final Label breakpointActionsAvailableLabel = new Label(container, SWT.NONE);
-		breakpointActionsAvailableLabel.setText(Messages.getString("ActionsPreferencePage.0")); //$NON-NLS-1$
-		final GlobalActionsList actionsList = new GlobalActionsList(container, SWT.NONE, false);
-		actionsList.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
-
-		String helpContextID = CDebugUIPlugin.PLUGIN_ID + "." + contextHelpID; //$NON-NLS-1$	
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(super.getControl(), helpContextID);
-
-		return container;
-	}
-
-	public void init(IWorkbench workbench) {
-	}
-
-	public boolean performCancel() {
-		CDebugCorePlugin.getDefault().getBreakpointActionManager().revertActionData();
-		return super.performCancel();
-	}
-
-	public boolean performOk() {
-		CDebugCorePlugin.getDefault().getBreakpointActionManager().saveActionData();
-		return super.performOk();
-	}
-
-}
+/*******************************************************************************
+ * Copyright (c) 2007 Nokia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Nokia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.ui.breakpointactions;
+
+import org.eclipse.cdt.debug.core.CDebugCorePlugin;
+import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.eclipse.ui.PlatformUI;
+
+public class ActionsPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
+
+	private String contextHelpID = "breakpoint_actions_page_help"; //$NON-NLS-1$
+
+	public ActionsPreferencePage() {
+		super();
+		setPreferenceStore(CDebugUIPlugin.getDefault().getPreferenceStore());
+	}
+
+	public Control createContents(Composite parent) {
+		Composite container = new Composite(parent, SWT.NONE);
+		final GridLayout gridLayout = new GridLayout();
+		container.setLayout(gridLayout);
+
+		final Label breakpointActionsAvailableLabel = new Label(container, SWT.NONE);
+		breakpointActionsAvailableLabel.setText(Messages.getString("ActionsPreferencePage.0")); //$NON-NLS-1$
+		final GlobalActionsList actionsList = new GlobalActionsList(container, SWT.NONE, false);
+		actionsList.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
+
+		String helpContextID = CDebugUIPlugin.PLUGIN_ID + "." + contextHelpID; //$NON-NLS-1$	
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(super.getControl(), helpContextID);
+
+		return container;
+	}
+
+	public void init(IWorkbench workbench) {
+	}
+
+	public boolean performCancel() {
+		CDebugCorePlugin.getDefault().getBreakpointActionManager().revertActionData();
+		return super.performCancel();
+	}
+
+	public boolean performOk() {
+		CDebugCorePlugin.getDefault().getBreakpointActionManager().saveActionData();
+		return super.performOk();
+	}
+
+}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ActionsPropertyPage.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ActionsPropertyPage.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,126 +1,126 @@
-/*******************************************************************************
- * Copyright (c) 2007 Nokia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Nokia - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.debug.ui.breakpointactions;
-
-import org.eclipse.cdt.debug.core.CDebugCorePlugin;
-import org.eclipse.cdt.debug.core.breakpointactions.BreakpointActionManager;
-import org.eclipse.cdt.debug.core.breakpointactions.IBreakpointAction;
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.model.IBreakpoint;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.dialogs.PropertyPage;
-
-public class ActionsPropertyPage extends PropertyPage {
-
-	private ActionsList actionsList;
-	private IMarker breakpointMarker;
-	private GlobalActionsList globalActionsList;
-	private String savedActionNames;
-
-	public ActionsPropertyPage() {
-		super();
-	}
-
-	public Control createContents(Composite parent) {
-		Composite container = new Composite(parent, SWT.NULL);
-
-		IBreakpoint breakpoint = (IBreakpoint) this.getElement().getAdapter(org.eclipse.debug.core.model.IBreakpoint.class);
-		breakpointMarker = breakpoint.getMarker();
-		savedActionNames = breakpointMarker.getAttribute(BreakpointActionManager.BREAKPOINT_ACTION_ATTRIBUTE, ""); //$NON-NLS-1$
-
-		final Label actionsTriggeredWhenLabel = new Label(container, SWT.NONE);
-		final GridData gridData_2 = new GridData();
-		gridData_2.horizontalSpan = 2;
-		actionsTriggeredWhenLabel.setLayoutData(gridData_2);
-		actionsTriggeredWhenLabel.setText(Messages.getString("ActionsPropertyPage.1")); //$NON-NLS-1$
-
-		actionsList = new ActionsList(container, SWT.NONE);
-		final GridData gridData = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL);
-		gridData.horizontalSpan = 2;
-		actionsList.setLayoutData(gridData);
-
-		final GridLayout gridLayout = new GridLayout();
-		gridLayout.numColumns = 2;
-		container.setLayout(gridLayout);
-
-		final Label label = new Label(container, SWT.SEPARATOR | SWT.HORIZONTAL);
-		final GridData gridData_4 = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
-		gridData_4.horizontalSpan = 2;
-		label.setLayoutData(gridData_4);
-
-		final Label allAvailableActionsLabel = new Label(container, SWT.NONE);
-		final GridData gridData_3 = new GridData();
-		gridData_3.horizontalSpan = 2;
-		allAvailableActionsLabel.setLayoutData(gridData_3);
-		allAvailableActionsLabel.setText(Messages.getString("ActionsPropertyPage.2")); //$NON-NLS-1$
-
-		globalActionsList = new GlobalActionsList(container, SWT.NONE, true);
-		final GridData gridData_1 = new GridData(GridData.FILL_BOTH);
-		gridData_1.horizontalSpan = 2;
-		globalActionsList.setLayoutData(gridData_1);
-		//
-
-		String actionNames = breakpointMarker.getAttribute(BreakpointActionManager.BREAKPOINT_ACTION_ATTRIBUTE, ""); //$NON-NLS-1$
-		actionsList.setNames(actionNames);
-
-		globalActionsList.getAttachButton().addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				HandleAttachButton();
-			}
-		});
-
-		return container;
-	}
-
-	protected void HandleAttachButton() {
-
-		IBreakpointAction[] selectedActions = globalActionsList.getSelectedActions();
-		for (int i = 0; i < selectedActions.length; i++) {
-			actionsList.addAction(selectedActions[i]);
-		}
-	}
-
-	protected void performDefaults() {
-		try {
-			breakpointMarker.setAttribute(BreakpointActionManager.BREAKPOINT_ACTION_ATTRIBUTE, ""); //$NON-NLS-1$
-			actionsList.setNames(""); //$NON-NLS-1$
-		} catch (CoreException e) {
-		}
-		super.performDefaults();
-	}
-
-	public boolean performCancel() {
-		try {
-			breakpointMarker.setAttribute(BreakpointActionManager.BREAKPOINT_ACTION_ATTRIBUTE, savedActionNames);
-			CDebugCorePlugin.getDefault().getBreakpointActionManager().revertActionData();
-		} catch (CoreException e) {
-		}
-		return super.performCancel();
-	}
-
-	public boolean performOk() {
-		try {
-			CDebugCorePlugin.getDefault().getBreakpointActionManager().saveActionData();
-			breakpointMarker.setAttribute(BreakpointActionManager.BREAKPOINT_ACTION_ATTRIBUTE, actionsList.getActionNames());
-		} catch (CoreException e) {
-		}
-		return super.performOk();
-	}
-
-}
+/*******************************************************************************
+ * Copyright (c) 2007 Nokia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Nokia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.ui.breakpointactions;
+
+import org.eclipse.cdt.debug.core.CDebugCorePlugin;
+import org.eclipse.cdt.debug.core.breakpointactions.BreakpointActionManager;
+import org.eclipse.cdt.debug.core.breakpointactions.IBreakpointAction;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.model.IBreakpoint;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.dialogs.PropertyPage;
+
+public class ActionsPropertyPage extends PropertyPage {
+
+	private ActionsList actionsList;
+	private IMarker breakpointMarker;
+	private GlobalActionsList globalActionsList;
+	private String savedActionNames;
+
+	public ActionsPropertyPage() {
+		super();
+	}
+
+	public Control createContents(Composite parent) {
+		Composite container = new Composite(parent, SWT.NULL);
+
+		IBreakpoint breakpoint = (IBreakpoint) this.getElement().getAdapter(org.eclipse.debug.core.model.IBreakpoint.class);
+		breakpointMarker = breakpoint.getMarker();
+		savedActionNames = breakpointMarker.getAttribute(BreakpointActionManager.BREAKPOINT_ACTION_ATTRIBUTE, ""); //$NON-NLS-1$
+
+		final Label actionsTriggeredWhenLabel = new Label(container, SWT.NONE);
+		final GridData gridData_2 = new GridData();
+		gridData_2.horizontalSpan = 2;
+		actionsTriggeredWhenLabel.setLayoutData(gridData_2);
+		actionsTriggeredWhenLabel.setText(Messages.getString("ActionsPropertyPage.1")); //$NON-NLS-1$
+
+		actionsList = new ActionsList(container, SWT.NONE);
+		final GridData gridData = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL);
+		gridData.horizontalSpan = 2;
+		actionsList.setLayoutData(gridData);
+
+		final GridLayout gridLayout = new GridLayout();
+		gridLayout.numColumns = 2;
+		container.setLayout(gridLayout);
+
+		final Label label = new Label(container, SWT.SEPARATOR | SWT.HORIZONTAL);
+		final GridData gridData_4 = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+		gridData_4.horizontalSpan = 2;
+		label.setLayoutData(gridData_4);
+
+		final Label allAvailableActionsLabel = new Label(container, SWT.NONE);
+		final GridData gridData_3 = new GridData();
+		gridData_3.horizontalSpan = 2;
+		allAvailableActionsLabel.setLayoutData(gridData_3);
+		allAvailableActionsLabel.setText(Messages.getString("ActionsPropertyPage.2")); //$NON-NLS-1$
+
+		globalActionsList = new GlobalActionsList(container, SWT.NONE, true);
+		final GridData gridData_1 = new GridData(GridData.FILL_BOTH);
+		gridData_1.horizontalSpan = 2;
+		globalActionsList.setLayoutData(gridData_1);
+		//
+
+		String actionNames = breakpointMarker.getAttribute(BreakpointActionManager.BREAKPOINT_ACTION_ATTRIBUTE, ""); //$NON-NLS-1$
+		actionsList.setNames(actionNames);
+
+		globalActionsList.getAttachButton().addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				HandleAttachButton();
+			}
+		});
+
+		return container;
+	}
+
+	protected void HandleAttachButton() {
+
+		IBreakpointAction[] selectedActions = globalActionsList.getSelectedActions();
+		for (int i = 0; i < selectedActions.length; i++) {
+			actionsList.addAction(selectedActions[i]);
+		}
+	}
+
+	protected void performDefaults() {
+		try {
+			breakpointMarker.setAttribute(BreakpointActionManager.BREAKPOINT_ACTION_ATTRIBUTE, ""); //$NON-NLS-1$
+			actionsList.setNames(""); //$NON-NLS-1$
+		} catch (CoreException e) {
+		}
+		super.performDefaults();
+	}
+
+	public boolean performCancel() {
+		try {
+			breakpointMarker.setAttribute(BreakpointActionManager.BREAKPOINT_ACTION_ATTRIBUTE, savedActionNames);
+			CDebugCorePlugin.getDefault().getBreakpointActionManager().revertActionData();
+		} catch (CoreException e) {
+		}
+		return super.performCancel();
+	}
+
+	public boolean performOk() {
+		try {
+			CDebugCorePlugin.getDefault().getBreakpointActionManager().saveActionData();
+			breakpointMarker.setAttribute(BreakpointActionManager.BREAKPOINT_ACTION_ATTRIBUTE, actionsList.getActionNames());
+		} catch (CoreException e) {
+		}
+		return super.performOk();
+	}
+
+}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/GlobalActionsList.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/GlobalActionsList.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,200 +1,200 @@
-/*******************************************************************************
- * Copyright (c) 2007 Nokia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Nokia - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.debug.ui.breakpointactions;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.cdt.debug.core.CDebugCorePlugin;
-import org.eclipse.cdt.debug.core.breakpointactions.IBreakpointAction;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-
-public class GlobalActionsList extends Composite {
-
-	private Button attachButton = null;
-	private Button deleteButton = null;
-	private Button editButton = null;
-	private Button newButton = null;
-	private Table table = null;
-
-	public GlobalActionsList(Composite parent, int style, boolean useAttachButton) {
-		super(parent, style);
-		final GridLayout gridLayout = new GridLayout();
-		gridLayout.numColumns = 5;
-		setLayout(gridLayout);
-
-		table = new Table(this, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI);
-		table.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				updateButtons();
-			}
-
-			public void widgetDefaultSelected(SelectionEvent e) {
-				HandleEditButton();
-			}
-
-		});
-
-		final GridData gridData = new GridData(GridData.FILL_BOTH);
-		gridData.horizontalSpan = 5;
-		table.setLayoutData(gridData);
-		table.setLinesVisible(true);
-		table.setHeaderVisible(true);
-
-		final TableColumn nameTableColumn = new TableColumn(table, SWT.NONE);
-		nameTableColumn.setWidth(120);
-		nameTableColumn.setText(Messages.getString("GlobalActionsList.0")); //$NON-NLS-1$
-
-		final TableColumn typeTableColumn = new TableColumn(table, SWT.NONE);
-		typeTableColumn.setWidth(120);
-		typeTableColumn.setText(Messages.getString("GlobalActionsList.1")); //$NON-NLS-1$
-
-		final TableColumn summaryTableColumn = new TableColumn(table, SWT.NONE);
-		summaryTableColumn.setWidth(120);
-		summaryTableColumn.setText(Messages.getString("GlobalActionsList.2")); //$NON-NLS-1$
-
-		ArrayList actions = CDebugCorePlugin.getDefault().getBreakpointActionManager().getBreakpointActions();
-		boolean hasActions = actions.size() > 0;
-
-		for (Iterator iter = CDebugCorePlugin.getDefault().getBreakpointActionManager().getBreakpointActions().iterator(); iter.hasNext();) {
-			IBreakpointAction element = (IBreakpointAction) iter.next();
-			final TableItem tableItem = new TableItem(table, SWT.NONE);
-			tableItem.setText(0, element.getName());
-			tableItem.setText(1, element.getTypeName());
-			tableItem.setText(2, element.getSummary());
-			tableItem.setData(element);
-		}
-
-		if (useAttachButton) {
-			attachButton = new Button(this, SWT.NONE);
-			attachButton.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL));
-			attachButton.setText(Messages.getString("GlobalActionsList.3")); //$NON-NLS-1$
-		}
-
-		newButton = new Button(this, SWT.NONE);
-		newButton.setLayoutData(new GridData());
-		newButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-
-				try {
-					HandleNewButton();
-				} catch (CoreException e1) {
-				}
-			}
-		});
-		newButton.setText(Messages.getString("GlobalActionsList.4")); //$NON-NLS-1$
-		newButton.setEnabled(CDebugCorePlugin.getDefault().getBreakpointActionManager().getBreakpointActionExtensions().length > 0);
-
-		editButton = new Button(this, SWT.NONE);
-		editButton.setText(Messages.getString("GlobalActionsList.5")); //$NON-NLS-1$
-		editButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-
-				HandleEditButton();
-			}
-		});
-		if (!useAttachButton)
-			editButton.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL + GridData.HORIZONTAL_ALIGN_END));
-		editButton.setEnabled(hasActions);
-
-		deleteButton = new Button(this, SWT.NONE);
-		deleteButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				HandleDeleteButton();
-			}
-		});
-		deleteButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
-		deleteButton.setText(Messages.getString("GlobalActionsList.6")); //$NON-NLS-1$
-		deleteButton.setEnabled(hasActions);
-		//
-	}
-
-	public Button getAttachButton() {
-		return attachButton;
-	}
-
-	public IBreakpointAction[] getSelectedActions() {
-		TableItem[] selectedItems = table.getSelection();
-		IBreakpointAction[] actionList = new IBreakpointAction[selectedItems.length];
-		int actionCount = 0;
-		for (int i = 0; i < selectedItems.length; i++) {
-			actionList[actionCount++] = (IBreakpointAction) selectedItems[i].getData();
-		}
-		return actionList;
-	}
-
-	protected void HandleDeleteButton() {
-		TableItem[] selectedItems = table.getSelection();
-		for (int i = 0; i < selectedItems.length; i++) {
-			IBreakpointAction action = (IBreakpointAction) selectedItems[i].getData();
-			CDebugCorePlugin.getDefault().getBreakpointActionManager().deleteAction(action);
-		}
-		table.remove(table.getSelectionIndices());
-		if (table.getItemCount() > 0) {
-			table.select(table.getItemCount() - 1);
-		}
-		updateButtons();
-	}
-
-	protected void HandleEditButton() {
-
-		TableItem[] selectedItems = table.getSelection();
-		IBreakpointAction action = (IBreakpointAction) selectedItems[0].getData();
-
-		ActionDialog dialog = new ActionDialog(this.getShell(), action);
-		int result = dialog.open();
-		if (result == Window.OK) {
-			action.setName(dialog.getActionName());
-			selectedItems[0].setText(0, action.getName());
-			selectedItems[0].setText(1, action.getTypeName());
-			selectedItems[0].setText(2, action.getSummary());
-		}
-
-	}
-
-	protected void HandleNewButton() throws CoreException {
-
-		ActionDialog dialog = new ActionDialog(this.getShell(), null);
-		int result = dialog.open();
-		if (result == Window.OK) {
-			IBreakpointAction action = dialog.getBreakpointAction();
-			action.setName(dialog.getActionName());
-			CDebugCorePlugin.getDefault().getBreakpointActionManager().addAction(action);
-			final TableItem tableItem = new TableItem(table, SWT.NONE);
-			tableItem.setText(0, action.getName());
-			tableItem.setText(1, action.getTypeName());
-			tableItem.setText(2, action.getSummary());
-			tableItem.setData(action);
-
-		}
-
-	}
-
-	public void updateButtons() {
-		TableItem[] selectedItems = table.getSelection();
-		if (attachButton != null)
-			attachButton.setEnabled(selectedItems.length > 0);
-		deleteButton.setEnabled(selectedItems.length > 0);
-		editButton.setEnabled(selectedItems.length > 0);
-	}
-
-}
+/*******************************************************************************
+ * Copyright (c) 2007 Nokia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Nokia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.ui.breakpointactions;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import org.eclipse.cdt.debug.core.CDebugCorePlugin;
+import org.eclipse.cdt.debug.core.breakpointactions.IBreakpointAction;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+
+public class GlobalActionsList extends Composite {
+
+	private Button attachButton = null;
+	private Button deleteButton = null;
+	private Button editButton = null;
+	private Button newButton = null;
+	private Table table = null;
+
+	public GlobalActionsList(Composite parent, int style, boolean useAttachButton) {
+		super(parent, style);
+		final GridLayout gridLayout = new GridLayout();
+		gridLayout.numColumns = 5;
+		setLayout(gridLayout);
+
+		table = new Table(this, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI);
+		table.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				updateButtons();
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+				HandleEditButton();
+			}
+
+		});
+
+		final GridData gridData = new GridData(GridData.FILL_BOTH);
+		gridData.horizontalSpan = 5;
+		table.setLayoutData(gridData);
+		table.setLinesVisible(true);
+		table.setHeaderVisible(true);
+
+		final TableColumn nameTableColumn = new TableColumn(table, SWT.NONE);
+		nameTableColumn.setWidth(120);
+		nameTableColumn.setText(Messages.getString("GlobalActionsList.0")); //$NON-NLS-1$
+
+		final TableColumn typeTableColumn = new TableColumn(table, SWT.NONE);
+		typeTableColumn.setWidth(120);
+		typeTableColumn.setText(Messages.getString("GlobalActionsList.1")); //$NON-NLS-1$
+
+		final TableColumn summaryTableColumn = new TableColumn(table, SWT.NONE);
+		summaryTableColumn.setWidth(120);
+		summaryTableColumn.setText(Messages.getString("GlobalActionsList.2")); //$NON-NLS-1$
+
+		ArrayList actions = CDebugCorePlugin.getDefault().getBreakpointActionManager().getBreakpointActions();
+		boolean hasActions = actions.size() > 0;
+
+		for (Iterator iter = CDebugCorePlugin.getDefault().getBreakpointActionManager().getBreakpointActions().iterator(); iter.hasNext();) {
+			IBreakpointAction element = (IBreakpointAction) iter.next();
+			final TableItem tableItem = new TableItem(table, SWT.NONE);
+			tableItem.setText(0, element.getName());
+			tableItem.setText(1, element.getTypeName());
+			tableItem.setText(2, element.getSummary());
+			tableItem.setData(element);
+		}
+
+		if (useAttachButton) {
+			attachButton = new Button(this, SWT.NONE);
+			attachButton.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL));
+			attachButton.setText(Messages.getString("GlobalActionsList.3")); //$NON-NLS-1$
+		}
+
+		newButton = new Button(this, SWT.NONE);
+		newButton.setLayoutData(new GridData());
+		newButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+
+				try {
+					HandleNewButton();
+				} catch (CoreException e1) {
+				}
+			}
+		});
+		newButton.setText(Messages.getString("GlobalActionsList.4")); //$NON-NLS-1$
+		newButton.setEnabled(CDebugCorePlugin.getDefault().getBreakpointActionManager().getBreakpointActionExtensions().length > 0);
+
+		editButton = new Button(this, SWT.NONE);
+		editButton.setText(Messages.getString("GlobalActionsList.5")); //$NON-NLS-1$
+		editButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+
+				HandleEditButton();
+			}
+		});
+		if (!useAttachButton)
+			editButton.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL + GridData.HORIZONTAL_ALIGN_END));
+		editButton.setEnabled(hasActions);
+
+		deleteButton = new Button(this, SWT.NONE);
+		deleteButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				HandleDeleteButton();
+			}
+		});
+		deleteButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
+		deleteButton.setText(Messages.getString("GlobalActionsList.6")); //$NON-NLS-1$
+		deleteButton.setEnabled(hasActions);
+		//
+	}
+
+	public Button getAttachButton() {
+		return attachButton;
+	}
+
+	public IBreakpointAction[] getSelectedActions() {
+		TableItem[] selectedItems = table.getSelection();
+		IBreakpointAction[] actionList = new IBreakpointAction[selectedItems.length];
+		int actionCount = 0;
+		for (int i = 0; i < selectedItems.length; i++) {
+			actionList[actionCount++] = (IBreakpointAction) selectedItems[i].getData();
+		}
+		return actionList;
+	}
+
+	protected void HandleDeleteButton() {
+		TableItem[] selectedItems = table.getSelection();
+		for (int i = 0; i < selectedItems.length; i++) {
+			IBreakpointAction action = (IBreakpointAction) selectedItems[i].getData();
+			CDebugCorePlugin.getDefault().getBreakpointActionManager().deleteAction(action);
+		}
+		table.remove(table.getSelectionIndices());
+		if (table.getItemCount() > 0) {
+			table.select(table.getItemCount() - 1);
+		}
+		updateButtons();
+	}
+
+	protected void HandleEditButton() {
+
+		TableItem[] selectedItems = table.getSelection();
+		IBreakpointAction action = (IBreakpointAction) selectedItems[0].getData();
+
+		ActionDialog dialog = new ActionDialog(this.getShell(), action);
+		int result = dialog.open();
+		if (result == Window.OK) {
+			action.setName(dialog.getActionName());
+			selectedItems[0].setText(0, action.getName());
+			selectedItems[0].setText(1, action.getTypeName());
+			selectedItems[0].setText(2, action.getSummary());
+		}
+
+	}
+
+	protected void HandleNewButton() throws CoreException {
+
+		ActionDialog dialog = new ActionDialog(this.getShell(), null);
+		int result = dialog.open();
+		if (result == Window.OK) {
+			IBreakpointAction action = dialog.getBreakpointAction();
+			action.setName(dialog.getActionName());
+			CDebugCorePlugin.getDefault().getBreakpointActionManager().addAction(action);
+			final TableItem tableItem = new TableItem(table, SWT.NONE);
+			tableItem.setText(0, action.getName());
+			tableItem.setText(1, action.getTypeName());
+			tableItem.setText(2, action.getSummary());
+			tableItem.setData(action);
+
+		}
+
+	}
+
+	public void updateButtons() {
+		TableItem[] selectedItems = table.getSelection();
+		if (attachButton != null)
+			attachButton.setEnabled(selectedItems.length > 0);
+		deleteButton.setEnabled(selectedItems.length > 0);
+		editButton.setEnabled(selectedItems.length > 0);
+	}
+
+}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/IBreakpointActionPage.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/IBreakpointActionPage.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,32 +1,32 @@
-/*******************************************************************************
- * Copyright (c) 2007 Nokia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Nokia - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.debug.ui.breakpointactions;
-
-import org.eclipse.cdt.debug.core.breakpointactions.IBreakpointAction;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * 
- * THIS INTERFACE IS PROVISIONAL AND WILL CHANGE IN THE FUTURE
- * PLUG-INS USING THIS INTERFACE WILL NEED
- * TO BE REVISED TO WORK WITH FUTURE VERSIONS OF CDT.
- *
- */
-
-public interface IBreakpointActionPage {
-
-	public void actionDialogCanceled();
-
-	public void actionDialogOK();
-
-	public Composite createComposite(IBreakpointAction action, Composite composite, int style);
-
-}
+/*******************************************************************************
+ * Copyright (c) 2007 Nokia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Nokia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.ui.breakpointactions;
+
+import org.eclipse.cdt.debug.core.breakpointactions.IBreakpointAction;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * 
+ * THIS INTERFACE IS PROVISIONAL AND WILL CHANGE IN THE FUTURE
+ * PLUG-INS USING THIS INTERFACE WILL NEED
+ * TO BE REVISED TO WORK WITH FUTURE VERSIONS OF CDT.
+ *
+ */
+
+public interface IBreakpointActionPage {
+
+	public void actionDialogCanceled();
+
+	public void actionDialogOK();
+
+	public Composite createComposite(IBreakpointAction action, Composite composite, int style);
+
+}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/LogActionComposite.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/LogActionComposite.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,72 +1,72 @@
-/*******************************************************************************
- * Copyright (c) 2007 Nokia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Nokia - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.debug.ui.breakpointactions;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
-public class LogActionComposite extends Composite {
-
-	private Button expressionButton;
-	private LogActionPage logActionPage;
-	private Text message;
-
-	public LogActionComposite(Composite parent, int style, LogActionPage logActionPage) {
-		super(parent, style);
-		final GridLayout gridLayout = new GridLayout();
-		gridLayout.numColumns = 2;
-		setLayout(gridLayout);
-
-		this.logActionPage = logActionPage;
-
-		final Label messageToLogLabel = new Label(this, SWT.NONE);
-		messageToLogLabel.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false, 2, 1));
-		messageToLogLabel.setText(Messages.getString("LogActionComposite.0")); //$NON-NLS-1$
-
-		message = new Text(this, SWT.BORDER | SWT.WRAP);
-		message.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true, 2, 1));
-
-		expressionButton = new Button(this, SWT.CHECK);
-		expressionButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(final SelectionEvent e) {
-			}
-		});
-		expressionButton.setText(Messages.getString("LogActionComposite.1")); //$NON-NLS-1$
-		//
-
-		message.setText(this.logActionPage.getLogAction().getMessage());
-		expressionButton.setSelection(this.logActionPage.getLogAction().isEvaluateExpression());
-	}
-
-	protected void checkSubclass() {
-		// Disable the check that prevents subclassing of SWT components
-	}
-
-	public void dispose() {
-		super.dispose();
-	}
-
-	public boolean getIsExpression() {
-		return expressionButton.getSelection();
-	}
-
-	public String getMessage() {
-		return message.getText();
-	}
-
-}
+/*******************************************************************************
+ * Copyright (c) 2007 Nokia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Nokia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.ui.breakpointactions;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+public class LogActionComposite extends Composite {
+
+	private Button expressionButton;
+	private LogActionPage logActionPage;
+	private Text message;
+
+	public LogActionComposite(Composite parent, int style, LogActionPage logActionPage) {
+		super(parent, style);
+		final GridLayout gridLayout = new GridLayout();
+		gridLayout.numColumns = 2;
+		setLayout(gridLayout);
+
+		this.logActionPage = logActionPage;
+
+		final Label messageToLogLabel = new Label(this, SWT.NONE);
+		messageToLogLabel.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false, 2, 1));
+		messageToLogLabel.setText(Messages.getString("LogActionComposite.0")); //$NON-NLS-1$
+
+		message = new Text(this, SWT.BORDER | SWT.WRAP);
+		message.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true, 2, 1));
+
+		expressionButton = new Button(this, SWT.CHECK);
+		expressionButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(final SelectionEvent e) {
+			}
+		});
+		expressionButton.setText(Messages.getString("LogActionComposite.1")); //$NON-NLS-1$
+		//
+
+		message.setText(this.logActionPage.getLogAction().getMessage());
+		expressionButton.setSelection(this.logActionPage.getLogAction().isEvaluateExpression());
+	}
+
+	protected void checkSubclass() {
+		// Disable the check that prevents subclassing of SWT components
+	}
+
+	public void dispose() {
+		super.dispose();
+	}
+
+	public boolean getIsExpression() {
+		return expressionButton.getSelection();
+	}
+
+	public String getMessage() {
+		return message.getText();
+	}
+
+}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/Messages.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/Messages.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,32 +1,32 @@
-/*******************************************************************************
- * Copyright (c) 2007 Nokia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Nokia - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.debug.ui.breakpointactions;
-
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-public class Messages {
-	private static final String BUNDLE_NAME = "org.eclipse.cdt.debug.ui.breakpointactions.messages"; //$NON-NLS-1$
-
-	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
-
-	private Messages() {
-	}
-
-	public static String getString(String key) {
-		// TODO Auto-generated method stub
-		try {
-			return RESOURCE_BUNDLE.getString(key);
-		} catch (MissingResourceException e) {
-			return '!' + key + '!';
-		}
-	}
-}
+/*******************************************************************************
+ * Copyright (c) 2007 Nokia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Nokia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.ui.breakpointactions;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+public class Messages {
+	private static final String BUNDLE_NAME = "org.eclipse.cdt.debug.ui.breakpointactions.messages"; //$NON-NLS-1$
+
+	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
+
+	private Messages() {
+	}
+
+	public static String getString(String key) {
+		// TODO Auto-generated method stub
+		try {
+			return RESOURCE_BUNDLE.getString(key);
+		} catch (MissingResourceException e) {
+			return '!' + key + '!';
+		}
+	}
+}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/PreferenceConstants.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/PreferenceConstants.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,26 +1,26 @@
-/*******************************************************************************
- * Copyright (c) 2007 Nokia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Nokia - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.debug.ui.breakpointactions;
-
-/**
- * Constant definitions for plug-in preferences
- */
-public class PreferenceConstants {
-
-	public static final String P_PATH = "pathPreference"; //$NON-NLS-1$
-
-	public static final String P_BOOLEAN = "booleanPreference"; //$NON-NLS-1$
-
-	public static final String P_CHOICE = "choicePreference"; //$NON-NLS-1$
-
-	public static final String P_STRING = "stringPreference"; //$NON-NLS-1$
-
-}
+/*******************************************************************************
+ * Copyright (c) 2007 Nokia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Nokia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.ui.breakpointactions;
+
+/**
+ * Constant definitions for plug-in preferences
+ */
+public class PreferenceConstants {
+
+	public static final String P_PATH = "pathPreference"; //$NON-NLS-1$
+
+	public static final String P_BOOLEAN = "booleanPreference"; //$NON-NLS-1$
+
+	public static final String P_CHOICE = "choicePreference"; //$NON-NLS-1$
+
+	public static final String P_STRING = "stringPreference"; //$NON-NLS-1$
+
+}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/PreferenceInitializer.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/PreferenceInitializer.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,34 +1,34 @@
-/*******************************************************************************
- * Copyright (c) 2007 Nokia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Nokia - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.debug.ui.breakpointactions;
-
-import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
-import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
-import org.eclipse.jface.preference.IPreferenceStore;
-
-/**
- * Class used to initialize default preference values.
- */
-public class PreferenceInitializer extends AbstractPreferenceInitializer {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
-	 */
-	public void initializeDefaultPreferences() {
-		IPreferenceStore store = CDebugUIPlugin.getDefault().getPreferenceStore();
-		store.setDefault(PreferenceConstants.P_BOOLEAN, true);
-		store.setDefault(PreferenceConstants.P_CHOICE, "choice2"); //$NON-NLS-1$
-		store.setDefault(PreferenceConstants.P_STRING, Messages.getString("PreferenceInitializer.1")); //$NON-NLS-1$
-	}
-
-}
+/*******************************************************************************
+ * Copyright (c) 2007 Nokia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Nokia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.ui.breakpointactions;
+
+import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+import org.eclipse.jface.preference.IPreferenceStore;
+
+/**
+ * Class used to initialize default preference values.
+ */
+public class PreferenceInitializer extends AbstractPreferenceInitializer {
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
+	 */
+	public void initializeDefaultPreferences() {
+		IPreferenceStore store = CDebugUIPlugin.getDefault().getPreferenceStore();
+		store.setDefault(PreferenceConstants.P_BOOLEAN, true);
+		store.setDefault(PreferenceConstants.P_CHOICE, "choice2"); //$NON-NLS-1$
+		store.setDefault(PreferenceConstants.P_STRING, Messages.getString("PreferenceInitializer.1")); //$NON-NLS-1$
+	}
+
+}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/SoundActionComposite.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/SoundActionComposite.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,164 +1,164 @@
-/*******************************************************************************
- * Copyright (c) 2007 Nokia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Nokia - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.debug.ui.breakpointactions;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.swt.widgets.Label;
-
-public class SoundActionComposite extends Composite {
-
-	private static final String[] soundFileExtensions = new String[] { "*.wav", "*.mid", "*.au", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			"*.aiff" }; //$NON-NLS-1$
-
-	private Combo combo_1;
-	private ModifyListener comboModifyListener = null;
-	private File selectedSoundFile = null;
-	private SoundActionPage soundActionPage;
-	private Label soundFilePathLabel;
-	private Button tryItButton;
-
-	/**
-	 * Create the composite
-	 * 
-	 * @param parent
-	 * @param style
-	 * @param page
-	 */
-	public SoundActionComposite(Composite parent, int style, SoundActionPage page) {
-		super(parent, style);
-		soundActionPage = page;
-		final GridLayout gridLayout = new GridLayout();
-		gridLayout.numColumns = 2;
-		setLayout(gridLayout);
-
-		final Label playSoundLabel = new Label(this, SWT.NONE);
-		playSoundLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
-		playSoundLabel.setText(Messages.getString("SoundActionComposite.4")); //$NON-NLS-1$
-
-		combo_1 = new Combo(this, SWT.READ_ONLY);
-		final GridData gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
-		combo_1.setLayoutData(gridData);
-
-		comboModifyListener = new ModifyListener() {
-			public void modifyText(ModifyEvent e) {
-				if (combo_1.getText().length() > 0) {
-					setSoundFile(combo_1.getText());
-				}
-			}
-		};
-		rebuildRecentSoundsCombo();
-		combo_1.addModifyListener(comboModifyListener);
-
-		final String mediaPath = page.getMediaPath();
-
-		final Button browseButton = new Button(this, SWT.NONE);
-		browseButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				FileDialog dialog = new FileDialog(getShell(), SWT.NONE);
-				dialog.setText(Messages.getString("SoundActionComposite.5")); //$NON-NLS-1$
-				dialog.setFilterExtensions(soundFileExtensions);
-				if (mediaPath.length() > 0)
-					dialog.setFilterPath(mediaPath);
-
-				String res = dialog.open();
-				if (res != null) {
-					setSoundFile(res);
-				}
-			}
-		});
-		browseButton.setText(Messages.getString("SoundActionComposite.6")); //$NON-NLS-1$
-
-		tryItButton = new Button(this, SWT.NONE);
-		tryItButton.setLayoutData(new GridData());
-		tryItButton.setText(Messages.getString("SoundActionComposite.7")); //$NON-NLS-1$
-		tryItButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				File soundFile = new File(soundFilePathLabel.getText());
-				playSoundFile(soundFile);
-			}
-		});
-
-		soundFilePathLabel = new Label(this, SWT.NONE);
-		final GridData gridData_1 = new GridData(GridData.FILL_HORIZONTAL);
-		gridData_1.horizontalSpan = 2;
-		soundFilePathLabel.setLayoutData(gridData_1);
-		soundFilePathLabel.setText(""); //$NON-NLS-1$
-
-		//
-		if (soundActionPage.getSoundAction().getSoundFile() != null)
-			setSoundFile(soundActionPage.getSoundAction().getSoundFile().getAbsolutePath());
-	}
-
-	private void addRecentSound(File soundFile) {
-		soundActionPage.addRecentSound(soundFile);
-		rebuildRecentSoundsCombo();
-	}
-
-	protected void checkSubclass() {
-		// Disable the check that prevents subclassing of SWT components
-	}
-
-	public void dispose() {
-		super.dispose();
-	}
-
-	public File getSoundFile() {
-		return selectedSoundFile;
-	}
-
-	protected void playSoundFile(File soundFile) {
-		SoundAction.playSoundFile(soundFile);
-	}
-
-	private void rebuildRecentSoundsCombo() {
-		combo_1.removeAll();
-
-		ArrayList sortedSounds = new ArrayList(soundActionPage.getRecentSounds());
-		Collections.sort(sortedSounds);
-
-		for (Iterator iter = sortedSounds.iterator(); iter.hasNext();) {
-			File element = (File) iter.next();
-			combo_1.add(element.getAbsolutePath());
-		}
-	}
-
-	private void setSoundFile(String filePath) {
-		combo_1.removeModifyListener(comboModifyListener);
-		File soundFile = new File(filePath);
-		if (soundFile.exists()) {
-			addRecentSound(soundFile);
-			combo_1.setText(soundFile.getAbsolutePath());
-			soundFilePathLabel.setText(filePath);
-			tryItButton.setEnabled(true);
-			selectedSoundFile = soundFile;
-		} else {
-			soundFilePathLabel.setText(Messages.getString("SoundActionComposite.9")); //$NON-NLS-1$
-			tryItButton.setEnabled(false);
-		}
-		combo_1.addModifyListener(comboModifyListener);
-	}
-
-}
+/*******************************************************************************
+ * Copyright (c) 2007 Nokia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Nokia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.ui.breakpointactions;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+
+public class SoundActionComposite extends Composite {
+
+	private static final String[] soundFileExtensions = new String[] { "*.wav", "*.mid", "*.au", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			"*.aiff" }; //$NON-NLS-1$
+
+	private Combo combo_1;
+	private ModifyListener comboModifyListener = null;
+	private File selectedSoundFile = null;
+	private SoundActionPage soundActionPage;
+	private Label soundFilePathLabel;
+	private Button tryItButton;
+
+	/**
+	 * Create the composite
+	 * 
+	 * @param parent
+	 * @param style
+	 * @param page
+	 */
+	public SoundActionComposite(Composite parent, int style, SoundActionPage page) {
+		super(parent, style);
+		soundActionPage = page;
+		final GridLayout gridLayout = new GridLayout();
+		gridLayout.numColumns = 2;
+		setLayout(gridLayout);
+
+		final Label playSoundLabel = new Label(this, SWT.NONE);
+		playSoundLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
+		playSoundLabel.setText(Messages.getString("SoundActionComposite.4")); //$NON-NLS-1$
+
+		combo_1 = new Combo(this, SWT.READ_ONLY);
+		final GridData gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
+		combo_1.setLayoutData(gridData);
+
+		comboModifyListener = new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				if (combo_1.getText().length() > 0) {
+					setSoundFile(combo_1.getText());
+				}
+			}
+		};
+		rebuildRecentSoundsCombo();
+		combo_1.addModifyListener(comboModifyListener);
+
+		final String mediaPath = page.getMediaPath();
+
+		final Button browseButton = new Button(this, SWT.NONE);
+		browseButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				FileDialog dialog = new FileDialog(getShell(), SWT.NONE);
+				dialog.setText(Messages.getString("SoundActionComposite.5")); //$NON-NLS-1$
+				dialog.setFilterExtensions(soundFileExtensions);
+				if (mediaPath.length() > 0)
+					dialog.setFilterPath(mediaPath);
+
+				String res = dialog.open();
+				if (res != null) {
+					setSoundFile(res);
+				}
+			}
+		});
+		browseButton.setText(Messages.getString("SoundActionComposite.6")); //$NON-NLS-1$
+
+		tryItButton = new Button(this, SWT.NONE);
+		tryItButton.setLayoutData(new GridData());
+		tryItButton.setText(Messages.getString("SoundActionComposite.7")); //$NON-NLS-1$
+		tryItButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				File soundFile = new File(soundFilePathLabel.getText());
+				playSoundFile(soundFile);
+			}
+		});
+
+		soundFilePathLabel = new Label(this, SWT.NONE);
+		final GridData gridData_1 = new GridData(GridData.FILL_HORIZONTAL);
+		gridData_1.horizontalSpan = 2;
+		soundFilePathLabel.setLayoutData(gridData_1);
+		soundFilePathLabel.setText(""); //$NON-NLS-1$
+
+		//
+		if (soundActionPage.getSoundAction().getSoundFile() != null)
+			setSoundFile(soundActionPage.getSoundAction().getSoundFile().getAbsolutePath());
+	}
+
+	private void addRecentSound(File soundFile) {
+		soundActionPage.addRecentSound(soundFile);
+		rebuildRecentSoundsCombo();
+	}
+
+	protected void checkSubclass() {
+		// Disable the check that prevents subclassing of SWT components
+	}
+
+	public void dispose() {
+		super.dispose();
+	}
+
+	public File getSoundFile() {
+		return selectedSoundFile;
+	}
+
+	protected void playSoundFile(File soundFile) {
+		SoundAction.playSoundFile(soundFile);
+	}
+
+	private void rebuildRecentSoundsCombo() {
+		combo_1.removeAll();
+
+		ArrayList sortedSounds = new ArrayList(soundActionPage.getRecentSounds());
+		Collections.sort(sortedSounds);
+
+		for (Iterator iter = sortedSounds.iterator(); iter.hasNext();) {
+			File element = (File) iter.next();
+			combo_1.add(element.getAbsolutePath());
+		}
+	}
+
+	private void setSoundFile(String filePath) {
+		combo_1.removeModifyListener(comboModifyListener);
+		File soundFile = new File(filePath);
+		if (soundFile.exists()) {
+			addRecentSound(soundFile);
+			combo_1.setText(soundFile.getAbsolutePath());
+			soundFilePathLabel.setText(filePath);
+			tryItButton.setEnabled(true);
+			selectedSoundFile = soundFile;
+		} else {
+			soundFilePathLabel.setText(Messages.getString("SoundActionComposite.9")); //$NON-NLS-1$
+			tryItButton.setEnabled(false);
+		}
+		combo_1.addModifyListener(comboModifyListener);
+	}
+
+}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/SoundActionPage.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/SoundActionPage.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,237 +1,237 @@
-/*******************************************************************************
- * Copyright (c) 2007 Nokia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Nokia - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.debug.ui.breakpointactions;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.eclipse.cdt.debug.core.breakpointactions.IBreakpointAction;
-import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.PlatformObject;
-import org.eclipse.swt.widgets.Composite;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
-import org.xml.sax.helpers.DefaultHandler;
-
-public class SoundActionPage extends PlatformObject implements IBreakpointActionPage {
-
-	private static final String SOUND_ACTION_RECENT = "SoundBehaviorDialog.recentSounds"; //$NON-NLS-1$
-
-	private static boolean isWindows() {
-		String os = System.getProperty("os.name"); //$NON-NLS-1$
-		return (os != null && os.toLowerCase().startsWith("win")); //$NON-NLS-1$
-	}
-
-	private static boolean isMacOS() {
-		String os = System.getProperty("os.name"); //$NON-NLS-1$
-		return (os != null && os.toLowerCase().startsWith("mac")); //$NON-NLS-1$
-	}
-
-	private SoundActionComposite editor = null;
-	private String mediaPath = ""; //$NON-NLS-1$
-
-	private ArrayList recentSounds = new ArrayList();
-
-	private SoundAction soundAction;
-
-	public SoundActionPage() {
-		if (isWindows())
-			mediaPath = "C:\\WINNT\\Media\\"; //$NON-NLS-1$
-		if (isMacOS())
-			mediaPath = "/System/Library/Sounds"; //$NON-NLS-1$
-
-		loadRecentSounds();
-	}
-
-	public void actionDialogCanceled() {
-	}
-
-	public void actionDialogOK() {
-		saveRecentSounds();
-		soundAction.setSoundFile(editor.getSoundFile());
-	}
-
-	public void addRecentSound(File soundFile) {
-		String soundFilePath = soundFile.getAbsolutePath();
-		int removeIndex = -1;
-		int fileCount = 0;
-		for (Iterator iter = recentSounds.iterator(); iter.hasNext() && removeIndex < 0;) {
-			File element = (File) iter.next();
-			if (element.getAbsolutePath().equals(soundFilePath))
-				removeIndex = fileCount;
-			fileCount++;
-		}
-		if (removeIndex >= 0)
-			recentSounds.remove(removeIndex);
-		recentSounds.add(soundFile);
-		if (recentSounds.size() > 10)
-			recentSounds.remove(0);
-
-	}
-
-	public Composite createComposite(IBreakpointAction action, Composite composite, int style) {
-		this.soundAction = (SoundAction) action;
-		loadRecentSounds();
-		if (soundAction.getSoundFile() == null && recentSounds.size() > 0)
-			soundAction.setSoundFile((File) recentSounds.get(0));
-		editor = new SoundActionComposite(composite, style, this);
-		return editor;
-	}
-
-	public String getMediaPath() {
-		return mediaPath;
-	}
-
-	public ArrayList getRecentSounds() {
-		return recentSounds;
-	}
-
-	public String getSummary() {
-		if (soundAction.getSoundFile() == null)
-			return new String(""); //$NON-NLS-1$
-		return soundAction.getSoundFile().getAbsolutePath();
-	}
-
-	private void initializeRecentSounds() {
-
-		if (isWindows()) {
-			String defaultSounds[] = { "chimes.wav", "chord.wav", "ding.wav", "notify.wav", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-					"tada.wav" }; //$NON-NLS-1$
-
-			for (int i = 0; i < defaultSounds.length; i++) {
-				File soundFile = new File(mediaPath + defaultSounds[i]);
-				if (soundFile.exists())
-					recentSounds.add(soundFile);
-			}
-		}
-		if (isMacOS()) {
-			File macSounds = new File(mediaPath);
-			File[] soundFiles = macSounds.listFiles();
-
-			for (int i = 0; i < soundFiles.length; i++) {
-				String fileExtension = new Path(soundFiles[i].getAbsolutePath()).getFileExtension();
-				if (fileExtension.equalsIgnoreCase("aiff") || fileExtension.equalsIgnoreCase("wav")) //$NON-NLS-1$ //$NON-NLS-2$
-					recentSounds.add(soundFiles[i]);
-
-			}
-		}
-		saveRecentSounds();
-
-	}
-
-	private void loadRecentSounds() {
-		String recentSoundData = CDebugUIPlugin.getDefault().getPreferenceStore().getString(SOUND_ACTION_RECENT);
-
-		if (recentSoundData == null || recentSoundData.length() == 0) {
-			initializeRecentSounds();
-			return;
-		}
-
-		recentSounds = new ArrayList();
-
-		Element root = null;
-		DocumentBuilder parser;
-		try {
-			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
-			parser.setErrorHandler(new DefaultHandler());
-			root = parser.parse(new InputSource(new StringReader(recentSoundData))).getDocumentElement();
-
-			NodeList nodeList = root.getChildNodes();
-			int entryCount = nodeList.getLength();
-
-			for (int i = 0; i < entryCount; i++) {
-				Node node = nodeList.item(i);
-				short type = node.getNodeType();
-				if (type == Node.ELEMENT_NODE) {
-					Element subElement = (Element) node;
-					String nodeName = subElement.getNodeName();
-					if (nodeName.equalsIgnoreCase("soundFileName")) { //$NON-NLS-1$
-						String value = subElement.getAttribute("name"); //$NON-NLS-1$
-						if (value == null)
-							throw new Exception();
-
-						File soundFile = new File(value);
-						if (soundFile.exists()) {
-							recentSounds.add(soundFile);
-						}
-					}
-				}
-			}
-
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		if (recentSounds.size() == 0)
-			initializeRecentSounds();
-	}
-
-	public void saveRecentSounds() {
-		String recentSoundData = new String(""); //$NON-NLS-1$
-
-		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-		DocumentBuilder docBuilder = null;
-		try {
-			docBuilder = dfactory.newDocumentBuilder();
-			Document doc = docBuilder.newDocument();
-
-			Element rootElement = doc.createElement("recentSounds"); //$NON-NLS-1$
-			doc.appendChild(rootElement);
-
-			for (Iterator iter = recentSounds.iterator(); iter.hasNext();) {
-				File soundFile = (File) iter.next();
-
-				Element element = doc.createElement("soundFileName"); //$NON-NLS-1$
-				element.setAttribute("name", soundFile.getAbsolutePath()); //$NON-NLS-1$
-				rootElement.appendChild(element);
-
-			}
-
-			ByteArrayOutputStream s = new ByteArrayOutputStream();
-
-			TransformerFactory factory = TransformerFactory.newInstance();
-			Transformer transformer = factory.newTransformer();
-			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
-			transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
-
-			DOMSource source = new DOMSource(doc);
-			StreamResult outputTarget = new StreamResult(s);
-			transformer.transform(source, outputTarget);
-
-			recentSoundData = s.toString("UTF8"); //$NON-NLS-1$
-
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		CDebugUIPlugin.getDefault().getPreferenceStore().setValue(SOUND_ACTION_RECENT, recentSoundData);
-	}
-
-	public SoundAction getSoundAction() {
-		return soundAction;
-	}
-
-}
+/*******************************************************************************
+ * Copyright (c) 2007 Nokia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Nokia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.ui.breakpointactions;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.eclipse.cdt.debug.core.breakpointactions.IBreakpointAction;
+import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.PlatformObject;
+import org.eclipse.swt.widgets.Composite;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+import org.xml.sax.helpers.DefaultHandler;
+
+public class SoundActionPage extends PlatformObject implements IBreakpointActionPage {
+
+	private static final String SOUND_ACTION_RECENT = "SoundBehaviorDialog.recentSounds"; //$NON-NLS-1$
+
+	private static boolean isWindows() {
+		String os = System.getProperty("os.name"); //$NON-NLS-1$
+		return (os != null && os.toLowerCase().startsWith("win")); //$NON-NLS-1$
+	}
+
+	private static boolean isMacOS() {
+		String os = System.getProperty("os.name"); //$NON-NLS-1$
+		return (os != null && os.toLowerCase().startsWith("mac")); //$NON-NLS-1$
+	}
+
+	private SoundActionComposite editor = null;
+	private String mediaPath = ""; //$NON-NLS-1$
+
+	private ArrayList recentSounds = new ArrayList();
+
+	private SoundAction soundAction;
+
+	public SoundActionPage() {
+		if (isWindows())
+			mediaPath = "C:\\WINNT\\Media\\"; //$NON-NLS-1$
+		if (isMacOS())
+			mediaPath = "/System/Library/Sounds"; //$NON-NLS-1$
+
+		loadRecentSounds();
+	}
+
+	public void actionDialogCanceled() {
+	}
+
+	public void actionDialogOK() {
+		saveRecentSounds();
+		soundAction.setSoundFile(editor.getSoundFile());
+	}
+
+	public void addRecentSound(File soundFile) {
+		String soundFilePath = soundFile.getAbsolutePath();
+		int removeIndex = -1;
+		int fileCount = 0;
+		for (Iterator iter = recentSounds.iterator(); iter.hasNext() && removeIndex < 0;) {
+			File element = (File) iter.next();
+			if (element.getAbsolutePath().equals(soundFilePath))
+				removeIndex = fileCount;
+			fileCount++;
+		}
+		if (removeIndex >= 0)
+			recentSounds.remove(removeIndex);
+		recentSounds.add(soundFile);
+		if (recentSounds.size() > 10)
+			recentSounds.remove(0);
+
+	}
+
+	public Composite createComposite(IBreakpointAction action, Composite composite, int style) {
+		this.soundAction = (SoundAction) action;
+		loadRecentSounds();
+		if (soundAction.getSoundFile() == null && recentSounds.size() > 0)
+			soundAction.setSoundFile((File) recentSounds.get(0));
+		editor = new SoundActionComposite(composite, style, this);
+		return editor;
+	}
+
+	public String getMediaPath() {
+		return mediaPath;
+	}
+
+	public ArrayList getRecentSounds() {
+		return recentSounds;
+	}
+
+	public String getSummary() {
+		if (soundAction.getSoundFile() == null)
+			return new String(""); //$NON-NLS-1$
+		return soundAction.getSoundFile().getAbsolutePath();
+	}
+
+	private void initializeRecentSounds() {
+
+		if (isWindows()) {
+			String defaultSounds[] = { "chimes.wav", "chord.wav", "ding.wav", "notify.wav", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+					"tada.wav" }; //$NON-NLS-1$
+
+			for (int i = 0; i < defaultSounds.length; i++) {
+				File soundFile = new File(mediaPath + defaultSounds[i]);
+				if (soundFile.exists())
+					recentSounds.add(soundFile);
+			}
+		}
+		if (isMacOS()) {
+			File macSounds = new File(mediaPath);
+			File[] soundFiles = macSounds.listFiles();
+
+			for (int i = 0; i < soundFiles.length; i++) {
+				String fileExtension = new Path(soundFiles[i].getAbsolutePath()).getFileExtension();
+				if (fileExtension.equalsIgnoreCase("aiff") || fileExtension.equalsIgnoreCase("wav")) //$NON-NLS-1$ //$NON-NLS-2$
+					recentSounds.add(soundFiles[i]);
+
+			}
+		}
+		saveRecentSounds();
+
+	}
+
+	private void loadRecentSounds() {
+		String recentSoundData = CDebugUIPlugin.getDefault().getPreferenceStore().getString(SOUND_ACTION_RECENT);
+
+		if (recentSoundData == null || recentSoundData.length() == 0) {
+			initializeRecentSounds();
+			return;
+		}
+
+		recentSounds = new ArrayList();
+
+		Element root = null;
+		DocumentBuilder parser;
+		try {
+			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			parser.setErrorHandler(new DefaultHandler());
+			root = parser.parse(new InputSource(new StringReader(recentSoundData))).getDocumentElement();
+
+			NodeList nodeList = root.getChildNodes();
+			int entryCount = nodeList.getLength();
+
+			for (int i = 0; i < entryCount; i++) {
+				Node node = nodeList.item(i);
+				short type = node.getNodeType();
+				if (type == Node.ELEMENT_NODE) {
+					Element subElement = (Element) node;
+					String nodeName = subElement.getNodeName();
+					if (nodeName.equalsIgnoreCase("soundFileName")) { //$NON-NLS-1$
+						String value = subElement.getAttribute("name"); //$NON-NLS-1$
+						if (value == null)
+							throw new Exception();
+
+						File soundFile = new File(value);
+						if (soundFile.exists()) {
+							recentSounds.add(soundFile);
+						}
+					}
+				}
+			}
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		if (recentSounds.size() == 0)
+			initializeRecentSounds();
+	}
+
+	public void saveRecentSounds() {
+		String recentSoundData = new String(""); //$NON-NLS-1$
+
+		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+		DocumentBuilder docBuilder = null;
+		try {
+			docBuilder = dfactory.newDocumentBuilder();
+			Document doc = docBuilder.newDocument();
+
+			Element rootElement = doc.createElement("recentSounds"); //$NON-NLS-1$
+			doc.appendChild(rootElement);
+
+			for (Iterator iter = recentSounds.iterator(); iter.hasNext();) {
+				File soundFile = (File) iter.next();
+
+				Element element = doc.createElement("soundFileName"); //$NON-NLS-1$
+				element.setAttribute("name", soundFile.getAbsolutePath()); //$NON-NLS-1$
+				rootElement.appendChild(element);
+
+			}
+
+			ByteArrayOutputStream s = new ByteArrayOutputStream();
+
+			TransformerFactory factory = TransformerFactory.newInstance();
+			Transformer transformer = factory.newTransformer();
+			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
+			transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
+
+			DOMSource source = new DOMSource(doc);
+			StreamResult outputTarget = new StreamResult(s);
+			transformer.transform(source, outputTarget);
+
+			recentSoundData = s.toString("UTF8"); //$NON-NLS-1$
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		CDebugUIPlugin.getDefault().getPreferenceStore().setValue(SOUND_ACTION_RECENT, recentSoundData);
+	}
+
+	public SoundAction getSoundAction() {
+		return soundAction;
+	}
+
+}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.doc.isv/reference/.cvsignore	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-api
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.doc.isv/reference/extension-points/.cvsignore	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-org_eclipse_cdt_make_core_ScannerConfigurationDiscoveryProfile.html
-org_eclipse_cdt_ui_cPropertyTab.html
-org_eclipse_cdt_ui_DocCommentOwner.html
-org_eclipse_cdt_core_projectConverter.html
-org_eclipse_cdt_core_templateAssociations.html
-org_eclipse_cdt_ui_textHovers.html
-org_eclipse_cdt_ui_CHelpProvider.html
-org_eclipse_cdt_core_templates.html
-org_eclipse_cdt_core_templateProcessTypes.html
-org_eclipse_cdt_ui_completionProposalComputer.html
-org_eclipse_cdt_debug_core_CDebugger.html
-org_eclipse_cdt_managedbuilder_core_ManagedBuildInfo.html
-org_eclipse_cdt_ui_workingSetConfigurations.html
-org_eclipse_cdt_core_CProject.html
-org_eclipse_cdt_core_externalSettingsProvider.html
-org_eclipse_cdt_debug_core_BreakpointExtension.html
-org_eclipse_cdt_make_ui_DiscoveryProfilePage.html
-org_eclipse_cdt_managedbuilder_core_tcModificationInfo.html
-org_eclipse_cdt_ui_quickAssistProcessors.html
-org_eclipse_cdt_core_PathEntryContainerInitializer.html
-org_eclipse_cdt_core_language.html
-org_eclipse_cdt_managedbuilder_core_buildDefinitions.html
-org_eclipse_cdt_ui_ConfigManager.html
-org_eclipse_cdt_core_CBuildConsole.html
-org_eclipse_cdt_managedbuilder_core_buildProperties.html
-org_eclipse_cdt_ui_ProposalFilter.html
-org_eclipse_cdt_ui_IndexerPage.html
-org_eclipse_cdt_ui_newCfgDialog.html
-org_eclipse_cdt_make_core_MakeTargetBuilder.html
-org_eclipse_cdt_core_CIndexer.html
-org_eclipse_cdt_ui_HelpInfo.html
-org_eclipse_cdt_core_CIndex.html
-org_eclipse_cdt_ui_quickFixProcessors.html
-org_eclipse_cdt_ui_CDTWizard.html
-org_eclipse_cdt_managedbuilder_core_projectConverter.html
-org_eclipse_cdt_debug_core_BreakpointActionType.html
-org_eclipse_cdt_managedbuilder_ui_newWizardPages.html
-org_eclipse_cdt_core_CProjectDescriptionStorage.html
-org_eclipse_cdt_ui_PathContainerPage.html
-org_eclipse_cdt_ui_foldingStructureProviders.html
-org_eclipse_cdt_core_CConfigurationDataProvider.html
-org_eclipse_cdt_core_ProcessList.html
-org_eclipse_cdt_core_CodeFormatter.html
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/book.css	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/book.css	Wed Aug 05 17:35:39 2009 -0500
@@ -1,51 +1,51 @@
-/* following font face declarations need to be removed for DBCS */
-
-
-body, h1, h2, h3, h4, p, table, td, caption, th, ul, ol, dl, li, dd, dt {font-family: Arial, sans-serif; color: #000000}
-pre				{ font-family: Courier, monospace}
-
-/* end font face declarations */
-
-/* following font size declarations should be OK for DBCS */
-body, h1, h2, h3, h4, p, table, td, caption, th, ul, ol, dl, li, dd, dt {font-size: 10pt; }
-pre				{ font-size: 10pt}
-
-/* end font size declarations */
-
-body	     { background: #FFFFFF}
-h1           { font-size: 18pt; margin-top: 5; margin-bottom: 1 }	
-h2           { font-size: 14pt; margin-top: 25; margin-bottom: 3 }
-h3           { font-size: 11pt; margin-top: 20; margin-bottom: 3 }
-h4           { font-size: 10pt; margin-top: 20; margin-bottom: 3; font-style: italic }
-p 	     { font-size: 10pt; }
-pre	     { margin-left: 6; font-size: 9pt }
-
-a:link { color: #006699 }
-a:visited { color: #996699 }
-a:hover  { color: #006699 }
-
-ul	     { margin-top: 0; margin-bottom: 10 }
-li	     { margin-top: 0; margin-bottom: 0 } 
-li p	     { margin-top: 0; margin-bottom: 0 } 
-ol	     { margin-top: 0; margin-bottom: 10 }
-dl	     { margin-top: 0; margin-bottom: 10 }
-dt	     { margin-top: 0; margin-bottom: 0; font-weight: bold }
-dd	     { margin-top: 0; margin-bottom: 0 }
-strong	     { font-weight: bold}
-em	     { font-style: italic}
-var	     { font-style: italic}
-div.revision { border-left-style: solid; border-left-width: thin; 
-				   border-left-color: #7B68EE; padding-left:5 }
-th	     { font-weight: bold }
-
-/* Mike Behm's addition to the style sheet */
-.userinput { font-family: monospace; }
-.guitab, .important, .guibutton, .selectblue, .guimenu, .guilabel, 
-.notetitle  {
-     color: #000000;
-     font-family: helvetica, arial, sans-serif;
-     font-weight: bold;
-     }
-div.linux  {display:none;}
-.firsterm {font-style:italic;}
-
+/* following font face declarations need to be removed for DBCS */
+
+
+body, h1, h2, h3, h4, p, table, td, caption, th, ul, ol, dl, li, dd, dt {font-family: Arial, sans-serif; color: #000000}
+pre				{ font-family: Courier, monospace}
+
+/* end font face declarations */
+
+/* following font size declarations should be OK for DBCS */
+body, h1, h2, h3, h4, p, table, td, caption, th, ul, ol, dl, li, dd, dt {font-size: 10pt; }
+pre				{ font-size: 10pt}
+
+/* end font size declarations */
+
+body	     { background: #FFFFFF}
+h1           { font-size: 18pt; margin-top: 5; margin-bottom: 1 }	
+h2           { font-size: 14pt; margin-top: 25; margin-bottom: 3 }
+h3           { font-size: 11pt; margin-top: 20; margin-bottom: 3 }
+h4           { font-size: 10pt; margin-top: 20; margin-bottom: 3; font-style: italic }
+p 	     { font-size: 10pt; }
+pre	     { margin-left: 6; font-size: 9pt }
+
+a:link { color: #006699 }
+a:visited { color: #996699 }
+a:hover  { color: #006699 }
+
+ul	     { margin-top: 0; margin-bottom: 10 }
+li	     { margin-top: 0; margin-bottom: 0 } 
+li p	     { margin-top: 0; margin-bottom: 0 } 
+ol	     { margin-top: 0; margin-bottom: 10 }
+dl	     { margin-top: 0; margin-bottom: 10 }
+dt	     { margin-top: 0; margin-bottom: 0; font-weight: bold }
+dd	     { margin-top: 0; margin-bottom: 0 }
+strong	     { font-weight: bold}
+em	     { font-style: italic}
+var	     { font-style: italic}
+div.revision { border-left-style: solid; border-left-width: thin; 
+				   border-left-color: #7B68EE; padding-left:5 }
+th	     { font-weight: bold }
+
+/* Mike Behm's addition to the style sheet */
+.userinput { font-family: monospace; }
+.guitab, .important, .guibutton, .selectblue, .guimenu, .guilabel, 
+.notetitle  {
+     color: #000000;
+     font-family: helvetica, arial, sans-serif;
+     font-weight: bold;
+     }
+div.linux  {display:none;}
+.firsterm {font-style:italic;}
+
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/concepts/cdt_c_indexer.htm	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/concepts/cdt_c_indexer.htm	Wed Aug 05 17:35:39 2009 -0500
@@ -39,6 +39,8 @@
 <p><img border="0" src="../images/ngconcepts.gif" alt="Related concepts"
  width="143" height="21"> <br>
 <a href="cdt_c_search.htm">C/C++ search</a><br>
+<a href="cdt_c_indexer_open_close.htm">C/C++ Indexer Opening or Closing
+a project</a><br>
 <a href="cdt_c_indexer_prog_bar.htm">C/C++ Indexer Progress Bar</a></p>
 <p><img border="0" src="../images/ngtasks.gif" alt="Related tasks"
  width="143" height="21"><br>
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/concepts/cdt_c_indexer_fullindexer.htm	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/concepts/cdt_c_indexer_fullindexer.htm	Wed Aug 05 17:35:39 2009 -0500
@@ -22,6 +22,8 @@
  width="143" height="21"> <br>
 <a href="cdt_c_indexer.htm">C/C++ Indexer</a><br>
 <a href="cdt_c_search.htm">C/C++ search</a><br>
+<a href="cdt_c_indexer_open_close.htm">C/C++ Indexer Opening or Closing
+a project</a><br>
 <a href="cdt_c_indexer_prog_bar.htm">C/C++ Indexer Progress Bar</a></p>
 <p><img border="0" src="../images/ngtasks.gif" alt="Related tasks"
  width="143" height="21"><br>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/concepts/cdt_c_indexer_open_close.htm	Wed Aug 05 17:35:39 2009 -0500
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html lang="en">
+<head>
+  <meta content="en-us" http-equiv="Content-Language">
+  <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
+  <title>C/C++ Indexer Opening or Closing a project</title>
+  <link href="../help.css" type="text/css" rel="stylesheet">
+</head>
+<body>
+<h1>C/C++ Indexer Opening or Closing a project</h1>
+<p>The user opening a previously closed project results in the entire
+project being re-indexed. </p>
+<p>Closing a project results in the index being deleted. Search
+features will not report any results for closed projects.</p>
+<p><img height="21" width="143" alt="Related concepts"
+ src="../images/ngconcepts.gif" border="0">
+<br>
+<a href="cdt_c_search.htm">C/C++ search</a><br>
+<a href="cdt_c_indexer.htm">C/C++ Indexer</a><br>
+<a href="cdt_c_indexer_prog_bar.htm">C/C++ Indexer Progress Bar</a></p>
+<p><img height="21" width="143" alt="Related tasks"
+ src="../images/ngtasks.gif" border="0"><br>
+<a href="../tasks/cdt_t_sel_search.htm">Selection Searching for C/C++
+elements</a><br>
+<a href="../tasks/cdt_t_set_src_fold.htm">Setting Source Folders</a><br>
+</p>
+<p><img height="21" width="143" alt="Related reference"
+ src="../images/ngref.gif" border="0">
+<br>
+<a href="../reference/cdt_u_search.htm">C/C++ search page, Search
+dialog box</a>
+<br>
+<a href="../reference/cdt_u_prop_general_idx.htm">C/C++ Project Properties, Indexer</a>
+</p>
+<p>&nbsp;</p>
+<img alt="IBM Copyright Statement" src="../images/ng00_07.gif">
+</body>
+</html>
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/concepts/cdt_c_indexer_prog_bar.htm	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/concepts/cdt_c_indexer_prog_bar.htm	Wed Aug 05 17:35:39 2009 -0500
@@ -24,6 +24,8 @@
 <br>
 <a href="cdt_c_search.htm">C/C++ search</a><br>
 <a href="cdt_c_indexer.htm">C/C++ Indexer</a><br>
+<a href="cdt_c_indexer_open_close.htm">C/C++ Indexer Opening or Closing
+a project</a></p>
 <p><img height="21" width="143" alt="Related tasks"
  src="../images/ngtasks.gif" border="0"><br>
 <a href="../tasks/cdt_t_sel_search.htm">Selection Searching for C/C++
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/concepts/cdt_o_concepts.htm	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/concepts/cdt_o_concepts.htm	Wed Aug 05 17:35:39 2009 -0500
@@ -51,6 +51,7 @@
 -->
 <img src="../images/trans.gif" border="0" width="25" height="1" alt=""><a style="text-decoration:none" href="cdt_c_search.htm">C/C++ search</a><br>
 	<img src="../images/trans.gif" border="0" width="50" height="1" alt=""><a style="text-decoration:none" href="cdt_c_indexer.htm">C/C++ Indexer</a><br>
+	<img src="../images/trans.gif" border="0" width="50" height="1" alt=""><a style="text-decoration:none" href="cdt_c_indexer_open_close.htm">C/C++ Indexer Opening or Closing a project</a><br>
 	<img src="../images/trans.gif" border="0" width="50" height="1" alt=""><a style="text-decoration:none" href="cdt_c_indexer_prog_bar.htm">C/C++ Indexer Progress Bar</a><br>
 
 <p><img src="../images/ng00_07.gif" ALT="IBM Corporation Statement" ></p>
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/tasks/cdt_t_set_src_fold.htm	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/tasks/cdt_t_set_src_fold.htm	Wed Aug 05 17:35:39 2009 -0500
@@ -43,6 +43,8 @@
 <br>
 <a href="../concepts/cdt_c_search.htm">C/C++ search</a><br>
 <a href="../concepts/cdt_c_indexer.htm">C/C++ Indexer</a><br>
+<a href="../concepts/cdt_c_indexer_open_close.htm">C/C++ Indexer
+Opening or Closing a project</a><br>
 <a href="../concepts/cdt_c_indexer_prog_bar.htm">C/C++ Indexer Progress
 Bar</a></p>
 <p><img height="21" width="143" alt="Related tasks"
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/topics_Concepts.xml	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.doc.user/topics_Concepts.xml	Wed Aug 05 17:35:39 2009 -0500
@@ -32,6 +32,7 @@
 	</topic>
 	<topic label="C/C++ search" href="concepts/cdt_c_search.htm"> 
 		<topic label="C/C++ Indexer" href="concepts/cdt_c_indexer.htm"/> 
+		<topic label="C/C++ Indexer Opening or Closing a project" href="concepts/cdt_c_indexer_open_close.htm"/> 
 		<topic label="C/C++ Indexer Progress Bar" href="concepts/cdt_c_indexer_prog_bar.htm"/> 
 	</topic>
 </toc>
\ No newline at end of file
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF	Wed Aug 05 17:35:39 2009 -0500
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.cdt.dsf.gdb;singleton:=true
-Bundle-Version: 2.1.0.qualifier
+Bundle-Version: 2.0.0.qualifier
 Bundle-Activator: org.eclipse.cdt.dsf.gdb.internal.GdbPlugin
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.core.runtime,
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/IGdbDebugPreferenceConstants.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/IGdbDebugPreferenceConstants.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,40 +1,40 @@
-/*******************************************************************************
- * Copyright (c) 2009 Ericsson and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Ericsson - initial implementation
- *******************************************************************************/
-package org.eclipse.cdt.dsf.gdb;
-
-import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
-
-
-
-/**
- * @noimplement This interface is not intended to be implemented by clients.
- * @since 2.0
- */
-public interface IGdbDebugPreferenceConstants {
-	
-	/**
-	 * Boolean preference whether to enable GDB traces. Default is <code>true</code>. 
-	 */
-	public static final String PREF_TRACES_ENABLE = "tracesEnable"; //$NON-NLS-1$
-
-	/**
-	 * Boolean preference whether to automatically terminate GDB when the inferior exists. Default is <code>true</code>. 
-	 */
-	public static final String PREF_AUTO_TERMINATE_GDB = "autoTerminateGdb"; //$NON-NLS-1$
-	
-    /**
-     * Help prefixes.
-     */
-    public static final String PREFIX = GdbPlugin.PLUGIN_ID + "."; //$NON-NLS-1$
-    
-    public static final String PREFERENCE_PAGE= PREFIX + "preference_page_context"; //$NON-NLS-1$
-}
-
+/*******************************************************************************
+ * Copyright (c) 2009 Ericsson and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ericsson - initial implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.gdb;
+
+import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
+
+
+
+/**
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @since 2.0
+ */
+public interface IGdbDebugPreferenceConstants {
+	
+	/**
+	 * Boolean preference whether to enable GDB traces. Default is <code>true</code>. 
+	 */
+	public static final String PREF_TRACES_ENABLE = "tracesEnable"; //$NON-NLS-1$
+
+	/**
+	 * Boolean preference whether to automatically terminate GDB when the inferior exists. Default is <code>true</code>. 
+	 */
+	public static final String PREF_AUTO_TERMINATE_GDB = "autoTerminateGdb"; //$NON-NLS-1$
+	
+    /**
+     * Help prefixes.
+     */
+    public static final String PREFIX = GdbPlugin.PLUGIN_ID + "."; //$NON-NLS-1$
+    
+    public static final String PREFERENCE_PAGE= PREFIX + "preference_page_context"; //$NON-NLS-1$
+}
+
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence.java	Wed Aug 05 17:35:39 2009 -0500
@@ -38,11 +38,10 @@
 import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetArgs;
 import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetAutoSolib;
 import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetNonStop;
-import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetPagination;
 import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetSolibSearchPath;
-import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetTargetAsync;
 import org.eclipse.cdt.dsf.mi.service.command.commands.MITargetSelect;
 import org.eclipse.cdt.dsf.mi.service.command.commands.MITargetSelectCore;
+import org.eclipse.cdt.dsf.mi.service.command.commands.RawCommand;
 import org.eclipse.cdt.dsf.mi.service.command.output.MIInfo;
 import org.eclipse.cdt.dsf.service.DsfServicesTracker;
 import org.eclipse.core.runtime.CoreException;
@@ -222,12 +221,12 @@
         	if (isNonStop) {
         		// The raw commands should not be necessary in the official GDB release
         		fCommandControl.queueCommand(
-       				new MIGDBSetTargetAsync(fCommandControl.getContext(), true),
+       				new RawCommand(fCommandControl.getContext(), "set target-async on"), //$NON-NLS-1$
        				new DataRequestMonitor<MIInfo>(getExecutor(), requestMonitor) {
        					@Override
        					protected void handleSuccess() {
        						fCommandControl.queueCommand(
-   								new MIGDBSetPagination(fCommandControl.getContext(), false), 
+   								new RawCommand(fCommandControl.getContext(), "set pagination off"),  //$NON-NLS-1$ 
    								new DataRequestMonitor<MIInfo>(getExecutor(), requestMonitor) {
    									@Override
    									protected void handleSuccess() {
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_0.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_0.java	Wed Aug 05 17:35:39 2009 -0500
@@ -34,7 +34,6 @@
 import org.eclipse.cdt.dsf.mi.service.IMIRunControl;
 import org.eclipse.cdt.dsf.mi.service.MIRunControl;
 import org.eclipse.cdt.dsf.mi.service.MIStack;
-import org.eclipse.cdt.dsf.mi.service.command.commands.CLIRecord;
 import org.eclipse.cdt.dsf.mi.service.command.commands.MIBreakDelete;
 import org.eclipse.cdt.dsf.mi.service.command.commands.MIBreakInsert;
 import org.eclipse.cdt.dsf.mi.service.command.commands.MICommand;
@@ -45,6 +44,7 @@
 import org.eclipse.cdt.dsf.mi.service.command.commands.MIExecReverseStep;
 import org.eclipse.cdt.dsf.mi.service.command.commands.MIExecReverseStepInstruction;
 import org.eclipse.cdt.dsf.mi.service.command.commands.MIExecUncall;
+import org.eclipse.cdt.dsf.mi.service.command.commands.RawCommand;
 import org.eclipse.cdt.dsf.mi.service.command.events.MIBreakpointHitEvent;
 import org.eclipse.cdt.dsf.mi.service.command.events.MIInferiorExitEvent;
 import org.eclipse.cdt.dsf.mi.service.command.events.MIStoppedEvent;
@@ -424,15 +424,27 @@
     		return;
     	}
     	
-    	getConnection().queueCommand(
-    			new CLIRecord(context, enable),
-    			new DataRequestMonitor<MIInfo>(getExecutor(), rm) {
-    				@Override
-    				public void handleSuccess() {
-    					setReverseModeEnabled(enable);
-    					rm.done();
-    				}
-    			});
+    	if (enable) {
+        	getConnection().queueCommand(
+        			new RawCommand(context, "record"), //$NON-NLS-1$
+        			new DataRequestMonitor<MIInfo>(getExecutor(), rm) {
+        				@Override
+        				public void handleSuccess() {
+        					setReverseModeEnabled(true);
+        					rm.done();
+        				}
+        			});
+    	} else {
+        	getConnection().queueCommand(
+        			new RawCommand(context, "record stop"), //$NON-NLS-1$
+        			new DataRequestMonitor<MIInfo>(getExecutor(), rm) {
+        				@Override
+        				public void handleSuccess() {
+        					setReverseModeEnabled(false);
+        					rm.done();
+        				}
+        			});
+    	}
 	}
     
 	/** @since 2.0 */
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/AbstractMIControl.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/AbstractMIControl.java	Wed Aug 05 17:35:39 2009 -0500
@@ -44,7 +44,6 @@
 import org.eclipse.cdt.dsf.mi.service.command.commands.MICommand;
 import org.eclipse.cdt.dsf.mi.service.command.commands.MIStackSelectFrame;
 import org.eclipse.cdt.dsf.mi.service.command.commands.MIThreadSelect;
-import org.eclipse.cdt.dsf.mi.service.command.commands.RawCommand;
 import org.eclipse.cdt.dsf.mi.service.command.output.MIConst;
 import org.eclipse.cdt.dsf.mi.service.command.output.MIInfo;
 import org.eclipse.cdt.dsf.mi.service.command.output.MIList;
@@ -68,8 +67,6 @@
 public abstract class AbstractMIControl extends AbstractDsfService
     implements ICommandControlService
 {
-	private static final String MI_TRACE_IDENTIFIER = " [MI]  "; //$NON-NLS-1$
-	
     /*
 	 *  Thread control variables for the transmit and receive threads.
 	 */
@@ -320,12 +317,7 @@
 					}
 				}
 
-				if (!(handle.getCommand() instanceof RawCommand)) {
-					// Only generate a token id if the command is not a RawCommand
-					// RawCommands are sent to GDB without an answer expected, so we don't
-					// need a token id.  In fact, GDB will fail if we send one in this case.
-					handle.generateTokenId();
-				}
+		    	handle.generateTokenId();
 		    	fTxCommands.add(handle);
 			}
 		}
@@ -536,10 +528,7 @@
                     /*
                      *  We note that this is an outstanding request at this point.
                      */
-                    if (!(commandHandle.getCommand() instanceof RawCommand)) {
-                    	// RawCommands will not get an answer, so we cannot put them in the receive queue.
-                    	fRxCommands.put(commandHandle.getTokenId(), commandHandle);
-                    }
+                    fRxCommands.put(commandHandle.getTokenId(), commandHandle);
                 }
                 
                 /*
@@ -551,9 +540,6 @@
                 if (fUseThreadAndFrameOptions && commandHandle.getCommand().supportsThreadAndFrameOptions()) {
                 	str = commandHandle.getTokenId() + commandHandle.getCommand().constructCommand(commandHandle.getThreadId(),
                 			                                                                       commandHandle.getStackFrameId());
-                } else if (commandHandle.getCommand() instanceof RawCommand) {
-                	// RawCommands CANNOT have a token id: GDB would read it as part of the RawCommand!
-                	str = commandHandle.getCommand().constructCommand();
                 } else {
                 	str = commandHandle.getTokenId() + commandHandle.getCommand().constructCommand();
                 }
@@ -563,7 +549,7 @@
                         fOutputStream.write(str.getBytes());
                         fOutputStream.flush();
 
-                        GdbPlugin.debug(GdbPlugin.getDebugTime() + MI_TRACE_IDENTIFIER + str);
+                        GdbPlugin.debug(GdbPlugin.getDebugTime() + " " + str); //$NON-NLS-1$
                         getExecutor().execute(new DsfRunnable() {
                         	public void run() {
                         		if (getMITracingStream() != null) {
@@ -615,7 +601,7 @@
                 String line;
                 while ((line = reader.readLine()) != null) {
                     if (line.length() != 0) {
-                        GdbPlugin.debug(GdbPlugin.getDebugTime() + MI_TRACE_IDENTIFIER + line + "\n"); //$NON-NLS-1$
+                        GdbPlugin.debug(GdbPlugin.getDebugTime() + " " + line +"\n"); //$NON-NLS-1$ //$NON-NLS-2$
                         
                         final String finalLine = line;
                         getExecutor().execute(new DsfRunnable() {
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/CLIRecord.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Ericsson and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Ericsson - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.dsf.mi.service.command.commands;
-
-import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlDMContext;
-import org.eclipse.cdt.dsf.mi.service.command.output.MIInfo;
-
-/**
- * This command turns on on off the recording of "Process Record and Replay".
- * 
- * @since 2.1
- */
-public class CLIRecord extends CLICommand<MIInfo> {
-	public CLIRecord(ICommandControlDMContext ctx, boolean enable) {
-		super(ctx, enable ? "record" : "record stop"); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/ExprMetaCommand.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/ExprMetaCommand.java	Wed Aug 05 17:35:39 2009 -0500
@@ -10,9 +10,7 @@
  *******************************************************************************/
 package org.eclipse.cdt.dsf.mi.service.command.commands;
 
-import org.eclipse.cdt.dsf.datamodel.DMContexts;
 import org.eclipse.cdt.dsf.datamodel.IDMContext;
-import org.eclipse.cdt.dsf.debug.service.IExpressions.IExpressionDMContext;
 import org.eclipse.cdt.dsf.debug.service.command.ICommand;
 import org.eclipse.cdt.dsf.debug.service.command.ICommandResult;
 
@@ -54,13 +52,7 @@
     
     @Override
     public String toString() {
-    	IExpressionDMContext exprDmc = DMContexts.getAncestorOfType(fCtx, IExpressionDMContext.class);
-    	if (exprDmc != null) {
-    		return getClass().getSimpleName() + "(\"" + //$NON-NLS-1$
-    				exprDmc.getExpression() + "\")"; //$NON-NLS-1$
-    	} else {
-    		return getClass().getName() + (fCtx == null ? "null" : fCtx.toString()); //$NON-NLS-1$
-    	}
+        return getClass().getName() + (fCtx == null ? "null" : fCtx.toString()); //$NON-NLS-1$
     }
     
     public String getCommandControlFilter() {
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/ExprMetaGetValue.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/ExprMetaGetValue.java	Wed Aug 05 17:35:39 2009 -0500
@@ -10,8 +10,6 @@
  *******************************************************************************/
 package org.eclipse.cdt.dsf.mi.service.command.commands;
 
-import org.eclipse.cdt.dsf.datamodel.DMContexts;
-import org.eclipse.cdt.dsf.debug.service.IExpressions.IExpressionDMContext;
 import org.eclipse.cdt.dsf.debug.service.IFormattedValues.FormattedValueDMContext;
 import org.eclipse.cdt.dsf.mi.service.command.output.ExprMetaGetValueInfo;
 
@@ -20,16 +18,4 @@
 	public ExprMetaGetValue(FormattedValueDMContext ctx) {
 		super(ctx);
 	}
-	
-    @Override
-    public String toString() {
-    	IExpressionDMContext exprDmc = DMContexts.getAncestorOfType(getContext(), IExpressionDMContext.class);
-    	if (exprDmc != null) {
-    		return getClass().getSimpleName() + "(\"" + //$NON-NLS-1$
-    				exprDmc.getExpression() + "\", " + //$NON-NLS-1$
-    				((FormattedValueDMContext)getContext()).getFormatID() + ")"; //$NON-NLS-1$
-    	} else {
-    		return super.toString();
-    	}
-    }
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIExecContinue.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIExecContinue.java	Wed Aug 05 17:35:39 2009 -0500
@@ -37,8 +37,8 @@
     }
 
     /**
-	 * @since 2.1
-	 */
+     * @since 2.0
+     */
     public MIExecContinue(IExecutionDMContext dmc, String groupId) {
     	this(dmc, false, groupId);
     }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIExecInterrupt.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIExecInterrupt.java	Wed Aug 05 17:35:39 2009 -0500
@@ -42,8 +42,8 @@
     }
     
     /**
-	 * @since 2.1
-	 */
+     * @since 2.0
+     */
     public MIExecInterrupt(IExecutionDMContext dmc, String groupId) {
     	this(dmc, false, groupId);
     }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetPagination.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Ericsson and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Ericsson - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.dsf.mi.service.command.commands;
-
-import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlDMContext;
-
-/**
- * 
- * -gdb-set pagination [on | off]
- *     
- * @since 2.1
- */
-public class MIGDBSetPagination extends MIGDBSet 
-{
-    public MIGDBSetPagination(ICommandControlDMContext ctx, boolean isSet) {
-        super(ctx, new String[] {"pagination", isSet ? "on" : "off"});//$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
-    }
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetTargetAsync.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Ericsson and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Ericsson - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.dsf.mi.service.command.commands;
-
-import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlDMContext;
-
-/**
- * 
- * -gdb-set target-async [on | off]
- * 
- * @since 2.1
- */
-public class MIGDBSetTargetAsync extends MIGDBSet 
-{
-    public MIGDBSetTargetAsync(ICommandControlDMContext ctx, boolean isSet) {
-        super(ctx, new String[] {"target-async", isSet ? "on" : "off"});//$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
-    }
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/ExprMetaGetAttributesInfo.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/ExprMetaGetAttributesInfo.java	Wed Aug 05 17:35:39 2009 -0500
@@ -26,9 +26,4 @@
 	public <V extends ICommandResult> V getSubsetResult(ICommand<V> command) {
 		return null;
 	}
-
-	@Override
-	public String toString() {
-		return getClass().getSimpleName() + " (" + getEditable() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-	}
 }
\ No newline at end of file
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/ExprMetaGetChildCountInfo.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/ExprMetaGetChildCountInfo.java	Wed Aug 05 17:35:39 2009 -0500
@@ -26,9 +26,4 @@
 	public <V extends ICommandResult> V getSubsetResult(ICommand<V> command) {
 		return null;
 	}
-	
-	@Override
-	public String toString() {
-		return getClass().getSimpleName() + " (" + getChildNum() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-	}
 }
\ No newline at end of file
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/ExprMetaGetChildrenInfo.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/ExprMetaGetChildrenInfo.java	Wed Aug 05 17:35:39 2009 -0500
@@ -27,11 +27,4 @@
 	public <V extends ICommandResult> V getSubsetResult(ICommand<V> command) {
 		return null;
 	}
-	
-	@Override
-	public String toString() {
-		return getClass().getSimpleName() + " [Array of " +  //$NON-NLS-1$
-				(getChildrenExpressions() == null ? 0 : getChildrenExpressions().length) +
-				" children]"; //$NON-NLS-1$
-	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/ExprMetaGetValueInfo.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/ExprMetaGetValueInfo.java	Wed Aug 05 17:35:39 2009 -0500
@@ -26,9 +26,4 @@
 		public <V extends ICommandResult> V getSubsetResult(ICommand<V> command) {
 			return null;
 		}
-		
-		@Override
-		public String toString() {
-			return getClass().getSimpleName() + " (" + getValue() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-		}
 	}
\ No newline at end of file
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/ExprMetaGetVarInfo.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/ExprMetaGetVarInfo.java	Wed Aug 05 17:35:39 2009 -0500
@@ -35,11 +35,4 @@
 	public <V extends ICommandResult> V getSubsetResult(ICommand<V> command) {
 		return null;
 	}
-
-	@Override
-	public String toString() {
-		return getClass().getSimpleName() + " (" + //$NON-NLS-1$ 
-				getExpr() + ", " + getNumChildren() + ", " +  //$NON-NLS-1$ //$NON-NLS-2$
-				getType() + ", " + getEditable() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.ui/META-INF/MANIFEST.MF	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.ui/META-INF/MANIFEST.MF	Wed Aug 05 17:35:39 2009 -0500
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.cdt.dsf.ui;singleton:=true
-Bundle-Version: 2.1.0.qualifier
+Bundle-Version: 2.0.1.qualifier
 Bundle-Activator: org.eclipse.cdt.dsf.internal.ui.DsfUIPlugin
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.ui,
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/memory/RefreshAction.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/memory/RefreshAction.java	Wed Aug 05 17:35:39 2009 -0500
@@ -15,9 +15,9 @@
 import org.eclipse.debug.core.DebugEvent;
 import org.eclipse.debug.core.IDebugEventSetListener;
 import org.eclipse.debug.core.model.IMemoryBlock;
-import org.eclipse.debug.internal.ui.views.memory.MemoryView;
 import org.eclipse.debug.ui.memory.IMemoryRendering;
 import org.eclipse.debug.ui.memory.IMemoryRenderingContainer;
+import org.eclipse.debug.ui.memory.IMemoryRenderingSite;
 import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
@@ -33,10 +33,10 @@
 
 	private IMemoryBlock fMemoryBlock = null;
 	
-	private MemoryView fView;
+	private IMemoryRenderingSite fsite;
 	
 	public void init(IViewPart view) {
-		fView = (MemoryView) view;
+		fsite = (IMemoryRenderingSite) view;
 	}
 
 	public void run(IAction action) {
@@ -44,7 +44,7 @@
 		if(fMemoryBlock instanceof IMemoryBlockUpdatePolicyProvider)
 		{
 			((IMemoryBlockUpdatePolicyProvider) fMemoryBlock).clearCache();
-			IMemoryRenderingContainer containers[] = fView.getMemoryRenderingContainers();
+			IMemoryRenderingContainer containers[] = fsite.getMemoryRenderingContainers();
 			for(int i = 0; i < containers.length; i++)
 			{
 				IMemoryRendering renderings[] = containers[i].getRenderings();
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf/.options	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.dsf/.options	Wed Aug 05 17:35:39 2009 -0500
@@ -1,4 +1,3 @@
 org.eclipse.cdt.dsf/debug = false
 org.eclipse.cdt.dsf/debug/executor = false
 org.eclipse.cdt.dsf/debug/executorName = 
-org.eclipse.cdt.dsf/debugCache = false
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/concurrent/DsfExecutable.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/concurrent/DsfExecutable.java	Wed Aug 05 17:35:39 2009 -0500
@@ -26,7 +26,7 @@
  * 
  * @since 1.0
  */
-@ThreadSafe
+@Immutable
 public class DsfExecutable {
     /** 
      * Flag indicating that tracing of the DSF executor is enabled.  It enables
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/concurrent/Sequence.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/concurrent/Sequence.java	Wed Aug 05 17:35:39 2009 -0500
@@ -40,13 +40,13 @@
  * <br> 2. the method is executed by a subsystem
  * <br> 3. when the method is finished it calls another method and passes 
  * the original callback to it
- * <br> 4. steps 2-3 are repeated a number of times
+ * <br> 4. steps 2-3 are repeated number of times
  * <br> 5. when the last method in a chain is executed, it submits the original
  * RequestMonitor callback
  * </li>
  * <p>
  * This pattern is very useful in itself, but it proves very difficult to follow
- * because the methods can be scattered across many classes and systems.  Also
+ * because the methods can be scattered accross many classes and systems.  Also
  * if progress reporting, cancellability, and roll-back ability is required, it
  * has to be re-implemented every time.  The Sequence class tries to address
  * this problem by containing this pattern in a single class. 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/command/CommandCache.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/command/CommandCache.java	Wed Aug 05 17:35:39 2009 -0500
@@ -28,7 +28,6 @@
 import org.eclipse.cdt.dsf.internal.DsfPlugin;
 import org.eclipse.cdt.dsf.service.DsfSession;
 import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Status;
 
 /**
@@ -159,56 +158,6 @@
     
     private ArrayList<CommandInfo> fPendingQWaitingForCoalescedCompletion = new ArrayList<CommandInfo>();
     
-    private static boolean DEBUG = false;
-	private static final String CACHE_TRACE_IDENTIFIER = " [CHE]"; //$NON-NLS-1$
-	private static String BLANK_CACHE_TRACE_IDENTIFIER = ""; //$NON-NLS-1$
-	static {
-        DEBUG = "true".equals(Platform.getDebugOption("org.eclipse.cdt.dsf/debugCache"));  //$NON-NLS-1$//$NON-NLS-2$
-		for (int i=0; i<CACHE_TRACE_IDENTIFIER.length(); i++) {
-			BLANK_CACHE_TRACE_IDENTIFIER += " "; //$NON-NLS-1$
-		}
-    }  
-
-	private void debug(String message) {
-		debug(message, ""); //$NON-NLS-1$
-    }
-    
-    private void debug(String message, String prefix) {
-    	if (DEBUG) {
-    		// The message can span more than one line
-    		String[] multiLine = message.split("\n"); //$NON-NLS-1$
-    		
-			// Create a blank prefix for proper alignment
-    		String blankPrefix = ""; //$NON-NLS-1$
-    		for (int i=0; i<prefix.length(); i++) {
-    			blankPrefix += " "; //$NON-NLS-1$
-    		}
-
-    		for (int i = 0; i < multiLine.length; i++) {
-    			String traceIdentifier;
-    			if (i == 0) {
-    	    		// For the first line we prepend the cache identifier string
-    				traceIdentifier = CACHE_TRACE_IDENTIFIER + prefix;
-    				
-    			} else {
-    	    		// For all other lines we prepend a blank prefix for proper alignment
-    				traceIdentifier = BLANK_CACHE_TRACE_IDENTIFIER + blankPrefix;
-    			}
-    				
-    			message = DsfPlugin.getDebugTime() + traceIdentifier + 
-    						" " + multiLine[i]; //$NON-NLS-1$
-
-    			// Make sure our lines are not too long
-    			while (message.length() > 100) {
-    				String partial = message.substring(0, 100) + "\\"; //$NON-NLS-1$
-    				message = message.substring(100);
-    				System.out.println(partial);
-    			}
-    			System.out.println(message);
-    		}
-    	}
-    }
-
     public CommandCache(DsfSession session, ICommandControl control) {
         fSession = session;
         fCommandControl = control;
@@ -307,15 +256,12 @@
          */ 
         if(fCachedContexts.get(context) != null && fCachedContexts.get(context).containsKey(cachedCmd)){
         	CommandResultInfo result = fCachedContexts.get(context).get(cachedCmd);
-        	debug(command.toString().trim());
             if (result.getStatus().getSeverity() <= IStatus.INFO) {
             	@SuppressWarnings("unchecked") 
             	V v = (V)result.getData();
             	rm.setData(v);
-            	debug(v.toString());
             } else {
             	rm.setStatus(result.getStatus());
-            	debug(result.getStatus().toString());
             }
             rm.done();
             return;
@@ -325,8 +271,6 @@
          *  Return an error if the target is available anymore.
          */ 
         if (!isTargetAvailable(command.getContext())) {
-        	debug(command.toString().trim(), "[N/A]"); //$NON-NLS-1$
-
             rm.setStatus(new Status(IStatus.ERROR, DsfPlugin.PLUGIN_ID, IDsfStatusConstants.INVALID_STATE, "Target not available.", null)); //$NON-NLS-1$
             rm.done();
             return;
@@ -339,14 +283,12 @@
         for ( CommandInfo sentCommand : fPendingQCommandsSent ) {
             if ( sentCommand.equals( cachedCmd )) {
                 sentCommand.getRequestMonitorList().add(genericDone);
-            	debug(command.toString().trim(), "[SNT]"); //$NON-NLS-1$
                 return;
             }
         }
         for ( CommandInfo notYetSentCommand : fPendingQCommandsNotYetSent ) {
             if ( notYetSentCommand.equals( cachedCmd )) {
                 notYetSentCommand.getRequestMonitorList().add(genericDone);
-            	debug(command.toString().trim(), "[SND]"); //$NON-NLS-1$
                 return;
             }
         }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf.pda.ui/.cvsignore	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-bin
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf.pda.ui/src/org/eclipse/cdt/examples/dsf/pda/ui/PDAAdapterFactory.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf.pda.ui/src/org/eclipse/cdt/examples/dsf/pda/ui/PDAAdapterFactory.java	Wed Aug 05 17:35:39 2009 -0500
@@ -10,14 +10,43 @@
  *******************************************************************************/
 package org.eclipse.cdt.examples.dsf.pda.ui;
 
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.WeakHashMap;
+
+import org.eclipse.cdt.dsf.concurrent.Immutable;
 import org.eclipse.cdt.dsf.concurrent.ThreadSafe;
+import org.eclipse.cdt.dsf.debug.ui.actions.DsfResumeCommand;
+import org.eclipse.cdt.dsf.debug.ui.actions.DsfStepIntoCommand;
+import org.eclipse.cdt.dsf.debug.ui.actions.DsfStepOverCommand;
+import org.eclipse.cdt.dsf.debug.ui.actions.DsfStepReturnCommand;
+import org.eclipse.cdt.dsf.debug.ui.actions.DsfSuspendCommand;
+import org.eclipse.cdt.dsf.debug.ui.sourcelookup.DsfSourceDisplayAdapter;
+import org.eclipse.cdt.dsf.debug.ui.viewmodel.SteppingController;
+import org.eclipse.cdt.dsf.debug.ui.viewmodel.launch.DefaultDsfModelSelectionPolicyFactory;
 import org.eclipse.cdt.dsf.service.DsfSession;
+import org.eclipse.cdt.examples.dsf.pda.PDAPlugin;
 import org.eclipse.cdt.examples.dsf.pda.launch.PDALaunch;
+import org.eclipse.cdt.examples.dsf.pda.ui.actions.PDATerminateCommand;
+import org.eclipse.cdt.examples.dsf.pda.ui.viewmodel.PDAVMAdapter;
 import org.eclipse.core.runtime.IAdapterFactory;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchesListener2;
+import org.eclipse.debug.core.commands.IResumeHandler;
+import org.eclipse.debug.core.commands.IStepIntoHandler;
+import org.eclipse.debug.core.commands.IStepOverHandler;
+import org.eclipse.debug.core.commands.IStepReturnHandler;
+import org.eclipse.debug.core.commands.ISuspendHandler;
+import org.eclipse.debug.core.commands.ITerminateHandler;
+import org.eclipse.debug.core.model.IDebugModelProvider;
+import org.eclipse.debug.core.sourcelookup.ISourceLookupDirector;
 import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentationFactory;
 import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider;
 import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxyFactory;
-import org.eclipse.debug.ui.contexts.ISuspendTrigger;
+import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelSelectionPolicyFactory;
+import org.eclipse.debug.ui.sourcelookup.ISourceDisplay;
 
 /**
  * The adapter factory is the central point of control of view model and other
@@ -32,8 +61,146 @@
  */
 @ThreadSafe
 @SuppressWarnings({"restriction"})
-public class PDAAdapterFactory implements IAdapterFactory 
+public class PDAAdapterFactory implements IAdapterFactory, ILaunchesListener2
 {
+    /**
+     * Contains the set of adapters that are created for each launch instance.
+     */
+    @Immutable
+    private static class LaunchAdapterSet {
+        // View Model adapter
+        final PDAVMAdapter fViewModelAdapter;
+        
+        // Source lookup and positioning adapter
+        final DsfSourceDisplayAdapter fSourceDisplayAdapter;
+        
+        // Command adapters
+        final DsfStepIntoCommand fStepIntoCommand;
+        final DsfStepOverCommand fStepOverCommand;
+        final DsfStepReturnCommand fStepReturnCommand;
+        final DsfSuspendCommand fSuspendCommand;
+        final DsfResumeCommand fResumeCommand;
+        final PDATerminateCommand fTerminateCommand;
+        
+        // Adapters for integration with other UI actions
+        final IDebugModelProvider fDebugModelProvider;
+        final PDALaunch fLaunch;
+
+		final SteppingController fSteppingController;
+
+		private IModelSelectionPolicyFactory fModelSelectionPolicyFactory;
+
+        LaunchAdapterSet(PDALaunch launch) {
+            // Initialize launch and session.
+            fLaunch = launch;
+            DsfSession session = launch.getSession();
+            
+            // register stepping controller
+            fSteppingController = new SteppingController(session);
+            session.registerModelAdapter(SteppingController.class, fSteppingController);
+
+            // Initialize VM
+            fViewModelAdapter = new PDAVMAdapter(session, fSteppingController);
+
+            // Initialize source lookup
+            fSourceDisplayAdapter = new DsfSourceDisplayAdapter(session, (ISourceLookupDirector)launch.getSourceLocator(), fSteppingController);
+            session.registerModelAdapter(ISourceDisplay.class, fSourceDisplayAdapter);
+
+            // Default selection policy
+            fModelSelectionPolicyFactory = new DefaultDsfModelSelectionPolicyFactory();
+            session.registerModelAdapter(IModelSelectionPolicyFactory.class, fModelSelectionPolicyFactory);
+            
+            // Initialize retargetable command handler.
+            fStepIntoCommand = new DsfStepIntoCommand(session, null);
+            fStepOverCommand = new DsfStepOverCommand(session, null);
+            fStepReturnCommand = new DsfStepReturnCommand(session);
+            fSuspendCommand = new DsfSuspendCommand(session);
+            fResumeCommand = new DsfResumeCommand(session);
+            fTerminateCommand = new PDATerminateCommand(session);
+            session.registerModelAdapter(IStepIntoHandler.class, fStepIntoCommand);
+            session.registerModelAdapter(IStepOverHandler.class, fStepOverCommand);
+            session.registerModelAdapter(IStepReturnHandler.class, fStepReturnCommand);
+            session.registerModelAdapter(ISuspendHandler.class, fSuspendCommand);
+            session.registerModelAdapter(IResumeHandler.class, fResumeCommand);
+            session.registerModelAdapter(ITerminateHandler.class, fTerminateCommand);
+
+            // Initialize debug model provider
+            fDebugModelProvider = new IDebugModelProvider() {
+                public String[] getModelIdentifiers() {
+                    return new String[] { PDAPlugin.ID_PDA_DEBUG_MODEL };
+                }
+            };
+            session.registerModelAdapter(IDebugModelProvider.class, fDebugModelProvider);
+            
+            // Register the launch as an adapter This ensures that the launch,
+            // and debug model ID will be associated with all DMContexts from this
+            // session.
+            session.registerModelAdapter(ILaunch.class, fLaunch);
+        }
+        
+        void dispose() {
+            DsfSession session = fLaunch.getSession();
+
+            fViewModelAdapter.dispose();
+
+            session.unregisterModelAdapter(ISourceDisplay.class);
+            if (fSourceDisplayAdapter != null) fSourceDisplayAdapter.dispose();
+            
+            session.unregisterModelAdapter(SteppingController.class);
+            fSteppingController.dispose();
+
+            session.unregisterModelAdapter(IModelSelectionPolicyFactory.class);
+
+            session.unregisterModelAdapter(IStepIntoHandler.class);
+            session.unregisterModelAdapter(IStepOverHandler.class);
+            session.unregisterModelAdapter(IStepReturnHandler.class);
+            session.unregisterModelAdapter(ISuspendHandler.class);
+            session.unregisterModelAdapter(IResumeHandler.class);
+            session.unregisterModelAdapter(ITerminateHandler.class);
+            fStepIntoCommand.dispose();
+            fStepOverCommand.dispose();
+            fStepReturnCommand.dispose();
+            fSuspendCommand.dispose();
+            fResumeCommand.dispose();
+            fTerminateCommand.dispose();
+        }
+    }
+
+    /**
+     * Active adapter sets.  They are accessed using the launch instance 
+     * which owns the debug services session. 
+     */
+    private static Map<PDALaunch, LaunchAdapterSet> fgLaunchAdapterSets =
+        Collections.synchronizedMap(new HashMap<PDALaunch, LaunchAdapterSet>());
+ 
+    /**
+     * Map of launches for which adapter sets have already been disposed.
+     * This map (used as a set) is maintained in order to avoid re-creating an 
+     * adapter set after the launch was removed from the launch manager, but 
+     * while the launch is still being held by other classes which may 
+     * request its adapters.  A weak map is used to avoid leaking 
+     * memory once the launches are no longer referenced.
+     * <p>
+     * Access to this map is synchronized using the fgLaunchAdapterSets 
+     * instance.
+     * </p>
+     */
+    private static Map<ILaunch, Object> fgDisposedLaunchAdapterSets =
+        new WeakHashMap<ILaunch, Object>();
+
+	static void disposeAdapterSet(ILaunch launch) {
+		synchronized(fgLaunchAdapterSets) {
+            if ( fgLaunchAdapterSets.containsKey(launch) ) {
+                fgLaunchAdapterSets.remove(launch).dispose();
+                fgDisposedLaunchAdapterSets.put(launch, null);
+            }
+		}
+	}
+
+    public PDAAdapterFactory() {
+        DebugPlugin.getDefault().getLaunchManager().addLaunchListener(this);
+    }
+
     // This IAdapterFactory method returns adapters for the PDA launch object only.
     @SuppressWarnings("unchecked") // IAdapterFactory is Java 1.3
     public Object getAdapter(Object adaptableObject, Class adapterType) {
@@ -48,12 +215,26 @@
         DsfSession session = launch.getSession();
         if (session == null) return null;
 
-        SessionAdapterSet adapterSet = PDAUIPlugin.getDefault().getAdapterSet(launch);
+        // Find the correct set of adapters based on the launch.  If not found
+        // it means that we have a new launch, and we have to create a
+        // new set of adapters.
+        LaunchAdapterSet adapterSet;
+        synchronized(fgLaunchAdapterSets) {
+            // The adapter set for the given launch was already disposed.  
+            // Return a null adapter.
+            if (fgDisposedLaunchAdapterSets.containsKey(launch)) {
+                return null;
+            }
+            adapterSet = fgLaunchAdapterSets.get(launch);
+            if (adapterSet == null) {
+                adapterSet = new LaunchAdapterSet(launch);
+                fgLaunchAdapterSets.put(launch, adapterSet);
+            }
+        }
         
         // Returns the adapter type for the launch object.
         if (adapterType.equals(IElementContentProvider.class)) return adapterSet.fViewModelAdapter;
         else if (adapterType.equals(IModelProxyFactory.class)) return adapterSet.fViewModelAdapter;
-        else if (adapterType.equals(ISuspendTrigger.class)) return adapterSet.fSuspendTrigger;
         else return null;
     }
 
@@ -62,4 +243,24 @@
         return new Class[] { IElementContentProvider.class, IModelProxyFactory.class, IColumnPresentationFactory.class };
     }
 
+    public void launchesRemoved(ILaunch[] launches) {
+        // Dispose the set of adapters for a launch only after the launch is
+        // removed from the view.  If the launch is terminated, the adapters
+        // are still needed to populate the contents of the view.
+        for (ILaunch launch : launches) {
+            if (launch instanceof PDALaunch) {
+            	disposeAdapterSet(launch);
+            }
+        }
+    }
+
+    public void launchesTerminated(ILaunch[] launches) {
+    }
+
+    public void launchesAdded(ILaunch[] launches) {
+    }
+    
+    public void launchesChanged(ILaunch[] launches) {
+    }
+    
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf.pda.ui/src/org/eclipse/cdt/examples/dsf/pda/ui/PDAUIPlugin.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf.pda.ui/src/org/eclipse/cdt/examples/dsf/pda/ui/PDAUIPlugin.java	Wed Aug 05 17:35:39 2009 -0500
@@ -13,16 +13,12 @@
 package org.eclipse.cdt.examples.dsf.pda.ui;
 
 import java.net.URL;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.WeakHashMap;
 
-import org.eclipse.cdt.dsf.service.DsfSession;
 import org.eclipse.cdt.examples.dsf.pda.launch.PDALaunch;
 import org.eclipse.debug.core.DebugPlugin;
 import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchesListener2;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.resource.ImageRegistry;
 import org.eclipse.swt.graphics.Color;
@@ -35,7 +31,7 @@
 /**
  * The main plugin class to be used in the desktop.
  */
-public class PDAUIPlugin extends AbstractUIPlugin implements ILaunchesListener2{
+public class PDAUIPlugin extends AbstractUIPlugin {
     
     public static String PLUGIN_ID = "org.eclipse.cdt.examples.dsf.pda.ui "; 
     
@@ -63,38 +59,6 @@
      */
     private Map<RGB, Color> fColors = new HashMap<RGB, Color>();
     	
-    /**
-     * Active adapter sets.  They are accessed using the DSF session ID 
-     * which owns the debug services. 
-     */
-    private Map<String, SessionAdapterSet> fSessionAdapterSets =
-        Collections.synchronizedMap(new HashMap<String, SessionAdapterSet>());
- 
-    /**
-     * Map of launches for which adapter sets have already been disposed.
-     * This map (used as a set) is maintained in order to avoid re-creating an 
-     * adapter set after the launch was removed from the launch manager, but 
-     * while the launch is still being held by other classes which may 
-     * request its adapters.  A weak map is used to avoid leaking 
-     * memory once the launches are no longer referenced.
-     * <p>
-     * Access to this map is synchronized using the fSessionAdapterSets 
-     * instance.
-     * </p>
-     */
-    private Map<ILaunch, Object> fDisposedSessionAdapterSets =
-        new WeakHashMap<ILaunch, Object>();
-
-    private void disposeAdapterSet(PDALaunch launch) {
-        String sessionId = launch.getSession().getId();
-        synchronized(fSessionAdapterSets) {
-            if ( fSessionAdapterSets.containsKey(sessionId) ) {
-                fSessionAdapterSets.remove(sessionId).dispose();
-                fDisposedSessionAdapterSets.put(launch, null);
-            }
-        }
-    }
-
 	/**
 	 * The constructor.
 	 */
@@ -110,7 +74,10 @@
 	public void start(BundleContext context) throws Exception {
         fContext = context;
 		super.start(context);
-        DebugPlugin.getDefault().getLaunchManager().addLaunchListener(this);
+//		Toggles single threaded adapter example
+//		IAdapterManager adapterManager = Platform.getAdapterManager();
+//		IAdapterFactory factory = new AdapterFactory();
+//		adapterManager.registerAdapters(factory, PDADebugTarget.class);
 	}
 
 	/**
@@ -118,7 +85,6 @@
 	 */
 	@Override
 	public void stop(BundleContext context) throws Exception {
-        DebugPlugin.getDefault().getLaunchManager().removeLaunchListener(this);
 		disposeAdapterSets();
 		super.stop(context);
 		plugin = null;
@@ -175,66 +141,15 @@
         return color;
     }
     
-    SessionAdapterSet getAdapterSet(PDALaunch launch) {
-        // Find the correct set of adapters based on the launch.  If not found
-        // it means that we have a new launch, and we have to create a
-        // new set of adapters.
-        SessionAdapterSet adapterSet;
-        synchronized(fSessionAdapterSets) {
-            // The adapter set for the given launch was already disposed.  
-            // Return a null adapter.
-            if (fDisposedSessionAdapterSets.containsKey(launch)) {
-                return null;
-            }
-            String sessionId = launch.getSession().getId();
-            adapterSet = fSessionAdapterSets.get(sessionId);
-            if (adapterSet == null) {
-                adapterSet = new SessionAdapterSet(launch);
-                fSessionAdapterSets.put(sessionId, adapterSet);
-            }
-        }
-        return adapterSet;
-    }
-    
-    SessionAdapterSet getAdapterSet(String sessionId) {
-        DsfSession session = DsfSession.getSession(sessionId);
-        ILaunch launch = (ILaunch)session.getModelAdapter(ILaunch.class);
-        if (launch instanceof PDALaunch) {
-            return getAdapterSet((PDALaunch)launch);
-        }
-        return null;
-    }
-    
 	/**
 	 * Dispose adapter sets for all launches.
 	 */
 	private void disposeAdapterSets() {
         for (ILaunch launch : DebugPlugin.getDefault().getLaunchManager().getLaunches()) {
             if (launch instanceof PDALaunch) {
-                disposeAdapterSet((PDALaunch)launch);
+                PDAAdapterFactory.disposeAdapterSet(launch);
             }
         }
 	}
 
-    public void launchesRemoved(ILaunch[] launches) {
-        // Dispose the set of adapters for a launch only after the launch is
-        // removed from the view.  If the launch is terminated, the adapters
-        // are still needed to populate the contents of the view.
-        for (ILaunch launch : launches) {
-            if (launch instanceof PDALaunch) {
-                disposeAdapterSet((PDALaunch)launch);
-            }
-        }
-    }
-
-    public void launchesTerminated(ILaunch[] launches) {
-    }
-
-    public void launchesAdded(ILaunch[] launches) {
-    }
-    
-    public void launchesChanged(ILaunch[] launches) {
-    }
-
-}
-
+ }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf.pda.ui/src/org/eclipse/cdt/examples/dsf/pda/ui/SessionAdapterSet.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,145 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Wind River Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Wind River Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.examples.dsf.pda.ui;
-
-import org.eclipse.cdt.dsf.datamodel.IDMContext;
-import org.eclipse.cdt.dsf.debug.ui.actions.DsfResumeCommand;
-import org.eclipse.cdt.dsf.debug.ui.actions.DsfStepIntoCommand;
-import org.eclipse.cdt.dsf.debug.ui.actions.DsfStepOverCommand;
-import org.eclipse.cdt.dsf.debug.ui.actions.DsfStepReturnCommand;
-import org.eclipse.cdt.dsf.debug.ui.actions.DsfSuspendCommand;
-import org.eclipse.cdt.dsf.debug.ui.contexts.DsfSuspendTrigger;
-import org.eclipse.cdt.dsf.debug.ui.sourcelookup.DsfSourceDisplayAdapter;
-import org.eclipse.cdt.dsf.debug.ui.viewmodel.SteppingController;
-import org.eclipse.cdt.dsf.debug.ui.viewmodel.launch.DefaultDsfModelSelectionPolicyFactory;
-import org.eclipse.cdt.dsf.debug.ui.viewmodel.launch.DefaultDsfSelectionPolicy;
-import org.eclipse.cdt.dsf.service.DsfSession;
-import org.eclipse.cdt.dsf.ui.viewmodel.datamodel.IDMVMContext;
-import org.eclipse.cdt.examples.dsf.pda.PDAPlugin;
-import org.eclipse.cdt.examples.dsf.pda.launch.PDALaunch;
-import org.eclipse.cdt.examples.dsf.pda.ui.actions.PDATerminateCommand;
-import org.eclipse.cdt.examples.dsf.pda.ui.viewmodel.PDAVMAdapter;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.commands.IResumeHandler;
-import org.eclipse.debug.core.commands.IStepIntoHandler;
-import org.eclipse.debug.core.commands.IStepOverHandler;
-import org.eclipse.debug.core.commands.IStepReturnHandler;
-import org.eclipse.debug.core.commands.ISuspendHandler;
-import org.eclipse.debug.core.commands.ITerminateHandler;
-import org.eclipse.debug.core.model.IDebugModelProvider;
-import org.eclipse.debug.core.sourcelookup.ISourceLookupDirector;
-import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelSelectionPolicy;
-import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelSelectionPolicyFactory;
-import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
-import org.eclipse.debug.ui.IDebugUIConstants;
-import org.eclipse.debug.ui.sourcelookup.ISourceDisplay;
-
-/**
- * Contains the set of adapters that are created for each session instance.
- */
-class SessionAdapterSet {
-    // View Model adapter
-    final PDAVMAdapter fViewModelAdapter;
-    
-    // Source lookup and positioning adapter
-    final DsfSourceDisplayAdapter fSourceDisplayAdapter;
-    
-    // Command adapters
-    final DsfStepIntoCommand fStepIntoCommand;
-    final DsfStepOverCommand fStepOverCommand;
-    final DsfStepReturnCommand fStepReturnCommand;
-    final DsfSuspendCommand fSuspendCommand;
-    final DsfResumeCommand fResumeCommand;
-    final PDATerminateCommand fTerminateCommand;
-    final DsfSuspendTrigger fSuspendTrigger;
-    
-    // Adapters for integration with other UI actions
-    final IDebugModelProvider fDebugModelProvider;
-    final PDALaunch fLaunch;
-
-    final SteppingController fSteppingController;
-
-    final IModelSelectionPolicyFactory fModelSelectionPolicyFactory;
-
-    SessionAdapterSet(PDALaunch launch) {
-        // Initialize launch and session.
-        fLaunch = launch;
-        DsfSession session = launch.getSession();
-        
-        // register stepping controller
-        fSteppingController = new SteppingController(session);
-        session.registerModelAdapter(SteppingController.class, fSteppingController);
-
-        // Initialize VM
-        fViewModelAdapter = new PDAVMAdapter(session, fSteppingController);
-
-        // Initialize source lookup
-        fSourceDisplayAdapter = new DsfSourceDisplayAdapter(session, (ISourceLookupDirector)launch.getSourceLocator(), fSteppingController);
-        session.registerModelAdapter(ISourceDisplay.class, fSourceDisplayAdapter);
-
-        // Default selection policy
-        fModelSelectionPolicyFactory = new DefaultDsfModelSelectionPolicyFactory();
-        session.registerModelAdapter(IModelSelectionPolicyFactory.class, fModelSelectionPolicyFactory);
-        
-        // Initialize retargetable command handler.
-        fStepIntoCommand = new DsfStepIntoCommand(session, null);
-        fStepOverCommand = new DsfStepOverCommand(session, null);
-        fStepReturnCommand = new DsfStepReturnCommand(session);
-        fSuspendCommand = new DsfSuspendCommand(session);
-        fResumeCommand = new DsfResumeCommand(session);
-        fTerminateCommand = new PDATerminateCommand(session);
-        fSuspendTrigger = new DsfSuspendTrigger(session, fLaunch);
-
-        session.registerModelAdapter(IStepIntoHandler.class, fStepIntoCommand);
-        session.registerModelAdapter(IStepOverHandler.class, fStepOverCommand);
-        session.registerModelAdapter(IStepReturnHandler.class, fStepReturnCommand);
-        session.registerModelAdapter(ISuspendHandler.class, fSuspendCommand);
-        session.registerModelAdapter(IResumeHandler.class, fResumeCommand);
-        session.registerModelAdapter(ITerminateHandler.class, fTerminateCommand);
-
-        // Initialize debug model provider
-        fDebugModelProvider = new IDebugModelProvider() {
-            public String[] getModelIdentifiers() {
-                return new String[] { PDAPlugin.ID_PDA_DEBUG_MODEL };
-            }
-        };
-        session.registerModelAdapter(IDebugModelProvider.class, fDebugModelProvider);
-    }
-    
-    void dispose() {
-        DsfSession session = fLaunch.getSession();
-
-        fViewModelAdapter.dispose();
-
-        session.unregisterModelAdapter(ISourceDisplay.class);
-        if (fSourceDisplayAdapter != null) fSourceDisplayAdapter.dispose();
-        
-        session.unregisterModelAdapter(SteppingController.class);
-        fSteppingController.dispose();
-
-        session.unregisterModelAdapter(IModelSelectionPolicyFactory.class);
-
-        session.unregisterModelAdapter(IStepIntoHandler.class);
-        session.unregisterModelAdapter(IStepOverHandler.class);
-        session.unregisterModelAdapter(IStepReturnHandler.class);
-        session.unregisterModelAdapter(ISuspendHandler.class);
-        session.unregisterModelAdapter(IResumeHandler.class);
-        session.unregisterModelAdapter(ITerminateHandler.class);
-        fStepIntoCommand.dispose();
-        fStepOverCommand.dispose();
-        fStepReturnCommand.dispose();
-        fSuspendCommand.dispose();
-        fResumeCommand.dispose();
-        fTerminateCommand.dispose();
-        fSuspendTrigger.dispose();
-    }
-    
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/launch/PDALaunch.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/launch/PDALaunch.java	Wed Aug 05 17:35:39 2009 -0500
@@ -24,7 +24,6 @@
 import org.eclipse.core.runtime.MultiStatus;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.ILaunch;
 import org.eclipse.debug.core.ILaunchConfiguration;
 import org.eclipse.debug.core.Launch;
 import org.eclipse.debug.core.model.ISourceLocator;
@@ -74,11 +73,6 @@
         dsfExecutor.prestartCoreThread();
         fExecutor = dsfExecutor;
         fSession = DsfSession.startSession(fExecutor, PDAPlugin.ID_PDA_DEBUG_MODEL);
-
-        // Register the launch as an adapter This ensures that the launch,
-        // and debug model ID will be associated with all DMContexts from this
-        // session.
-        fSession.registerModelAdapter(ILaunch.class, this);
     }
 
     /**
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/service/PDACommandControl.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/service/PDACommandControl.java	Wed Aug 05 17:35:39 2009 -0500
@@ -155,11 +155,7 @@
         // Register the service with OSGi as the last step in initialization of 
         // the service.
         register(
-            new String[] { 
-                ICommandControl.class.getName(), 
-                ICommandControlService.class.getName(), 
-                PDACommandControl.class.getName() 
-            }, 
+            new String[]{ ICommandControl.class.getName(), PDACommandControl.class.getName() }, 
             new Hashtable<String,String>());
 
         rm.done();
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/service/PDARunControl.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/service/PDARunControl.java	Wed Aug 05 17:35:39 2009 -0500
@@ -34,7 +34,6 @@
 import org.eclipse.cdt.examples.dsf.pda.service.commands.PDAResumeCommand;
 import org.eclipse.cdt.examples.dsf.pda.service.commands.PDAStepCommand;
 import org.eclipse.cdt.examples.dsf.pda.service.commands.PDAStepReturnCommand;
-import org.eclipse.cdt.examples.dsf.pda.service.commands.PDASuspendCommand;
 import org.eclipse.cdt.examples.dsf.pda.service.commands.PDAVMResumeCommand;
 import org.eclipse.cdt.examples.dsf.pda.service.commands.PDAVMSuspendCommand;
 import org.osgi.framework.BundleContext;
@@ -555,7 +554,7 @@
                 final PDAThreadDMContext threadCtx = (PDAThreadDMContext)context;
                 fThreads.get(threadCtx.getID()).fSuspendPending = true;
                 fCommandControl.queueCommand(
-                    new PDASuspendCommand(threadCtx),
+                    new PDAVMSuspendCommand(fDMContext),
                     new DataRequestMonitor<PDACommandResult>(getExecutor(), rm) { 
                         @Override
                         protected void handleFailure() {
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/dataviewer/AsyncDataViewer.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,272 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 Wind River Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Wind River Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.examples.dsf.dataviewer;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
-import org.eclipse.cdt.dsf.concurrent.ConfinedToDsfExecutor;
-import org.eclipse.cdt.dsf.concurrent.ThreadSafe;
-import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
-import org.eclipse.cdt.dsf.concurrent.DsfExecutor;
-import org.eclipse.cdt.dsf.concurrent.ImmediateExecutor;
-import org.eclipse.cdt.dsf.concurrent.Query;
-import org.eclipse.cdt.dsf.ui.concurrent.DisplayDsfExecutor;
-import org.eclipse.jface.viewers.ILazyContentProvider;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-
-/**
- * Data viewer based on a table, which reads data using asynchronous methods.
- * <p>
- * This viewer implements the {@link ILazyContentProvider} interface 
- * which is used by the JFace TableViewer class to populate a Table.  This 
- * interface contains separate asynchronous methods for requesting the count 
- * and values for individual indexes, which neatly correspond to the methods
- * in {@link IDataGenerator}.  As an added optimization, this viewer 
- * implementation checks for the range of visible items in the view upon each 
- * request, and it cancels old requests which scroll out of view but have not
- * been completed yet.  However, it is up to the data generator implementation 
- * to check the canceled state of the requests and ignore them.
- * </p>
- */
-@ConfinedToDsfExecutor("fDisplayExecutor")
-public class AsyncDataViewer 
-    implements ILazyContentProvider, IDataGenerator.Listener
-{
-    // Executor to use instead of Display.asyncExec().
-    @ThreadSafe
-    final private DsfExecutor fDisplayExecutor;
-    
-    // The viewer and generator that this content provider using.
-    final private TableViewer fViewer;
-    final private IDataGenerator fDataGenerator;
-
-    // Fields used in request cancellation logic.
-    private List<ValueDataRequestMonitor> fItemDataRequestMonitors = new LinkedList<ValueDataRequestMonitor>();
-    private Set<Integer> fIndexesToCancel = new HashSet<Integer>();
-    private int fCancelCallsPending = 0;
-    
-    public AsyncDataViewer(TableViewer viewer, IDataGenerator generator) {
-        fViewer = viewer;
-        fDisplayExecutor = DisplayDsfExecutor.getDisplayDsfExecutor(fViewer.getTable().getDisplay());
-        fDataGenerator = generator;
-        fDataGenerator.addListener(this);
-    }    
-    
-    public void dispose() {
-        fDataGenerator.removeListener(this);
-    }
-
-    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-        // Set the initial count to the viewer after the input is set.
-        queryItemCount();
-    }
-
-    public void updateElement(final int index) {
-        // Calculate the visible index range.
-        final int topIdx = fViewer.getTable().getTopIndex();
-        final int botIdx = topIdx + getVisibleItemCount(topIdx);
-
-        // Request the item for the given index.
-        queryValue(index);
-
-        // Invoke a cancel task with a delay.  The delay allows multiple cancel 
-        // calls to be combined together improving performance of the viewer.
-        fCancelCallsPending++;
-        fDisplayExecutor.schedule(
-            new Runnable() { public void run() {
-                cancelStaleRequests(topIdx, botIdx);
-            }}, 
-            1, TimeUnit.MILLISECONDS);
-    }
-        
-    private int getVisibleItemCount(int top) {
-        Table table = fViewer.getTable();
-        int itemCount = table.getItemCount();
-        return Math.min((table.getBounds().height / table.getItemHeight()) + 2, itemCount - top);
-    }   
-    
-    @ThreadSafe
-    public void countChanged() {
-        queryItemCount();
-    }
-    
-    @ThreadSafe
-    public void valuesChanged(final Set<Integer> indexes) {
-        // Mark the changed items in table viewer as dirty, this will 
-        // trigger update requests for these indexes if they are 
-        // visible in the viewer.
-        final TableViewer tableViewer = fViewer;
-        fDisplayExecutor.execute( new Runnable() { 
-            public void run() {
-                if (!fViewer.getTable().isDisposed()) {
-                    for (Integer index : indexes) {
-                        tableViewer.clear(index);
-                    }
-                }
-            }});
-    }
-    
-
-    private void queryItemCount() {
-        // Request count from data provider.  When the count is returned, we 
-        // have to re-dispatch into the display thread to avoid calling
-        // the table widget on the DSF dispatch thread.
-        fIndexesToCancel.clear();
-        fDataGenerator.getCount( 
-            // Use the display executor to construct the request monitor, this 
-            // will cause the handleCompleted() method to be automatically
-            // called on the display thread.
-            new DataRequestMonitor<Integer>(fDisplayExecutor, null) {
-                @Override
-                protected void handleCompleted() {
-                    if (!fViewer.getTable().isDisposed()) {
-                        fViewer.setItemCount(getData());
-                        fViewer.getTable().clearAll();
-                    }
-                }
-            }); 
-        
-    }
-
-    
-    // Dedicated class for data item requests.  This class holds the index
-    // argument so it can be examined when canceling stale requests.
-    private class ValueDataRequestMonitor extends DataRequestMonitor<String> {
-        
-        /** Index is used when canceling stale requests. */
-        int fIndex;
-        
-        ValueDataRequestMonitor(int index) {
-            super(fDisplayExecutor, null);
-            fIndex = index; 
-        }
-
-        @Override
-        protected void handleCompleted() {
-            fItemDataRequestMonitors.remove(this);
-
-            // Check if the request completed successfully, otherwise ignore it.
-            if (isSuccess()) {
-                if (!fViewer.getTable().isDisposed()) {
-                    fViewer.replace(getData(), fIndex);
-                }
-            }
-        }
-    }
-
-    private void queryValue(final int index) {
-        ValueDataRequestMonitor rm = new ValueDataRequestMonitor(index);
-        fItemDataRequestMonitors.add(rm);
-        fDataGenerator.getValue(index, rm); 
-    }
-    
-    private void cancelStaleRequests(int topIdx, int botIdx) {
-        // Decrement the count of outstanding cancel calls.
-        fCancelCallsPending--;
-
-        // Must check again, in case disposed while re-dispatching.
-        if (fDataGenerator == null || fViewer.getTable().isDisposed()) return;
-
-        // Go through the outstanding requests and cancel any that 
-        // are not visible anymore.
-        for (Iterator<ValueDataRequestMonitor> itr = fItemDataRequestMonitors.iterator(); itr.hasNext();) {
-            ValueDataRequestMonitor item = itr.next();
-            if (item.fIndex < topIdx || item.fIndex > botIdx) {
-                // Set the item to canceled status, so that the data provider 
-                // will ignore it.
-                item.cancel();
-                
-                // Add the item index to list of indexes that were canceled, 
-                // which will be sent to the table widget. 
-                fIndexesToCancel.add(item.fIndex);
-                
-                // Remove the item from the outstanding cancel requests.
-                itr.remove(); 
-            }
-        }
-        if (!fIndexesToCancel.isEmpty() && fCancelCallsPending == 0) {
-            Set<Integer> canceledIdxs = fIndexesToCancel;
-            fIndexesToCancel = new HashSet<Integer>();
-            
-            // Clear the indexes of the canceled request, so that the 
-            // viewer knows to request them again when needed.  
-            // Note: clearing using TableViewer.clear(int) seems very
-            // inefficient, it's better to use Table.clear(int[]).
-            int[] canceledIdxsArray = new int[canceledIdxs.size()];
-            int i = 0;
-            for (Integer index : canceledIdxs) {
-                canceledIdxsArray[i++] = index;
-            }
-            fViewer.getTable().clear(canceledIdxsArray);
-        }
-    }
-    
-    
-    public static void main(String[] args) {
-        // Create the shell to hold the viewer.
-        Display display = new Display();
-        Shell shell = new Shell(display, SWT.SHELL_TRIM);
-        shell.setLayout(new GridLayout());
-        GridData data = new GridData(GridData.FILL_BOTH);
-        shell.setLayoutData(data);
-        Font font = new Font(display, "Courier", 10, SWT.NORMAL);
-
-        // Create the table viewer.
-        TableViewer tableViewer = new TableViewer(shell, SWT.BORDER | SWT.VIRTUAL);
-        tableViewer.getControl().setLayoutData(data);
-
-        // Create the data generator.
-        final IDataGenerator generator = new DataGeneratorWithExecutor();
-        
-        // Create the content provider which will populate the viewer.
-        AsyncDataViewer contentProvider = new AsyncDataViewer(tableViewer, generator);
-        tableViewer.setContentProvider(contentProvider);
-        tableViewer.setInput(new Object());
-
-        // Open the shell and service the display dispatch loop until user
-        // closes the shell.
-        shell.open();
-        while (!shell.isDisposed()) {
-            if (!display.readAndDispatch())
-                display.sleep();
-        }
-        
-        // The IDataGenerator.shutdown() method is asynchronous, this requires
-        // using a query again in order to wait for its completion.
-        Query<Object> shutdownQuery = new Query<Object>() {
-            @Override
-            protected void execute(DataRequestMonitor<Object> rm) {
-                generator.shutdown(rm);
-            }
-        };
-        ImmediateExecutor.getInstance().execute(shutdownQuery);
-        try {
-            shutdownQuery.get();
-        } catch (Exception e) {} 
-        
-        // Shut down the display.
-        font.dispose();    
-        display.dispose();
-    }
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/dataviewer/DataGeneratorWithExecutor.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,336 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 Wind River Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Wind River Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.examples.dsf.dataviewer;
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Random;
-import java.util.Set;
-import java.util.concurrent.RejectedExecutionException;
-import java.util.concurrent.TimeUnit;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
-import org.eclipse.cdt.dsf.concurrent.DefaultDsfExecutor;
-import org.eclipse.cdt.dsf.concurrent.DsfExecutor;
-import org.eclipse.cdt.dsf.concurrent.DsfRunnable;
-import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
-import org.eclipse.cdt.examples.dsf.DsfExamplesPlugin;
-
-/**
- * DSF Executor-based implementation of the data generator.
- * <p>
- * This generator uses a queue of client requests and processes these
- * requests periodically using a DSF executor.  The main feature of this
- * generator is that it uses the executor as its only synchronization object.
- * This means that all the fields with the exception of the executor can only
- * be accessed while running in the executor thread.
- * </p>
- */
-//TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-//indicating allowed thread access to this class/method/member
-public class DataGeneratorWithExecutor implements IDataGenerator {
-
-    // Request objects are used to serialize the interface calls into objects
-    // which can then be pushed into a queue.
-    // TODO Ecercise 4 - Add an annotationindicating allowed concurrency access
-    // Hint: Request and its subclasses have all their fields declared as final.
-    abstract class Request {
-        final RequestMonitor fRequestMonitor;
-        
-        Request(RequestMonitor rm) {
-            fRequestMonitor = rm;
-        }
-    }
-    
-    // TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-    // indicating allowed thread access to this class/method/member
-    class CountRequest extends Request {
-        CountRequest(DataRequestMonitor<Integer> rm) { 
-            super(rm); 
-        }
-    } 
-
-    // TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-    // indicating allowed thread access to this class/method/member
-    class ItemRequest extends Request {
-        final int fIndex;
-        ItemRequest(int index, DataRequestMonitor<String> rm) { 
-            super(rm);
-            fIndex = index; 
-        }
-    } 
-
-    // The executor used to access all internal data of the generator.
-    // TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-    // indicating allowed thread access to this class/method/member
-    // Hint: If a member does not have an annotation, the programmer can assume
-    // that the concurrency rule that applies to the class also applies to this
-    // member.
-    private DsfExecutor fExecutor;
-    
-    // Main request queue of the data generator.  The getValue(), getCount(), 
-    // and shutdown() methods write into the queue, while the serviceQueue()
-    // method reads from it.
-    // The executor used to access all internal data of the generator.
-    // TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-    // indicating allowed thread access to this class/method/member
-    private List<Request> fQueue = new LinkedList<Request>();
-
-    // List of listeners is not synchronized, it also has to be accessed
-    // using the executor.
-    // TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-    // indicating allowed thread access to this class/method/member
-    private List<Listener> fListeners = new LinkedList<Listener>();
-
-    // Current number of elements in this generator.
-    // TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-    // indicating allowed thread access to this class/method/member
-    private int fCount = MIN_COUNT;
-    
-    // Counter used to determine when to reset the element count.
-    // TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-    // indicating allowed thread access to this class/method/member
-    private int fCountResetTrigger = 0;
-    
-    // Elements which were modified since the last reset.
-    // TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-    // indicating allowed thread access to this class/method/member
-    private Set<Integer> fChangedIndexes = new HashSet<Integer>();
-    
-    // Flag used to ensure that requests are processed sequentially.
-    // TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-    // indicating allowed thread access to this class/method/member
-    private boolean fServiceQueueInProgress = false;
- 
-    // TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-    // indicating allowed thread access to this class/method/member
-    public DataGeneratorWithExecutor() {
-        // Create the executor
-        fExecutor = new DefaultDsfExecutor("Supplier Executor");
-        
-        // Schedule a runnable to make the random changes.
-        fExecutor.scheduleAtFixedRate(
-            new DsfRunnable() {
-                public void run() {
-                    randomChanges();
-                }
-            },
-            RANDOM_CHANGE_INTERVAL, 
-            RANDOM_CHANGE_INTERVAL, 
-            TimeUnit.MILLISECONDS);
-    }
-     
-    // TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-    // indicating allowed thread access to this class/method/member
-    public void shutdown(final RequestMonitor rm) {
-        try {
-            fExecutor.execute( new DsfRunnable() {
-                public void run() {
-                    // Empty the queue of requests and fail them.
-                    for (Request request : fQueue) {
-                        request.fRequestMonitor.setStatus(
-                            new Status(IStatus.ERROR, DsfExamplesPlugin.PLUGIN_ID, "Supplier shut down"));
-                        request.fRequestMonitor.done();
-                    }
-                    fQueue.clear();
-                    
-                    // Kill executor.
-                    fExecutor.shutdown();
-                    rm.done();
-                }
-            });
-        } catch (RejectedExecutionException e) {
-            rm.setStatus(new Status(IStatus.ERROR, DsfExamplesPlugin.PLUGIN_ID, "Supplier shut down"));
-            rm.done();
-        }
-    }
-
-    // TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-    // indicating allowed thread access to this class/method/member
-    public void getCount(final DataRequestMonitor<Integer> rm) {
-        try {
-            fExecutor.execute( new DsfRunnable() {
-                public void run() {
-                    fQueue.add(new CountRequest(rm));
-                    serviceQueue();
-                }
-            });
-        } catch (RejectedExecutionException e) {
-            rm.setStatus(new Status(IStatus.ERROR, DsfExamplesPlugin.PLUGIN_ID, "Supplier shut down"));
-            rm.done();
-        }
-    }
-    
-    // TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-    // indicating allowed thread access to this class/method/member
-    public void getValue(final int index, final DataRequestMonitor<String> rm) { 
-        try {
-            fExecutor.execute( new DsfRunnable() {
-                public void run() {
-                    fQueue.add(new ItemRequest(index, rm));
-                    serviceQueue();
-                }
-            });
-        } catch (RejectedExecutionException e) {
-            rm.setStatus(new Status(IStatus.ERROR, DsfExamplesPlugin.PLUGIN_ID, "Supplier shut down"));
-            rm.done();
-        }
-    } 
-
-    // TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-    // indicating allowed thread access to this class/method/member
-    public void addListener(final Listener listener) {
-        try {
-            fExecutor.execute( new DsfRunnable() {
-                public void run() {
-                    fListeners.add(listener);
-                }
-            });
-        } catch (RejectedExecutionException e) {}
-    }
-
-    // TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-    // indicating allowed thread access to this class/method/member
-    public void removeListener(final Listener listener) {
-        try {
-            fExecutor.execute( new DsfRunnable() {
-                public void run() {
-                    fListeners.remove(listener);
-                }
-            });
-        } catch (RejectedExecutionException e) {}
-    }
-
-    // Main processing function of this generator.
-    // TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-    // indicating allowed thread access to this class/method/member
-    private void serviceQueue() {
-        
-        // TODO Exercise 3 - Add logic to discard cancelled requests from queue.
-        // Hint: Since serviceQueue() is called using the executor, and the 
-        // fQueue list can only be modified when running in the executor 
-        // thread.  This method can safely iterate and modify fQueue without 
-        // risk of race conditions or concurrent modification exceptions.
-        
-        // If a queue servicing is already scheduled, do nothing.
-        if (fServiceQueueInProgress) {
-            return;
-        }
-        
-        if (fQueue.size() != 0) {
-            // If there are requests to service, remove one from the queue and 
-            // schedule a runnable to process the request after a processing
-            // delay.
-            fServiceQueueInProgress = true;
-            final Request request = fQueue.remove(0);
-            fExecutor.schedule(
-                new DsfRunnable() {
-                    public void run() {
-                        if (request instanceof CountRequest) {
-                            processCountRequest((CountRequest)request);
-                        } else if (request instanceof ItemRequest) {
-                            processItemRequest((ItemRequest)request);
-                        } 
-                        
-                        // Reset the processing flag and process next
-                        // request.
-                        fServiceQueueInProgress = false;
-                        serviceQueue();
-                    }
-                }, 
-                PROCESSING_DELAY, TimeUnit.MILLISECONDS);
-        }
-    }
-    
-    // TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-    // indicating allowed thread access to this class/method/member
-    private void processCountRequest(CountRequest request) {
-        @SuppressWarnings("unchecked") // Suppress warning about lost type info.
-        DataRequestMonitor<Integer> rm = (DataRequestMonitor<Integer>)request.fRequestMonitor;
-        
-        rm.setData(fCount);
-        rm.done();
-    }
-
-    // TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-    // indicating allowed thread access to this class/method/member
-    private void processItemRequest(ItemRequest request) {
-        @SuppressWarnings("unchecked") // Suppress warning about lost type info.
-        DataRequestMonitor<String> rm = (DataRequestMonitor<String>)request.fRequestMonitor; 
-
-        if (fChangedIndexes.contains(request.fIndex)) {
-            rm.setData("Changed: " + request.fIndex);
-        } else {
-            rm.setData(Integer.toString(request.fIndex)); 
-        }
-        rm.done();
-    } 
- 
-    /**
-     * This method simulates changes in the supplier's data set.
-     */
-    // TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-    // indicating allowed thread access to this class/method/member
-    private void randomChanges() {
-        // Once every number of changes, reset the count, the rest of the 
-        // times just change certain values.
-        if (++fCountResetTrigger % RANDOM_COUNT_CHANGE_INTERVALS == 0){
-            randomCountReset();
-        } else {
-            randomDataChange();
-        }
-    }
-     
-    /**
-     * Calculates new size for provider's data set.
-     */
-    // TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-    // indicating allowed thread access to this class/method/member
-    private void randomCountReset() {
-        // Calculate the new count.
-        Random random = new java.util.Random();
-        fCount = MIN_COUNT + Math.abs(random.nextInt()) % (MAX_COUNT - MIN_COUNT);
-
-        // Reset the changed values.
-        fChangedIndexes.clear();
-        
-        // Notify listeners  
-        for (Listener listener : fListeners) {
-            listener.countChanged();
-        }
-    }
-     
-    /**
-     * Invalidates a random range of indexes.
-     */
-    // TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-    // indicating allowed thread access to this class/method/member
-    private void randomDataChange() {
-        // Calculate the indexes to change.
-        Random random = new java.util.Random();
-        Set<Integer> set = new HashSet<Integer>();
-        for (int i = 0; i < fCount * RANDOM_CHANGE_SET_PERCENTAGE / 100; i++) {
-            set.add( new Integer(Math.abs(random.nextInt()) % fCount) );
-        }                    
-
-        // Add the indexes to an overall set of changed indexes.
-        fChangedIndexes.addAll(set);
-        
-        // Notify listeners  
-        for (Listener listener : fListeners) {
-            listener.valuesChanged(set);
-        }
-    }    
-}
-
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/dataviewer/DataGeneratorWithThread.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,238 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 Wind River Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Wind River Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.examples.dsf.dataviewer;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Random;
-import java.util.Set;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
-import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
-import org.eclipse.cdt.examples.dsf.DsfExamplesPlugin;
-
-/**
- * Thread-based implementation of the data generator.
- * <p>
- * This generator is based around a queue of client requests and a thread which 
- * reads the requests from the queue and processes them. The distinguishing 
- * feature of this generator is that it uses a a blocking queue as the main 
- * synchronization object.  However, fListeners, fShutdown,  and fChangedIndexes 
- * fields also need to be thread-safe and so they implement their own 
- * synchronization.
- * </p>
- */
-public class DataGeneratorWithThread extends Thread implements IDataGenerator {
-
-    // Request objects are used to serialize the interface calls into objects
-    // which can then be pushed into a queue.
-    abstract class Request {
-        final RequestMonitor fRequestMonitor;
-        
-        Request(RequestMonitor rm) {
-            fRequestMonitor = rm;
-        }
-    }
-    
-    class CountRequest extends Request {
-        CountRequest(DataRequestMonitor<Integer> rm) { 
-            super(rm); 
-        }
-    } 
-
-    class ItemRequest extends Request {
-        final int fIndex;
-        ItemRequest(int index, DataRequestMonitor<String> rm) { 
-            super(rm);
-            fIndex = index; 
-        }
-    } 
-
-    class ShutdownRequest extends Request {
-        ShutdownRequest(RequestMonitor rm) { 
-            super(rm);
-        }
-    }
-
-    // Main request queue of the data generator.  The getValue(), getCount(), 
-    // and shutdown() methods write into the queue, while the run() method 
-    // reads from it.
-    private final BlockingQueue<Request> fQueue = new LinkedBlockingQueue<Request>();
-
-    // ListenerList class provides thread safety.
-    private ListenerList fListeners = new ListenerList();
-    
-    // Current number of elements in this generator.
-    private int fCount = MIN_COUNT;
-    
-    // Counter used to determine when to reset the element count.
-    private int fCountResetTrigger = 0;
-    
-    // Elements which were modified since the last reset.
-    private Set<Integer> fChangedIndexes = Collections.synchronizedSet(new HashSet<Integer>());
-    
-    // Used to determine when to make changes in data.
-    private long fLastChangeTime = System.currentTimeMillis();
-
-    // Flag indicating when the generator has been shut down.
-    private AtomicBoolean fShutdown = new AtomicBoolean(false);
- 
-    public DataGeneratorWithThread() {
-        // Immediately kick off the request processing thread.
-        start();
-    }
-     
-    public void shutdown(RequestMonitor rm) {
-        // Mark the generator as shut down.  After the fShutdown flag is set,
-        // all new requests should be shut down.
-        if (!fShutdown.getAndSet(true)) {
-            fQueue.add(new ShutdownRequest(rm));
-        } else {
-            // 
-            rm.setStatus(new Status(IStatus.ERROR, DsfExamplesPlugin.PLUGIN_ID, "Supplier shut down"));
-            rm.done();
-        }        
-    }
-
-    public void getCount(DataRequestMonitor<Integer> rm) {
-        if (!fShutdown.get()) {
-            fQueue.add(new CountRequest(rm));
-        } else {
-            rm.setStatus(new Status(IStatus.ERROR, DsfExamplesPlugin.PLUGIN_ID, "Supplier shut down"));
-            rm.done();
-        }        
-    }
-    
-    public void getValue(int index, DataRequestMonitor<String> rm) { 
-        if (!fShutdown.get()) {
-            fQueue.add(new ItemRequest(index, rm));
-        } else {
-            rm.setStatus(new Status(IStatus.ERROR, DsfExamplesPlugin.PLUGIN_ID, "Supplier shut down"));
-            rm.done();
-        }        
-    } 
-
-    public void addListener(Listener listener) {
-        fListeners.add(listener);
-    }
-
-    public void removeListener(Listener listener) {
-        fListeners.remove(listener);
-    }
-    
-    @Override
-    public void run() {
-        try {
-            while(true) {
-                // Get the next request from the queue.  The time-out 
-                // ensures that that the random changes get processed. 
-                final Request request = fQueue.poll(100, TimeUnit.MILLISECONDS);
-                
-                // If a request was dequeued, process it.
-                if (request != null) {
-                    // Simulate a processing delay.
-                    Thread.sleep(PROCESSING_DELAY);
-                    
-                    if (request instanceof CountRequest) {
-                        processCountRequest((CountRequest)request);
-                    } else if (request instanceof ItemRequest) {
-                        processItemRequest((ItemRequest)request);
-                    } else if (request instanceof ShutdownRequest) {
-                        // If shutting down, just break out of the while(true) 
-                        // loop and thread will exit.
-                        request.fRequestMonitor.done();
-                        break;
-                    }
-                }
-                
-                // Simulate data changes.
-                randomChanges();
-            }
-        }
-        catch (InterruptedException x) {}
-    } 
-
-    private void processCountRequest(CountRequest request) {
-        @SuppressWarnings("unchecked") // Suppress warning about lost type info.
-        DataRequestMonitor<Integer> rm = (DataRequestMonitor<Integer>)request.fRequestMonitor;
-        
-        rm.setData(fCount);
-        rm.done();
-    }
-
-    private void processItemRequest(ItemRequest request) {
-        @SuppressWarnings("unchecked") // Suppress warning about lost type info.
-        DataRequestMonitor<String> rm = (DataRequestMonitor<String>)request.fRequestMonitor; 
-
-        if (fChangedIndexes.contains(request.fIndex)) {
-            rm.setData("Changed: " + request.fIndex);
-        } else {
-            rm.setData(Integer.toString(request.fIndex));
-        }
-        rm.done();
-    } 
- 
-    
-    private void randomChanges() {
-        // Check if enough time is elapsed.
-        if (System.currentTimeMillis() > fLastChangeTime + RANDOM_CHANGE_INTERVAL) {
-            fLastChangeTime = System.currentTimeMillis();
-            
-            // Once every number of changes, reset the count, the rest of the 
-            // times just change certain values.
-            if (++fCountResetTrigger % RANDOM_COUNT_CHANGE_INTERVALS == 0){
-                randomCountReset();
-            } else {
-                randomDataChange();
-            }
-        }
-    }
-     
-    private void randomCountReset() {
-        // Calculate the new count.
-        Random random = new java.util.Random();
-        fCount = MIN_COUNT + Math.abs(random.nextInt()) % (MAX_COUNT - MIN_COUNT);
-
-        // Reset the changed values.
-        fChangedIndexes.clear();
-        
-        // Notify listeners  
-        for (Object listener : fListeners.getListeners()) {
-            ((Listener)listener).countChanged();
-        }
-    }
-     
-    private void randomDataChange() {
-        // Calculate the indexes to change.
-        Random random = new java.util.Random();
-        Set<Integer> set = new HashSet<Integer>();
-        for (int i = 0; i < fCount * RANDOM_CHANGE_SET_PERCENTAGE / 100; i++) {
-            set.add( new Integer(Math.abs(random.nextInt()) % fCount) );
-        }                
-
-        // Add the indexes to an overall set of changed indexes.
-        fChangedIndexes.addAll(set);
-        
-        // Notify listeners  
-        for (Object listener : fListeners.getListeners()) {
-            ((Listener)listener).valuesChanged(set);
-        }
-    }    
-}
-
-
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/dataviewer/IDataGenerator.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 Wind River Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Wind River Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.examples.dsf.dataviewer;
-
-import java.util.Set;
-
-import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
-import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
-
-/**
- * Data generator is simple source of data used to populate the example table 
- * view.  It contains two asynchronous methods for retrieving the data 
- * parameters: the count and the value for a given index.  It also allows the 
- * view to receive events indicating when the data supplied by the generator 
- * is changed. 
- */
-// TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor) 
-// indicating allowed thread access to this class/method/member
-public interface IDataGenerator {
-
-    // Constants which control the data generator behavior.
-    // Changing the count range can stress the scalability of the system, while
-    // changing of the process delay and random change interval can stress 
-    // its performance.
-    final static int MIN_COUNT = 100;
-    final static int MAX_COUNT = 200;
-    final static int PROCESSING_DELAY = 10;
-    final static int RANDOM_CHANGE_INTERVAL = 10000;
-    final static int RANDOM_COUNT_CHANGE_INTERVALS = 3;
-    final static int RANDOM_CHANGE_SET_PERCENTAGE = 10;
-
-    
-    // Listener interface that the view needs to implement to react
-    // to the changes in data.
-    public interface Listener {
-        void countChanged();
-        void valuesChanged(Set<Integer> indexes);
-    }
-
-    // Data access methods.
-    void getCount(DataRequestMonitor<Integer> rm);
-    void getValue(int index, DataRequestMonitor<String> rm); 
-    
-    // Method used to shutdown the data generator including any threads that 
-    // it may use.  
-    void shutdown(RequestMonitor rm);
-
-    // Methods for registering change listeners.
-    void addListener(Listener listener);
-    void removeListener(Listener listener);
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/dataviewer/SyncDataViewer.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,183 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Wind River Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Wind River Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.examples.dsf.dataviewer;
-
-import java.util.Set;
-
-import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
-import org.eclipse.cdt.dsf.concurrent.ImmediateExecutor;
-import org.eclipse.cdt.dsf.concurrent.Query;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * Data viewer based on a table, which reads data using synchronous methods.
- * <p>
- * This viewer implements the {@link IStructuredContentProvider} interface 
- * which is used by the JFace TableViewer class to populate a Table.  This 
- * interface contains one principal methods for reading data {@link #getElements(Object)}, 
- * which synchronously returns an array of elements.  In order to implement this 
- * method using the asynchronous data generator, this provider uses the 
- * {@link Query} object. 
- * </p>
- */
-public class SyncDataViewer 
-    implements IStructuredContentProvider, IDataGenerator.Listener 
-{
-    // The viewer and generator that this content provider using.
-    final private TableViewer fViewer;
-    final private IDataGenerator fDataGenerator;
-    
-    public SyncDataViewer(TableViewer viewer, IDataGenerator generator) {
-        fViewer = viewer;
-        fDataGenerator = generator;
-        fDataGenerator.addListener(this);
-    }
-    
-    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-        // Not used
-    }
-
-    
-    public Object[] getElements(Object inputElement) {
-        
-        // Create the query object for reading data count. 
-        Query<Integer> countQuery = new Query<Integer>() {
-            @Override
-            protected void execute(DataRequestMonitor<Integer> rm) {
-                fDataGenerator.getCount(rm);
-            }
-        };
-        
-        // Submit the query to be executed.  A query implements a runnable
-        // interface and it has to be executed in order to do its work.
-        ImmediateExecutor.getInstance().execute(countQuery);
-        int count = 0;
-        
-        // Block until the query completes, which will happen when the request
-        // monitor of the execute() method is marked done.
-        try {
-            count = countQuery.get();
-        } catch (Exception e) { 
-            // InterruptedException and ExecutionException can be thrown here.
-            // ExecutionException containing a CoreException will be thrown 
-            // if an error status is set to the Query's request monitor.
-            return new Object[0]; 
-        } 
-
-        // Create the array that will be filled with elements.
-        // For each index in the array execute a query to get the element at
-        // that index.
-        final Object[] elements = new Object[count];
-
-        for (int i = 0; i < count; i++) {
-            final int index = i;
-            Query<String> valueQuery = new Query<String>() {
-                @Override
-                protected void execute(DataRequestMonitor<String> rm) {
-                    fDataGenerator.getValue(index, rm);
-                }
-            };
-            ImmediateExecutor.getInstance().execute(valueQuery);
-            try {
-                elements[i] = valueQuery.get();
-            } catch (Exception e) { 
-                elements[i] = "error";
-            } 
-        }
-        return elements;
-    }
-
-    public void dispose() {
-        fDataGenerator.removeListener(this);
-    }
-
-    public void countChanged() {
-        // For any event from the generator, refresh the whole viewer.
-        refreshViewer();
-    }
-    
-    public void valuesChanged(Set<Integer> indexes) {
-        // For any event from the generator, refresh the whole viewer.
-        refreshViewer();
-    }
-    
-    private void refreshViewer() {
-        // TODO Exercise 5 - Add a call to getElements() to force a deadlock.
-        
-        // This method may be called on any thread, switch to the display 
-        // thread before calling the viewer.
-        Display display = fViewer.getControl().getDisplay(); 
-        display.asyncExec( new Runnable() {
-            public void run() {
-                if (!fViewer.getControl().isDisposed()) {
-                    fViewer.refresh();
-                }
-            }
-        });
-    }
-    
-    public static void main(String[] args) {
-        // Create the shell to hold the viewer.
-        Display display = new Display();
-        Shell shell = new Shell(display, SWT.SHELL_TRIM);
-        shell.setLayout(new GridLayout());
-        GridData data = new GridData(GridData.FILL_BOTH);
-        shell.setLayoutData(data);
-        Font font = new Font(display, "Courier", 10, SWT.NORMAL);
-
-        // Create the table viewer.
-        TableViewer tableViewer = new TableViewer(shell, SWT.BORDER);
-        tableViewer.getControl().setLayoutData(data);
-
-        // Create the data generator.
-        // TODO Exercise 5 - Use the DataGeneratorWithExecutor() instead.
-        final IDataGenerator generator = new DataGeneratorWithThread();
-        
-        // Create the content provider which will populate the viewer.
-        SyncDataViewer contentProvider = new SyncDataViewer(tableViewer, generator);
-        tableViewer.setContentProvider(contentProvider);
-        tableViewer.setInput(new Object());
-
-        // Open the shell and service the display dispatch loop until user
-        // closes the shell.
-        shell.open();
-        while (!shell.isDisposed()) {
-            if (!display.readAndDispatch())
-                display.sleep();
-        }
-        
-        // The IDataGenerator.shutdown() method is asynchronous, this requires
-        // using a query again in order to wait for its completion.
-        Query<Object> shutdownQuery = new Query<Object>() {
-            @Override
-            protected void execute(DataRequestMonitor<Object> rm) {
-                generator.shutdown(rm);
-            }
-        };
-        ImmediateExecutor.getInstance().execute(shutdownQuery);
-        try {
-            shutdownQuery.get();
-        } catch (Exception e) {}
-        
-        // Shut down the display.
-        font.dispose();    
-        display.dispose();
-    }
-    
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/dataviewer/answers/AsyncDataViewer.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,272 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 Wind River Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Wind River Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.examples.dsf.dataviewer.answers;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
-import org.eclipse.cdt.dsf.concurrent.ConfinedToDsfExecutor;
-import org.eclipse.cdt.dsf.concurrent.ThreadSafe;
-import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
-import org.eclipse.cdt.dsf.concurrent.DsfExecutor;
-import org.eclipse.cdt.dsf.concurrent.ImmediateExecutor;
-import org.eclipse.cdt.dsf.concurrent.Query;
-import org.eclipse.cdt.dsf.ui.concurrent.DisplayDsfExecutor;
-import org.eclipse.jface.viewers.ILazyContentProvider;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-
-/**
- * Data viewer based on a table, which reads data using asynchronous methods.
- * <p>
- * This viewer implements the {@link ILazyContentProvider} interface 
- * which is used by the JFace TableViewer class to populate a Table.  This 
- * interface contains separate asynchronous methods for requesting the count 
- * and values for individual indexes, which neatly correspond to the methods
- * in {@link IDataGenerator}.  As an added optimization, this viewer 
- * implementation checks for the range of visible items in the view upon each 
- * request, and it cancels old requests which scroll out of view but have not
- * been completed yet.  However, it is up to the data generator implementation 
- * to check the canceled state of the requests and ignore them.
- * </p>
- */
-@ConfinedToDsfExecutor("fDisplayExecutor")
-public class AsyncDataViewer 
-    implements ILazyContentProvider, IDataGenerator.Listener
-{
-    // Executor to use instead of Display.asyncExec().
-    @ThreadSafe
-    final private DsfExecutor fDisplayExecutor;
-    
-    // The viewer and generator that this content provider using.
-    final private TableViewer fViewer;
-    final private IDataGenerator fDataGenerator;
-
-    // Fields used in request cancellation logic.
-    private List<ValueDataRequestMonitor> fItemDataRequestMonitors = new LinkedList<ValueDataRequestMonitor>();
-    private Set<Integer> fIndexesToCancel = new HashSet<Integer>();
-    private int fCancelCallsPending = 0;
-    
-    public AsyncDataViewer(TableViewer viewer, IDataGenerator generator) {
-        fViewer = viewer;
-        fDisplayExecutor = DisplayDsfExecutor.getDisplayDsfExecutor(fViewer.getTable().getDisplay());
-        fDataGenerator = generator;
-        fDataGenerator.addListener(this);
-    }    
-    
-    public void dispose() {
-        fDataGenerator.removeListener(this);
-    }
-
-    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-        // Set the initial count to the viewer after the input is set.
-        queryItemCount();
-    }
-
-    public void updateElement(final int index) {
-        // Calculate the visible index range.
-        final int topIdx = fViewer.getTable().getTopIndex();
-        final int botIdx = topIdx + getVisibleItemCount(topIdx);
-
-        // Request the item for the given index.
-        queryValue(index);
-
-        // Invoke a cancel task with a delay.  The delay allows multiple cancel 
-        // calls to be combined together improving performance of the viewer.
-        fCancelCallsPending++;
-        fDisplayExecutor.schedule(
-            new Runnable() { public void run() {
-                cancelStaleRequests(topIdx, botIdx);
-            }}, 
-            1, TimeUnit.MILLISECONDS);
-    }
-        
-    private int getVisibleItemCount(int top) {
-        Table table = fViewer.getTable();
-        int itemCount = table.getItemCount();
-        return Math.min((table.getBounds().height / table.getItemHeight()) + 2, itemCount - top);
-    }   
-    
-    @ThreadSafe
-    public void countChanged() {
-        queryItemCount();
-    }
-    
-    @ThreadSafe
-    public void valuesChanged(final Set<Integer> indexes) {
-        // Mark the changed items in table viewer as dirty, this will 
-        // trigger update requests for these indexes if they are 
-        // visible in the viewer.
-        final TableViewer tableViewer = fViewer;
-        fDisplayExecutor.execute( new Runnable() { 
-            public void run() {
-                if (!fViewer.getTable().isDisposed()) {
-                    for (Integer index : indexes) {
-                        tableViewer.clear(index);
-                    }
-                }
-            }});
-    }
-    
-
-    private void queryItemCount() {
-        // Request count from data provider.  When the count is returned, we 
-        // have to re-dispatch into the display thread to avoid calling
-        // the table widget on the DSF dispatch thread.
-        fIndexesToCancel.clear();
-        fDataGenerator.getCount( 
-            // Use the display executor to construct the request monitor, this 
-            // will cause the handleCompleted() method to be automatically
-            // called on the display thread.
-            new DataRequestMonitor<Integer>(fDisplayExecutor, null) {
-                @Override
-                protected void handleCompleted() {
-                    if (!fViewer.getTable().isDisposed()) {
-                        fViewer.setItemCount(getData());
-                        fViewer.getTable().clearAll();
-                    }
-                }
-            }); 
-        
-    }
-
-    
-    // Dedicated class for data item requests.  This class holds the index
-    // argument so it can be examined when canceling stale requests.
-    private class ValueDataRequestMonitor extends DataRequestMonitor<String> {
-        
-        /** Index is used when canceling stale requests. */
-        int fIndex;
-        
-        ValueDataRequestMonitor(int index) {
-            super(fDisplayExecutor, null);
-            fIndex = index; 
-        }
-
-        @Override
-        protected void handleCompleted() {
-            fItemDataRequestMonitors.remove(this);
-
-            // Check if the request completed successfully, otherwise ignore it.
-            if (isSuccess()) {
-                if (!fViewer.getTable().isDisposed()) {
-                    fViewer.replace(getData(), fIndex);
-                }
-            }
-        }
-    }
-
-    private void queryValue(final int index) {
-        ValueDataRequestMonitor rm = new ValueDataRequestMonitor(index);
-        fItemDataRequestMonitors.add(rm);
-        fDataGenerator.getValue(index, rm); 
-    }
-    
-    private void cancelStaleRequests(int topIdx, int botIdx) {
-        // Decrement the count of outstanding cancel calls.
-        fCancelCallsPending--;
-
-        // Must check again, in case disposed while re-dispatching.
-        if (fDataGenerator == null || fViewer.getTable().isDisposed()) return;
-
-        // Go through the outstanding requests and cancel any that 
-        // are not visible anymore.
-        for (Iterator<ValueDataRequestMonitor> itr = fItemDataRequestMonitors.iterator(); itr.hasNext();) {
-            ValueDataRequestMonitor item = itr.next();
-            if (item.fIndex < topIdx || item.fIndex > botIdx) {
-                // Set the item to canceled status, so that the data provider 
-                // will ignore it.
-                item.cancel();
-                
-                // Add the item index to list of indexes that were canceled, 
-                // which will be sent to the table widget. 
-                fIndexesToCancel.add(item.fIndex);
-                
-                // Remove the item from the outstanding cancel requests.
-                itr.remove(); 
-            }
-        }
-        if (!fIndexesToCancel.isEmpty() && fCancelCallsPending == 0) {
-            Set<Integer> canceledIdxs = fIndexesToCancel;
-            fIndexesToCancel = new HashSet<Integer>();
-            
-            // Clear the indexes of the canceled request, so that the 
-            // viewer knows to request them again when needed.  
-            // Note: clearing using TableViewer.clear(int) seems very
-            // inefficient, it's better to use Table.clear(int[]).
-            int[] canceledIdxsArray = new int[canceledIdxs.size()];
-            int i = 0;
-            for (Integer index : canceledIdxs) {
-                canceledIdxsArray[i++] = index;
-            }
-            fViewer.getTable().clear(canceledIdxsArray);
-        }
-    }
-    
-    
-    public static void main(String[] args) {
-        // Create the shell to hold the viewer.
-        Display display = new Display();
-        Shell shell = new Shell(display, SWT.SHELL_TRIM);
-        shell.setLayout(new GridLayout());
-        GridData data = new GridData(GridData.FILL_BOTH);
-        shell.setLayoutData(data);
-        Font font = new Font(display, "Courier", 10, SWT.NORMAL);
-
-        // Create the table viewer.
-        TableViewer tableViewer = new TableViewer(shell, SWT.BORDER | SWT.VIRTUAL);
-        tableViewer.getControl().setLayoutData(data);
-
-        // Create the data generator.
-        final IDataGenerator generator = new DataGeneratorWithExecutor();
-        
-        // Create the content provider which will populate the viewer.
-        AsyncDataViewer contentProvider = new AsyncDataViewer(tableViewer, generator);
-        tableViewer.setContentProvider(contentProvider);
-        tableViewer.setInput(new Object());
-
-        // Open the shell and service the display dispatch loop until user
-        // closes the shell.
-        shell.open();
-        while (!shell.isDisposed()) {
-            if (!display.readAndDispatch())
-                display.sleep();
-        }
-        
-        // The IDataGenerator.shutdown() method is asynchronous, this requires
-        // using a query again in order to wait for its completion.
-        Query<Object> shutdownQuery = new Query<Object>() {
-            @Override
-            protected void execute(DataRequestMonitor<Object> rm) {
-                generator.shutdown(rm);
-            }
-        };
-        ImmediateExecutor.getInstance().execute(shutdownQuery);
-        try {
-            shutdownQuery.get();
-        } catch (Exception e) {} 
-        
-        // Shut down the display.
-        font.dispose();    
-        display.dispose();
-    }
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/dataviewer/answers/DataGeneratorWithExecutor.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,311 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 Wind River Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Wind River Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.examples.dsf.dataviewer.answers;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Random;
-import java.util.Set;
-import java.util.concurrent.RejectedExecutionException;
-import java.util.concurrent.TimeUnit;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.cdt.dsf.concurrent.ConfinedToDsfExecutor;
-import org.eclipse.cdt.dsf.concurrent.Immutable;
-import org.eclipse.cdt.dsf.concurrent.ThreadSafe;
-import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
-import org.eclipse.cdt.dsf.concurrent.DefaultDsfExecutor;
-import org.eclipse.cdt.dsf.concurrent.DsfExecutor;
-import org.eclipse.cdt.dsf.concurrent.DsfRunnable;
-import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
-import org.eclipse.cdt.examples.dsf.DsfExamplesPlugin;
-
-/**
- * DSF Executor-based implementation of the data generator.
- * <p>
- * This generator uses a queue of client requests and processes these
- * requests periodically using a DSF executor.  The main feature of this
- * generator is that it uses the executor as its only synchronization object.
- * This means that all the fields with the exception of the executor can only
- * be accessed while running in the executor thread.
- * </p>
- */
-@ThreadSafe
-public class DataGeneratorWithExecutor implements IDataGenerator {
-
-    // Request objects are used to serialize the interface calls into objects
-    // which can then be pushed into a queue.
-    @Immutable
-    abstract class Request {
-        final RequestMonitor fRequestMonitor;
-        
-        Request(RequestMonitor rm) {
-            fRequestMonitor = rm;
-        }
-    }
-    
-    @Immutable
-    class CountRequest extends Request {
-        CountRequest(DataRequestMonitor<Integer> rm) { 
-            super(rm); 
-        }
-    } 
-
-    @Immutable
-    class ItemRequest extends Request {
-        final int fIndex;
-        ItemRequest(int index, DataRequestMonitor<String> rm) { 
-            super(rm);
-            fIndex = index; 
-        }
-    } 
-
-    // The executor used to access all internal data of the generator.
-    private DsfExecutor fExecutor;
-    
-    // Main request queue of the data generator.  The getValue(), getCount(), 
-    // and shutdown() methods write into the queue, while the serviceQueue()
-    // method reads from it.
-    // The executor used to access all internal data of the generator.
-    @ConfinedToDsfExecutor("fExecutor")
-    private List<Request> fQueue = new LinkedList<Request>();
-
-    // List of listeners is not synchronized, it also has to be accessed
-    // using the executor.
-    @ConfinedToDsfExecutor("fExecutor")
-    private List<Listener> fListeners = new LinkedList<Listener>();
-
-    // Current number of elements in this generator.
-    @ConfinedToDsfExecutor("fExecutor")
-    private int fCount = MIN_COUNT;
-    
-    // Counter used to determine when to reset the element count.
-    @ConfinedToDsfExecutor("fExecutor")
-    private int fCountResetTrigger = 0;
-    
-    // Elements which were modified since the last reset.
-    @ConfinedToDsfExecutor("fExecutor")
-    private Set<Integer> fChangedIndexes = new HashSet<Integer>();
-    
-    // Flag used to ensure that requests are processed sequentially.
-    @ConfinedToDsfExecutor("fExecutor")
-    private boolean fServiceQueueInProgress = false;
- 
-    public DataGeneratorWithExecutor() {
-        // Create the executor
-        fExecutor = new DefaultDsfExecutor("Supplier Executor");
-        
-        // Schedule a runnable to make the random changes.
-        fExecutor.scheduleAtFixedRate(
-            new DsfRunnable() {
-                public void run() {
-                    randomChanges();
-                }
-            },
-            RANDOM_CHANGE_INTERVAL, 
-            RANDOM_CHANGE_INTERVAL, 
-            TimeUnit.MILLISECONDS);
-    }
-     
-    public void shutdown(final RequestMonitor rm) {
-        try {
-            fExecutor.execute( new DsfRunnable() {
-                public void run() {
-                    // Empty the queue of requests and fail them.
-                    for (Request request : fQueue) {
-                        request.fRequestMonitor.setStatus(
-                            new Status(IStatus.ERROR, DsfExamplesPlugin.PLUGIN_ID, "Supplier shut down"));
-                        request.fRequestMonitor.done();
-                    }
-                    fQueue.clear();
-                    
-                    // Kill executor.
-                    fExecutor.shutdown();
-                    rm.done();
-                }
-            });
-        } catch (RejectedExecutionException e) {
-            rm.setStatus(new Status(IStatus.ERROR, DsfExamplesPlugin.PLUGIN_ID, "Supplier shut down"));
-            rm.done();
-        }
-    }
-
-    public void getCount(final DataRequestMonitor<Integer> rm) {
-        try {
-            fExecutor.execute( new DsfRunnable() {
-                public void run() {
-                    fQueue.add(new CountRequest(rm));
-                    serviceQueue();
-                }
-            });
-        } catch (RejectedExecutionException e) {
-            rm.setStatus(new Status(IStatus.ERROR, DsfExamplesPlugin.PLUGIN_ID, "Supplier shut down"));
-            rm.done();
-        }
-    }
-    
-    public void getValue(final int index, final DataRequestMonitor<String> rm) { 
-        try {
-            fExecutor.execute( new DsfRunnable() {
-                public void run() {
-                    fQueue.add(new ItemRequest(index, rm));
-                    serviceQueue();
-                }
-            });
-        } catch (RejectedExecutionException e) {
-            rm.setStatus(new Status(IStatus.ERROR, DsfExamplesPlugin.PLUGIN_ID, "Supplier shut down"));
-            rm.done();
-        }
-    } 
-
-    public void addListener(final Listener listener) {
-        try {
-            fExecutor.execute( new DsfRunnable() {
-                public void run() {
-                    fListeners.add(listener);
-                }
-            });
-        } catch (RejectedExecutionException e) {}
-    }
-
-    public void removeListener(final Listener listener) {
-        try {
-            fExecutor.execute( new DsfRunnable() {
-                public void run() {
-                    fListeners.remove(listener);
-                }
-            });
-        } catch (RejectedExecutionException e) {}
-    }
-
-    // Main processing function of this generator.
-    @ConfinedToDsfExecutor("fExecutor")
-    private void serviceQueue() {
-        
-        for (Iterator<Request> requestItr = fQueue.iterator(); requestItr.hasNext();) {
-            Request request = requestItr.next();
-            if (request.fRequestMonitor.isCanceled()) {
-                request.fRequestMonitor.setStatus(
-                    new Status(IStatus.CANCEL, DsfExamplesPlugin.PLUGIN_ID, "Request canceled"));
-                request.fRequestMonitor.done();
-                requestItr.remove();
-            }
-        }
-        
-        // If a queue servicing is already scheduled, do nothing.
-        if (fServiceQueueInProgress) {
-            return;
-        }
-        
-        if (fQueue.size() != 0) {
-            // If there are requests to service, remove one from the queue and 
-            // schedule a runnable to process the request after a processing
-            // delay.
-            fServiceQueueInProgress = true;
-            final Request request = fQueue.remove(0);
-            fExecutor.schedule(
-                new DsfRunnable() {
-                    public void run() {
-                        if (request instanceof CountRequest) {
-                            processCountRequest((CountRequest)request);
-                        } else if (request instanceof ItemRequest) {
-                            processItemRequest((ItemRequest)request);
-                        } 
-                        
-                        // Reset the processing flag and process next
-                        // request.
-                        fServiceQueueInProgress = false;
-                        serviceQueue();
-                    }
-                }, 
-                PROCESSING_DELAY, TimeUnit.MILLISECONDS);
-        }
-    }
-    
-    @ConfinedToDsfExecutor("fExecutor")
-    private void processCountRequest(CountRequest request) {
-        @SuppressWarnings("unchecked") // Suppress warning about lost type info.
-        DataRequestMonitor<Integer> rm = (DataRequestMonitor<Integer>)request.fRequestMonitor;
-        
-        rm.setData(fCount);
-        rm.done();
-    }
-
-    @ConfinedToDsfExecutor("fExecutor")
-    private void processItemRequest(ItemRequest request) {
-        @SuppressWarnings("unchecked") // Suppress warning about lost type info.
-        DataRequestMonitor<String> rm = (DataRequestMonitor<String>)request.fRequestMonitor; 
-
-        if (fChangedIndexes.contains(request.fIndex)) {
-            rm.setData("Changed: " + request.fIndex);
-        } else {
-            rm.setData(Integer.toString(request.fIndex)); 
-        }
-        rm.done();
-    } 
- 
-    /**
-     * This method simulates changes in the supplier's data set.
-     */
-    @ConfinedToDsfExecutor("fExecutor")
-    private void randomChanges() {
-        // Once every number of changes, reset the count, the rest of the 
-        // times just change certain values.
-        if (++fCountResetTrigger % RANDOM_COUNT_CHANGE_INTERVALS == 0){
-            randomCountReset();
-        } else {
-            randomDataChange();
-        }
-    }
-     
-    /**
-     * Calculates new size for provider's data set.
-     */
-    @ConfinedToDsfExecutor("fExecutor")
-    private void randomCountReset() {
-        // Calculate the new count.
-        Random random = new java.util.Random();
-        fCount = MIN_COUNT + Math.abs(random.nextInt()) % (MAX_COUNT - MIN_COUNT);
-
-        // Reset the changed values.
-        fChangedIndexes.clear();
-        
-        // Notify listeners  
-        for (Listener listener : fListeners) {
-            listener.countChanged();
-        }
-    }
-     
-    /**
-     * Invalidates a random range of indexes.
-     */
-    @ConfinedToDsfExecutor("fExecutor")
-    private void randomDataChange() {
-        // Calculate the indexes to change.
-        Random random = new java.util.Random();
-        Set<Integer> set = new HashSet<Integer>();
-        for (int i = 0; i < fCount * RANDOM_CHANGE_SET_PERCENTAGE / 100; i++) {
-            set.add( new Integer(Math.abs(random.nextInt()) % fCount) );
-        }                    
-
-        // Add the indexes to an overall set of changed indexes.
-        fChangedIndexes.addAll(set);
-        
-        // Notify listeners  
-        for (Listener listener : fListeners) {
-            listener.valuesChanged(set);
-        }
-    }    
-}
-
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/dataviewer/answers/DataGeneratorWithThread.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,238 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 Wind River Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Wind River Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.examples.dsf.dataviewer.answers;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Random;
-import java.util.Set;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
-import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
-import org.eclipse.cdt.examples.dsf.DsfExamplesPlugin;
-
-/**
- * Thread-based implementation of the data generator.
- * <p>
- * This generator is based around a queue of client requests and a thread which 
- * reads the requests from the queue and processes them. The distinguishing 
- * feature of this generator is that it uses a a blocking queue as the main 
- * synchronization object.  However, fListeners, fShutdown,  and fChangedIndexes 
- * fields also need to be thread-safe and so they implement their own 
- * synchronization.
- * </p>
- */
-public class DataGeneratorWithThread extends Thread implements IDataGenerator {
-
-    // Request objects are used to serialize the interface calls into objects
-    // which can then be pushed into a queue.
-    abstract class Request {
-        final RequestMonitor fRequestMonitor;
-        
-        Request(RequestMonitor rm) {
-            fRequestMonitor = rm;
-        }
-    }
-    
-    class CountRequest extends Request {
-        CountRequest(DataRequestMonitor<Integer> rm) { 
-            super(rm); 
-        }
-    } 
-
-    class ItemRequest extends Request {
-        final int fIndex;
-        ItemRequest(int index, DataRequestMonitor<String> rm) { 
-            super(rm);
-            fIndex = index; 
-        }
-    } 
-
-    class ShutdownRequest extends Request {
-        ShutdownRequest(RequestMonitor rm) { 
-            super(rm);
-        }
-    }
-
-    // Main request queue of the data generator.  The getValue(), getCount(), 
-    // and shutdown() methods write into the queue, while the run() method 
-    // reads from it.
-    private final BlockingQueue<Request> fQueue = new LinkedBlockingQueue<Request>();
-
-    // ListenerList class provides thread safety.
-    private ListenerList fListeners = new ListenerList();
-    
-    // Current number of elements in this generator.
-    private int fCount = MIN_COUNT;
-    
-    // Counter used to determine when to reset the element count.
-    private int fCountResetTrigger = 0;
-    
-    // Elements which were modified since the last reset.
-    private Set<Integer> fChangedIndexes = Collections.synchronizedSet(new HashSet<Integer>());
-    
-    // Used to determine when to make changes in data.
-    private long fLastChangeTime = System.currentTimeMillis();
-
-    // Flag indicating when the generator has been shut down.
-    private AtomicBoolean fShutdown = new AtomicBoolean(false);
- 
-    public DataGeneratorWithThread() {
-        // Immediately kick off the request processing thread.
-        start();
-    }
-     
-    public void shutdown(RequestMonitor rm) {
-        // Mark the generator as shut down.  After the fShutdown flag is set,
-        // all new requests should be shut down.
-        if (!fShutdown.getAndSet(true)) {
-            fQueue.add(new ShutdownRequest(rm));
-        } else {
-            // 
-            rm.setStatus(new Status(IStatus.ERROR, DsfExamplesPlugin.PLUGIN_ID, "Supplier shut down"));
-            rm.done();
-        }        
-    }
-
-    public void getCount(DataRequestMonitor<Integer> rm) {
-        if (!fShutdown.get()) {
-            fQueue.add(new CountRequest(rm));
-        } else {
-            rm.setStatus(new Status(IStatus.ERROR, DsfExamplesPlugin.PLUGIN_ID, "Supplier shut down"));
-            rm.done();
-        }        
-    }
-    
-    public void getValue(int index, DataRequestMonitor<String> rm) { 
-        if (!fShutdown.get()) {
-            fQueue.add(new ItemRequest(index, rm));
-        } else {
-            rm.setStatus(new Status(IStatus.ERROR, DsfExamplesPlugin.PLUGIN_ID, "Supplier shut down"));
-            rm.done();
-        }        
-    } 
-
-    public void addListener(Listener listener) {
-        fListeners.add(listener);
-    }
-
-    public void removeListener(Listener listener) {
-        fListeners.remove(listener);
-    }
-    
-    @Override
-    public void run() {
-        try {
-            while(true) {
-                // Get the next request from the queue.  The time-out 
-                // ensures that that the random changes get processed. 
-                final Request request = fQueue.poll(100, TimeUnit.MILLISECONDS);
-                
-                // If a request was dequeued, process it.
-                if (request != null) {
-                    // Simulate a processing delay.
-                    Thread.sleep(PROCESSING_DELAY);
-                    
-                    if (request instanceof CountRequest) {
-                        processCountRequest((CountRequest)request);
-                    } else if (request instanceof ItemRequest) {
-                        processItemRequest((ItemRequest)request);
-                    } else if (request instanceof ShutdownRequest) {
-                        // If shutting down, just break out of the while(true) 
-                        // loop and thread will exit.
-                        request.fRequestMonitor.done();
-                        break;
-                    }
-                }
-                
-                // Simulate data changes.
-                randomChanges();
-            }
-        }
-        catch (InterruptedException x) {}
-    } 
-
-    private void processCountRequest(CountRequest request) {
-        @SuppressWarnings("unchecked") // Suppress warning about lost type info.
-        DataRequestMonitor<Integer> rm = (DataRequestMonitor<Integer>)request.fRequestMonitor;
-        
-        rm.setData(fCount);
-        rm.done();
-    }
-
-    private void processItemRequest(ItemRequest request) {
-        @SuppressWarnings("unchecked") // Suppress warning about lost type info.
-        DataRequestMonitor<String> rm = (DataRequestMonitor<String>)request.fRequestMonitor; 
-
-        if (fChangedIndexes.contains(request.fIndex)) {
-            rm.setData("Changed: " + request.fIndex);
-        } else {
-            rm.setData(Integer.toString(request.fIndex));
-        }
-        rm.done();
-    } 
- 
-    
-    private void randomChanges() {
-        // Check if enough time is elapsed.
-        if (System.currentTimeMillis() > fLastChangeTime + RANDOM_CHANGE_INTERVAL) {
-            fLastChangeTime = System.currentTimeMillis();
-            
-            // Once every number of changes, reset the count, the rest of the 
-            // times just change certain values.
-            if (++fCountResetTrigger % RANDOM_COUNT_CHANGE_INTERVALS == 0){
-                randomCountReset();
-            } else {
-                randomDataChange();
-            }
-        }
-    }
-     
-    private void randomCountReset() {
-        // Calculate the new count.
-        Random random = new java.util.Random();
-        fCount = MIN_COUNT + Math.abs(random.nextInt()) % (MAX_COUNT - MIN_COUNT);
-
-        // Reset the changed values.
-        fChangedIndexes.clear();
-        
-        // Notify listeners  
-        for (Object listener : fListeners.getListeners()) {
-            ((Listener)listener).countChanged();
-        }
-    }
-     
-    private void randomDataChange() {
-        // Calculate the indexes to change.
-        Random random = new java.util.Random();
-        Set<Integer> set = new HashSet<Integer>();
-        for (int i = 0; i < fCount * RANDOM_CHANGE_SET_PERCENTAGE / 100; i++) {
-            set.add( new Integer(Math.abs(random.nextInt()) % fCount) );
-        }                
-
-        // Add the indexes to an overall set of changed indexes.
-        fChangedIndexes.addAll(set);
-        
-        // Notify listeners  
-        for (Object listener : fListeners.getListeners()) {
-            ((Listener)listener).valuesChanged(set);
-        }
-    }    
-}
-
-
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/dataviewer/answers/IDataGenerator.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 Wind River Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Wind River Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.examples.dsf.dataviewer.answers;
-
-import java.util.Set;
-
-import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
-import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
-import org.eclipse.cdt.dsf.concurrent.ThreadSafe;
-
-/**
- * Data generator is simple source of data used to populate the example table 
- * view.  It contains two asynchronous methods for retrieving the data 
- * parameters: the count and the value for a given index.  It also allows the 
- * view to receive events indicating when the data supplied by the generator 
- * is changed. 
- */
-@ThreadSafe
-public interface IDataGenerator {
-
-    // Constants which control the data generator behavior.
-    // Changing the count range can stress the scalability of the system, while
-    // changing of the process delay and random change interval can stress 
-    // its performance.
-    final static int MIN_COUNT = 100;
-    final static int MAX_COUNT = 200;
-    final static int PROCESSING_DELAY = 10;
-    final static int RANDOM_CHANGE_INTERVAL = 10000;
-    final static int RANDOM_COUNT_CHANGE_INTERVALS = 3;
-    final static int RANDOM_CHANGE_SET_PERCENTAGE = 10;
-
-    
-    // Listener interface that the view needs to implement to react
-    // to the changes in data.
-    public interface Listener {
-        void countChanged();
-        void valuesChanged(Set<Integer> indexes);
-    }
-
-    // Data access methods.
-    void getCount(DataRequestMonitor<Integer> rm);
-    void getValue(int index, DataRequestMonitor<String> rm); 
-    
-    // Method used to shutdown the data generator including any threads that 
-    // it may use.  
-    void shutdown(RequestMonitor rm);
-
-    // Methods for registering change listeners.
-    void addListener(Listener listener);
-    void removeListener(Listener listener);
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/dataviewer/answers/SyncDataViewer.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,182 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Wind River Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Wind River Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.examples.dsf.dataviewer.answers;
-
-import java.util.Set;
-
-import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
-import org.eclipse.cdt.dsf.concurrent.ImmediateExecutor;
-import org.eclipse.cdt.dsf.concurrent.Query;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * Data viewer based on a table, which reads data using synchronous methods.
- * <p>
- * This viewer implements the {@link IStructuredContentProvider} interface 
- * which is used by the JFace TableViewer class to populate a Table.  This 
- * interface contains one principal methods for reading data {@link #getElements(Object)}, 
- * which synchronously returns an array of elements.  In order to implement this 
- * method using the asynchronous data generator, this provider uses the 
- * {@link Query} object. 
- * </p>
- */
-public class SyncDataViewer 
-    implements IStructuredContentProvider, IDataGenerator.Listener 
-{
-    // The viewer and generator that this content provider using.
-    final private TableViewer fViewer;
-    final private IDataGenerator fDataGenerator;
-    
-    public SyncDataViewer(TableViewer viewer, IDataGenerator generator) {
-        fViewer = viewer;
-        fDataGenerator = generator;
-        fDataGenerator.addListener(this);
-    }
-    
-    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-        // Not used
-    }
-
-    
-    public Object[] getElements(Object inputElement) {
-        
-        // Create the query object for reading data count. 
-        Query<Integer> countQuery = new Query<Integer>() {
-            @Override
-            protected void execute(DataRequestMonitor<Integer> rm) {
-                fDataGenerator.getCount(rm);
-            }
-        };
-        
-        // Submit the query to be executed.  A query implements a runnable
-        // interface and it has to be executed in order to do its work.
-        ImmediateExecutor.getInstance().execute(countQuery);
-        int count = 0;
-        
-        // Block until the query completes, which will happen when the request
-        // monitor of the execute() method is marked done.
-        try {
-            count = countQuery.get();
-        } catch (Exception e) { 
-            // InterruptedException and ExecutionException can be thrown here.
-            // ExecutionException containing a CoreException will be thrown 
-            // if an error status is set to the Query's request monitor.
-            return new Object[0]; 
-        } 
-
-        // Create the array that will be filled with elements.
-        // For each index in the array execute a query to get the element at
-        // that index.
-        final Object[] elements = new Object[count];
-
-        for (int i = 0; i < count; i++) {
-            final int index = i;
-            Query<String> valueQuery = new Query<String>() {
-                @Override
-                protected void execute(DataRequestMonitor<String> rm) {
-                    fDataGenerator.getValue(index, rm);
-                }
-            };
-            ImmediateExecutor.getInstance().execute(valueQuery);
-            try {
-                elements[i] = valueQuery.get();
-            } catch (Exception e) { 
-                elements[i] = "error";
-            } 
-        }
-        return elements;
-    }
-
-    public void dispose() {
-        fDataGenerator.removeListener(this);
-    }
-
-    public void countChanged() {
-        // For any event from the generator, refresh the whole viewer.
-        refreshViewer();
-    }
-    
-    public void valuesChanged(Set<Integer> indexes) {
-        // For any event from the generator, refresh the whole viewer.
-        refreshViewer();
-    }
-    
-    private void refreshViewer() {
-        getElements(null);
-        
-        // This method may be called on any thread, switch to the display 
-        // thread before calling the viewer.
-        Display display = fViewer.getControl().getDisplay(); 
-        display.asyncExec( new Runnable() {
-            public void run() {
-                if (!fViewer.getControl().isDisposed()) {
-                    fViewer.refresh();
-                }
-            }
-        });
-    }
-    
-    public static void main(String[] args) {
-        // Create the shell to hold the viewer.
-        Display display = new Display();
-        Shell shell = new Shell(display, SWT.SHELL_TRIM);
-        shell.setLayout(new GridLayout());
-        GridData data = new GridData(GridData.FILL_BOTH);
-        shell.setLayoutData(data);
-        Font font = new Font(display, "Courier", 10, SWT.NORMAL);
-
-        // Create the table viewer.
-        TableViewer tableViewer = new TableViewer(shell, SWT.BORDER);
-        tableViewer.getControl().setLayoutData(data);
-
-        // Create the data generator.
-        final IDataGenerator generator = new DataGeneratorWithExecutor();     
-        
-        // Create the content provider which will populate the viewer.
-        SyncDataViewer contentProvider = new SyncDataViewer(tableViewer, generator);
-        tableViewer.setContentProvider(contentProvider);
-        tableViewer.setInput(new Object());
-
-        // Open the shell and service the display dispatch loop until user
-        // closes the shell.
-        shell.open();
-        while (!shell.isDisposed()) {
-            if (!display.readAndDispatch())
-                display.sleep();
-        }
-        
-        // The IDataGenerator.shutdown() method is asynchronous, this requires
-        // using a query again in order to wait for its completion.
-        Query<Object> shutdownQuery = new Query<Object>() {
-            @Override
-            protected void execute(DataRequestMonitor<Object> rm) {
-                generator.shutdown(rm);
-            }
-        };
-        ImmediateExecutor.getInstance().execute(shutdownQuery);
-        try {
-            shutdownQuery.get();
-        } catch (Exception e) {}
-        
-        // Shut down the display.
-        font.dispose();    
-        display.dispose();
-    }
-    
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/requestmonitor/Async2Plus2.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Wind River Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Wind River Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.examples.dsf.requestmonitor;
-
-import java.util.concurrent.Executor;
-
-import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
-import org.eclipse.cdt.dsf.concurrent.ImmediateExecutor;
-
-/**
- * Example of using a DataRequestMonitor to retrieve a result from an 
- * asynchronous method.
- */
-public class Async2Plus2 {
-    
-    public static void main(String[] args) {
-        Executor executor = ImmediateExecutor.getInstance();
-        DataRequestMonitor<Integer> rm = 
-            new DataRequestMonitor<Integer>(executor, null) {
-                @Override
-                protected void handleCompleted() {
-                    System.out.println("2 + 2 = " + getData());
-                }
-            };
-        asyncAdd(2, 2, rm);
-    }
-
-    static void asyncAdd(int value1, int value2, DataRequestMonitor<Integer> rm) {
-        rm.setData(value1 + value2);
-        rm.done();
-    }
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/requestmonitor/AsyncHelloWorld.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Wind River Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Wind River Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.examples.dsf.requestmonitor;
-
-import java.util.concurrent.Executor;
-
-import org.eclipse.cdt.dsf.concurrent.ImmediateExecutor;
-import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
-
-/**
- * "Hello world" example which uses an asynchronous method to print out
- * the result.  
- * <p>
- * The main method uses an immediate executor, which executes runnables
- * as soon as they are submitted, in creating its request monitor. 
- * 
- */
-public class AsyncHelloWorld {
-
-    public static void main(String[] args) {
-        Executor executor = ImmediateExecutor.getInstance();
-        RequestMonitor rm = new RequestMonitor(executor, null);
-        asyncHelloWorld(rm);
-    }
-
-    static void asyncHelloWorld(RequestMonitor rm) {
-        System.out.println("Hello world");
-        // TODO Exercise 1: - Call the second async. "Hello world 2" method.
-        // Hint: Calling an asynchronous method requires passing to it a 
-        // request monitor.  A new request monitor can be constructed with 
-        // a parent RequestMonitor as an argument argument.  The parent gets 
-        // completed automatically when the lower level request monitor is 
-        // completed.
-        rm.done();
-    }
-    
-    // TODO: Exercise 1 - Add a second async. "Hello world 2" method.   
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/requestmonitor/AsyncQuicksort.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Wind River Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Wind River Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.examples.dsf.requestmonitor;
-
-import java.util.Arrays;
-import java.util.concurrent.Executor;
-
-import org.eclipse.cdt.dsf.concurrent.CountingRequestMonitor;
-import org.eclipse.cdt.dsf.concurrent.ImmediateExecutor;
-import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
-
-/**
- * Example of using a CountingRequestMonitor to wait for multiple 
- * asynchronous calls to complete.  
- */
-public class AsyncQuicksort {
-
-    static Executor fgExecutor = ImmediateExecutor.getInstance();
-
-    public static void main(String[] args) {
-        final int[] array = {5, 7, 8, 3, 2, 1, 9, 5, 4};
-
-        System.out.println("To sort: " + Arrays.toString(array));
-        asyncQuicksort(
-            array, 0, array.length - 1, 
-            new RequestMonitor(fgExecutor, null) {
-                @Override
-                protected void handleCompleted() {
-                    System.out.println("Sorted: " + Arrays.toString(array));
-                }
-            });
-    }
-
-    static void asyncQuicksort(final int[] array, final int left, 
-        final int right, final RequestMonitor rm) 
-    {
-        if (right > left) {
-            int pivot = left;
-            // TODO: Exercise 2 - Convert the call to partition into an
-            // asynchronous call to asyncPartition().
-            // Hint: The rest of the code below should be executed inside
-            // the DataRequestMonitor.handleCompleted() overriding method.
-            int newPivot = partition(array, left, right, pivot);
-            printArray(array, left, right, newPivot);
-
-            CountingRequestMonitor countingRm = new CountingRequestMonitor(fgExecutor, rm);
-            asyncQuicksort(array, left, newPivot - 1, countingRm);
-            asyncQuicksort(array, newPivot + 1, right, countingRm);
-            countingRm.setDoneCount(2);
-        } else {
-            rm.done();
-        }
-    }
-
-    // TODO Exercise 2 - Convert partition to an asynchronous method.
-    // Hint: a DataRequestMonitor<Integer> should be used to carry the 
-    // return value to the caller.
-    static int partition(int[] array, int left, int right, int pivot)
-    {
-        int pivotValue = array[pivot];
-        array[pivot] = array[right]; 
-        array[right] = pivotValue; 
-        int store = left;
-        for (int i  = left; i < right; i++) {
-            if (array[i] <= pivotValue) {
-                int tmp = array[store];
-                array[store] = array[i];
-                array[i] = tmp;
-                store++;
-            }
-        }
-        array[right] = array[store];
-        array[store] = pivotValue;
-
-        // TODO: Request Monitors Exercise 2 - Return the data to caller using 
-        // a request monitor.
-        return store;
-    }
-
-    static void printArray(int[] array, int left, int right, int pivot) {
-        StringBuffer buffer = new StringBuffer();
-        for (int i = 0; i < array.length; i++ ) {
-            if (i == left) {
-                buffer.append('>');
-            } else if (i == pivot) {
-                buffer.append('-');
-            } else {
-                buffer.append(' ');
-            }
-            buffer.append(array[i]);
-
-            if (i == right) {
-                buffer.append('<');
-            } else if (i == pivot) {
-                buffer.append('-');
-            } else {
-                buffer.append(' ');
-            }
-        }
-
-        System.out.println(buffer);
-    }
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/requestmonitor/answers/Async2Plus2.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Wind River Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Wind River Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.examples.dsf.requestmonitor.answers;
-
-import java.util.concurrent.Executor;
-
-import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
-import org.eclipse.cdt.dsf.concurrent.ImmediateExecutor;
-
-/**
- * Example of using a DataRequestMonitor to retrieve a result from an 
- * asynchronous method.
- */
-public class Async2Plus2 {
-    
-    public static void main(String[] args) {
-        Executor executor = ImmediateExecutor.getInstance();
-        DataRequestMonitor<Integer> rm = 
-            new DataRequestMonitor<Integer>(executor, null) {
-                @Override
-                protected void handleCompleted() {
-                    System.out.println("2 + 2 = " + getData());
-                }
-            };
-        asyncAdd(2, 2, rm);
-    }
-
-    static void asyncAdd(int value1, int value2, DataRequestMonitor<Integer> rm) {
-        rm.setData(value1 + value2);
-        rm.done();
-    }
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/requestmonitor/answers/AsyncHelloWorld.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Wind River Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Wind River Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.examples.dsf.requestmonitor.answers;
-
-import java.util.concurrent.Executor;
-
-import org.eclipse.cdt.dsf.concurrent.ImmediateExecutor;
-import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
-
-/**
- * "Hello world" example which uses an asynchronous method to print out
- * the result.  
- * <p>
- * The main method uses an immediate executor, which executes runnables
- * as soon as they are submitted, in creating its request monitor. 
- * 
- */
-public class AsyncHelloWorld {
-
-    public static void main(String[] args) {
-        Executor executor = ImmediateExecutor.getInstance();
-        RequestMonitor rm = new RequestMonitor(executor, null);
-        asyncHelloWorld(rm);
-    }
-
-    static void asyncHelloWorld(RequestMonitor rm) {
-        System.out.println("Hello world");
-        RequestMonitor rm2 = new RequestMonitor(ImmediateExecutor.getInstance(), rm);
-        asyncHelloWorld2(rm2);
-    }
-    
-    static void asyncHelloWorld2(RequestMonitor rm) {
-        System.out.println("Hello world 2");
-        rm.done();
-    }
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/requestmonitor/answers/AsyncQuicksort.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Wind River Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Wind River Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.examples.dsf.requestmonitor.answers;
-
-import java.util.Arrays;
-import java.util.concurrent.Executor;
-
-import org.eclipse.cdt.dsf.concurrent.CountingRequestMonitor;
-import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
-import org.eclipse.cdt.dsf.concurrent.ImmediateExecutor;
-import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
-
-/**
- * Example of using a CountingRequestMonitor to wait for multiple 
- * asynchronous calls to complete.  
- */
-public class AsyncQuicksort {
-
-    static Executor fgExecutor = ImmediateExecutor.getInstance();
-
-    public static void main(String[] args) {
-        final int[] array = {5, 7, 8, 3, 2, 1, 9, 5, 4};
-
-        System.out.println("To sort: " + Arrays.toString(array));
-        asyncQuicksort(
-            array, 0, array.length - 1, 
-            new RequestMonitor(fgExecutor, null) {
-                @Override
-                protected void handleCompleted() {
-                    System.out.println("Sorted: " + Arrays.toString(array));
-                }
-            });
-    }
-
-    static void asyncQuicksort(final int[] array, final int left, 
-        final int right, final RequestMonitor rm) 
-    {
-        if (right > left) {
-            int pivot = left;
-            asyncPartition(
-                array, left, right, pivot, 
-                new DataRequestMonitor<Integer>(fgExecutor, rm) {
-                    @Override
-                    protected void handleCompleted() {
-                        int newPivot = getData();
-                        printArray(array, left, right, newPivot);
-                       
-                        CountingRequestMonitor countingRm = new CountingRequestMonitor(fgExecutor, rm);
-                        asyncQuicksort(array, left, newPivot - 1, countingRm);
-                        asyncQuicksort(array, newPivot + 1, right, countingRm);
-                        countingRm.setDoneCount(2);
-                    }
-            });
-        } else {
-            rm.done();
-        }
-    }
-
-    static void asyncPartition(int[] array, int left, int right, int pivot, DataRequestMonitor<Integer> rm)
-    {
-        int pivotValue = array[pivot];
-        array[pivot] = array[right]; 
-        array[right] = pivotValue; 
-        int store = left;
-        for (int i  = left; i < right; i++) {
-            if (array[i] <= pivotValue) {
-                int tmp = array[store];
-                array[store] = array[i];
-                array[i] = tmp;
-                store++;
-            }
-        }
-        array[right] = array[store];
-        array[store] = pivotValue;
-
-        // Java 5 automatically converts the int type of the store variable
-        // to an Integer object.
-        rm.setData(store);
-        rm.done();
-    }
-
-    static void printArray(int[] array, int left, int right, int pivot) {
-        StringBuffer buffer = new StringBuffer();
-        for (int i = 0; i < array.length; i++ ) {
-            if (i == left) {
-                buffer.append('>');
-            } else if (i == pivot) {
-                buffer.append('-');
-            } else {
-                buffer.append(' ');
-            }
-            buffer.append(array[i]);
-
-            if (i == right) {
-                buffer.append('<');
-            } else if (i == pivot) {
-                buffer.append('-');
-            } else {
-                buffer.append(' ');
-            }
-        }
-
-        System.out.println(buffer);
-    }
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/timers/ServicesShutdownSequence.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/timers/ServicesShutdownSequence.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 Wind River Systems and others.
+ * Copyright (c) 2006, 2008 Wind River Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -25,7 +25,7 @@
  */
 public class ServicesShutdownSequence extends Sequence {
 
-    // Session that the services are running in.
+    // Session to that the services are running in.
     final private DsfSession fSession;
     
     // DSF Services is created as the first step of the sequence.  It 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/timers/TimersVMProvider.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/timers/TimersVMProvider.java	Wed Aug 05 17:35:39 2009 -0500
@@ -42,55 +42,12 @@
     /** Enumeration of possible layouts for the timers view model */
     public enum ViewLayout { TRIGGERS_AT_TOP, TIMERS_AT_TOP }
     
-    /** Have we registered ourselves as a listener for DM events? */  
-    private boolean fRegisteredEventListener;
-    
     public TimersVMProvider(AbstractVMAdapter adapter, IPresentationContext presentationContext, DsfSession session) {
         super(adapter, presentationContext, session);
-        
-        // Add ourselves as listener for DM events events.
-        try {
-            session.getExecutor().execute(new Runnable() {
-                public void run() {
-                    if (DsfSession.isSessionActive(getSession().getId())) {
-                        getSession().addServiceEventListener(TimersVMProvider.this, null);
-                        fRegisteredEventListener = true;
-                    }
-                }
-            });
-        } catch (RejectedExecutionException e) {
-            // Session shut down, not much we can do but wait to be disposed.
-        }
-        
         // Set the initial view layout.
         setViewLayout(ViewLayout.TIMERS_AT_TOP);   
     }
     
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.dsf.ui.viewmodel.AbstractVMProvider#dispose()
-     */
-    @Override
-	public void dispose() {
-		// Remove ourselves as listener for DM events events. In practice, we
-		// get called after the session has shut down, so we'll end up with a
-		// RejectedExecutionException. We put this here all the same for
-		// completeness sake.
-        try {
-            getSession().getExecutor().execute(new Runnable() {
-                public void run() {
-                    if (fRegisteredEventListener && DsfSession.isSessionActive(getSession().getId())) {
-                        getSession().removeServiceEventListener(TimersVMProvider.this);
-                        fRegisteredEventListener = false;
-                    }
-                }
-            });
-        } catch (RejectedExecutionException e) {
-            // Session shut down, not much we can do but wait to be disposed.
-        }
-        
-        super.dispose();
-    }
-    
     /** 
      * Configures a new layout for the timers view model.
      * @param layout New layout to use.
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.gnu.dsf-feature/feature.xml	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.gnu.dsf-feature/feature.xml	Wed Aug 05 17:35:39 2009 -0500
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.cdt.gnu.dsf"
       label="%featureName"
-      version="2.1.0.qualifier"
+      version="2.0.0.qualifier"
       provider-name="%providerName">
 
    <description>
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate.java	Wed Aug 05 17:35:39 2009 -0500
@@ -136,10 +136,6 @@
 	private List orderedProjects;
 	private String preLaunchBuildConfiguration;
 
-	/**
-	 * Used in conjunction with build before launch settings in the main tab.
-	 */
-	private boolean buildForLaunchCalled;
 	abstract public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor)
 			throws CoreException;
 
@@ -595,24 +591,11 @@
 	 * @return whether the debug platform should perform an incremental
 	 *         workspace build before the launch
 	 * @throws CoreException
-	 *             if an exception occurs while building
+	 *             if an exception occurrs while building
 	 */
 	@Override
 	public boolean buildForLaunch(ILaunchConfiguration configuration, String mode, IProgressMonitor monitor) throws CoreException {
-
-		buildForLaunchCalled = true;
-		
-		// check the build before launch setting and honor it
-		int buildBeforeLaunchValue = configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_BUILD_BEFORE_LAUNCH,
-				ICDTLaunchConfigurationConstants.BUILD_BEFORE_LAUNCH_USE_WORKSPACE_SETTING);
-
-		// we shouldn't be getting called if the workspace setting is disabled, so assume we need to
-		// build unless the user explicitly disabled it in the main tab of the launch.
-		if (buildBeforeLaunchValue == ICDTLaunchConfigurationConstants.BUILD_BEFORE_LAUNCH_DISABLED) {
-			return false;
-		}
-		
-		//This matches the old code, but I don't know that it is the right behavior.
+		//This matches the old code, but I don't know that it is the right behaviour.
 		//We should be building the local project as well, not just the ordered projects
 		if(orderedProjects == null) {		
 			return false;
@@ -683,26 +666,6 @@
 	 */
 	@Override
 	public boolean finalLaunchCheck(ILaunchConfiguration configuration, String mode, IProgressMonitor monitor) throws CoreException {
-		
-		if (!buildForLaunchCalled) {
-			// buildForLaunch was not called which means that the workspace pref is disabled.  see if the user enabled the
-			// launch specific setting in the main tab.  if so, we do call buildBeforeLaunch here.
-			if (ICDTLaunchConfigurationConstants.BUILD_BEFORE_LAUNCH_ENABLED == configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_BUILD_BEFORE_LAUNCH,
-					ICDTLaunchConfigurationConstants.BUILD_BEFORE_LAUNCH_USE_WORKSPACE_SETTING)) {
-				
-				IProgressMonitor buildMonitor = new SubProgressMonitor(monitor, 10, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK);
-				buildMonitor.beginTask(LaunchMessages.getString("AbstractCLaunchDelegate.BuildBeforeLaunch"), 10); //$NON-NLS-1$	
-				buildMonitor.subTask(LaunchMessages.getString("AbstractCLaunchDelegate.PerformingBuild")); //$NON-NLS-1$
-				if (buildForLaunch(configuration, mode, new SubProgressMonitor(buildMonitor, 7))) {
-					buildMonitor.subTask(LaunchMessages.getString("AbstractCLaunchDelegate.PerformingIncrementalBuild")); //$NON-NLS-1$
-					ResourcesPlugin.getWorkspace().build(IncrementalProjectBuilder.INCREMENTAL_BUILD, new SubProgressMonitor(buildMonitor, 3));				
-				}
-				else {
-					buildMonitor.worked(3); /* No incremental build required */
-				}
-			}
-		}
-
 		boolean continueLaunch = true;
 		if(orderedProjects == null) {
 			return continueLaunch;
@@ -807,8 +770,6 @@
 			monitor = new NullProgressMonitor();
 		}
 
-		buildForLaunchCalled = false;
-
 		int scale = 1000;
 		int totalWork = 2 * scale;
 		
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchMessages.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchMessages.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -30,9 +30,6 @@
 AbstractCLaunchDelegate.searching_for_errors_in=Searching for compile errors in 
 AbstractCLaunchDelegate.20=Building prerequisite project list
 AbstractCLaunchDelegate.Program_is_not_a_recongnized_executable=Program is not a recognized executable.
-AbstractCLaunchDelegate.BuildBeforeLaunch=Build before launch - 
-AbstractCLaunchDelegate.PerformingBuild=Performing required build...
-AbstractCLaunchDelegate.PerformingIncrementalBuild=Performing incremental workspace build...
 
 LocalRunLaunchDelegate.Launching_Local_C_Application=Launching Local C/C++ Application
 LocalRunLaunchDelegate.Failed_setting_runtime_option_though_debugger=Failed to set program arguments, environment or working directory.
@@ -89,15 +86,6 @@
 CMainTab.Use_Active=Use Active
 #For CMainTab.Configuration_name: {0} - project name; {1} - configuration name
 CMainTab.Configuration_name={0} {1}
-CMainTab.Build_options=Build (if required) before launching
-CMainTab.Disable_build_button_label=Disable auto build
-CMainTab.Disable_build_button_tooltip=Requires manually building project before launching (this may improve launch performance)
-CMainTab.Enable_build_button_label=Enable auto build
-CMainTab.Enable_build_button_tooltip=Always build project before launching (this may impact launch performance)
-CMainTab.Workspace_settings_button_label=Use workspace settings
-CMainTab.Workspace_settings_button_tooltip=Use workspace settings
-CMainTab.Workspace_settings_link_label=<a>Configure Workspace Settings...</a>
-CMainTab.Workspace_settings_page_id=org.eclipse.debug.ui.LaunchingPreferencePage
 
 CDebuggerTab.Advanced_Options_Dialog_Title=Advanced Options
 CDebuggerTab.Stop_at_main_on_startup=Stop on startup at:
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java	Wed Aug 05 17:35:39 2009 -0500
@@ -66,12 +66,9 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Link;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.dialogs.ElementListSelectionDialog;
-import org.eclipse.ui.dialogs.PreferencesUtil;
 import org.eclipse.ui.dialogs.TwoPaneElementSelector;
 
 /**
@@ -117,11 +114,6 @@
 	 * @since 6.0
 	 */
 	protected Combo fBuildConfigCombo;
-	// Build option UI widgets
-	protected Button fDisableBuildButton;
-	protected Button fEnableBuildButton;
-	protected Button fWorkspaceSettingsButton;
-	protected Link fWorkpsaceSettingsLink;
 
 	private final boolean fWantsTerminalOption;
 	protected Button fTerminalButton;
@@ -172,7 +164,6 @@
 		createVerticalSpacer(comp, 1);
 		createProjectGroup(comp, 1);
 		createBuildConfigCombo(comp, 1);
-		createBuildOptionGroup(comp, 1);
 		createExeFileGroup(comp, 1);
 		createVerticalSpacer(comp, 1);
 		if (fSpecifyCoreFile) {
@@ -329,65 +320,6 @@
 		});
 	}
 
-	protected void createBuildOptionGroup(final Composite parent, int colSpan) {
-		Group buildGroup = new Group(parent, SWT.NONE);
-		GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
-		gridData.horizontalSpan = colSpan;
-		GridLayout gridLayout = new GridLayout();
-		gridLayout.numColumns = 2;
-		gridLayout.marginHeight = 5;
-		gridLayout.marginWidth = 5;
-		gridLayout.makeColumnsEqualWidth= true;
-		buildGroup.setLayoutData(gridData);
-		buildGroup.setLayout(gridLayout);
-		buildGroup.setText("Build (if required) before launching"); //$NON-NLS-1$
-
-		fDisableBuildButton = new Button(buildGroup, SWT.RADIO);
-		fDisableBuildButton.setText(LaunchMessages.getString("CMainTab.Disable_build_button_label")); //$NON-NLS-1$
-		fDisableBuildButton.setToolTipText(LaunchMessages.getString("CMainTab.Disable_build_button_tooltip")); //$NON-NLS-1$
-		fDisableBuildButton.addSelectionListener(new SelectionAdapter() {
-
-			public void widgetSelected(SelectionEvent evt) {
-				updateLaunchConfigurationDialog();
-			}
-		});
-		
-		new Label(buildGroup, SWT.NONE);
-
-		fEnableBuildButton = new Button(buildGroup, SWT.RADIO);
-		fEnableBuildButton.setText(LaunchMessages.getString("CMainTab.Enable_build_button_label")); //$NON-NLS-1$
-		fEnableBuildButton.setToolTipText(LaunchMessages.getString("CMainTab.Enable_build_button_tooltip")); //$NON-NLS-1$
-		fEnableBuildButton.addSelectionListener(new SelectionAdapter() {
-
-			public void widgetSelected(SelectionEvent evt) {
-				updateLaunchConfigurationDialog();
-			}
-		});
-		
-		new Label(buildGroup, SWT.NONE);
-		
-		fWorkspaceSettingsButton = new Button(buildGroup, SWT.RADIO);
-		fWorkspaceSettingsButton.setText(LaunchMessages.getString("CMainTab.Workspace_settings_button_label")); //$NON-NLS-1$
-		fWorkspaceSettingsButton.setToolTipText(LaunchMessages.getString("CMainTab.Workspace_settings_button_tooltip")); //$NON-NLS-1$
-		fWorkspaceSettingsButton.addSelectionListener(new SelectionAdapter() {
-
-			public void widgetSelected(SelectionEvent evt) {
-				updateLaunchConfigurationDialog();
-			}
-		});
-
-		fWorkpsaceSettingsLink = new Link(buildGroup, SWT.NONE); //$NON-NLS-1$
-		fWorkpsaceSettingsLink.setText(LaunchMessages.getString("CMainTab.Workspace_settings_link_label")); //$NON-NLS-1$
-		fWorkpsaceSettingsLink.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				PreferencesUtil.createPreferenceDialogOn(
-						parent.getShell(), 
-						LaunchMessages.getString("CMainTab.Workspace_settings_page_id"), //$NON-NLS-1$
-						null, 
-						null).open();
-			}
-		});
-	}
 	/** @since 6.0 */
 	protected void createCoreFileGroup(Composite parent, int colSpan) {
 		Composite coreComp = new Composite(parent, SWT.NONE);
@@ -463,7 +395,6 @@
 		updateProjectFromConfig(config);
 		updateProgramFromConfig(config);
 		updateCoreFromConfig(config);
-		updateBuildOptionFromConfig(config);
 		updateTerminalFromConfig(config);
 	}
 
@@ -493,16 +424,13 @@
 	}
 
 	protected void updateProgramFromConfig(ILaunchConfiguration config) {
-		if (fProgText != null)
-		{
-			String programName = EMPTY_STRING;
-			try {
-				programName = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, EMPTY_STRING);
-			} catch (CoreException ce) {
-				LaunchUIPlugin.log(ce);
-			}
-			fProgText.setText(programName);
+		String programName = EMPTY_STRING;
+		try {
+			programName = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, EMPTY_STRING);
+		} catch (CoreException ce) {
+			LaunchUIPlugin.log(ce);
 		}
+		fProgText.setText(programName);
 	}
 
 	/** @since 6.0 */
@@ -514,23 +442,10 @@
 			} catch (CoreException ce) {
 				LaunchUIPlugin.log(ce);
 			}
-			fProgText.setText(coreName);
+			fCoreText.setText(coreName);
 		}
 	}
-
-	protected void updateBuildOptionFromConfig(ILaunchConfiguration config) {
-		int buildBeforeLaunchValue = ICDTLaunchConfigurationConstants.BUILD_BEFORE_LAUNCH_USE_WORKSPACE_SETTING;
-		try {
-			buildBeforeLaunchValue = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_BUILD_BEFORE_LAUNCH, buildBeforeLaunchValue);
-		} catch (CoreException e) {
-			LaunchUIPlugin.log(e);
-		}
-
-		fDisableBuildButton.setSelection(buildBeforeLaunchValue == ICDTLaunchConfigurationConstants.BUILD_BEFORE_LAUNCH_DISABLED);
-		fEnableBuildButton.setSelection(buildBeforeLaunchValue == ICDTLaunchConfigurationConstants.BUILD_BEFORE_LAUNCH_ENABLED);
-		fWorkspaceSettingsButton.setSelection(buildBeforeLaunchValue == ICDTLaunchConfigurationConstants.BUILD_BEFORE_LAUNCH_USE_WORKSPACE_SETTING);
-	}
-
+	
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -549,28 +464,14 @@
 			config.setMappedResources(null);
 		}
 		config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, fProjText.getText());
-		if (fBuildConfigCombo != null) {
-			config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_BUILD_CONFIG_ID, (String)fBuildConfigCombo.getData(Integer.toString(fBuildConfigCombo.getSelectionIndex())));
-		}
-		if (fProgText != null) {
-			config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, fProgText.getText());
-		}
+		config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_BUILD_CONFIG_ID, (String)fBuildConfigCombo.getData(Integer.toString(fBuildConfigCombo.getSelectionIndex())));
+		config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, fProgText.getText());
 		if (fCoreText != null) {
 			config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_COREFILE_PATH, fCoreText.getText());
 		}
 		if (fTerminalButton != null) {
 			config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_USE_TERMINAL, fTerminalButton.getSelection());
 		}
-
-		if (fDisableBuildButton != null) {
-			int buildBeforeLaunchValue = ICDTLaunchConfigurationConstants.BUILD_BEFORE_LAUNCH_USE_WORKSPACE_SETTING;
-			if (fDisableBuildButton.getSelection()) {
-				buildBeforeLaunchValue = ICDTLaunchConfigurationConstants.BUILD_BEFORE_LAUNCH_DISABLED;
-			} else if (fEnableBuildButton.getSelection()) {
-				buildBeforeLaunchValue = ICDTLaunchConfigurationConstants.BUILD_BEFORE_LAUNCH_ENABLED;
-			}
-			config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_BUILD_BEFORE_LAUNCH, buildBeforeLaunchValue);
-		}
 	}
 
 	/**
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.make.ui/META-INF/MANIFEST.MF	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.make.ui/META-INF/MANIFEST.MF	Wed Aug 05 17:35:39 2009 -0500
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.cdt.make.ui; singleton:=true
-Bundle-Version: 6.1.0.qualifier
+Bundle-Version: 6.0.1.qualifier
 Bundle-Activator: org.eclipse.cdt.make.internal.ui.MakeUIPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeView.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeView.java	Wed Aug 05 17:35:39 2009 -0500
@@ -59,6 +59,8 @@
 import org.eclipse.swt.dnd.FileTransfer;
 import org.eclipse.swt.dnd.TextTransfer;
 import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.Shell;
@@ -124,7 +126,18 @@
 				handleSelectionChanged(event);
 			}
 		});
+		fViewer.getControl().addKeyListener(new KeyAdapter() {
 
+			@Override
+			public void keyPressed(KeyEvent event) {
+				if (event.character == SWT.DEL && event.stateMask == 0) {
+					handleDeleteKeyPressed();
+				}
+			}
+		});
+
+		fViewer.setContentProvider(new MakeContentProvider());
+		fViewer.setLabelProvider(new MakeLabelProvider());
 		fViewer.setSorter(new ViewerSorter() {
 
 			@Override
@@ -332,6 +345,10 @@
 		// manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
 	}
 
+	protected void handleDeleteKeyPressed() {
+		deleteTargetAction.run();
+	}
+
 	protected void handleDoubleClick(DoubleClickEvent event) {
 		buildTargetAction.run();
 	}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/makefile	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/makefile	Wed Aug 05 17:35:39 2009 -0500
@@ -1,43 +1,43 @@
-################################################################################
-# Automatically-generated file. Do not edit!
-################################################################################
-
-ROOT := ..
-
--include $(ROOT)/makefile.init
-
-RM := rm -rf
-
-# All of the sources participating in the build are defined here
--include sources.mk
--include $(SUBDIRS:%=%/subdir.mk)
--include objects.mk
-ifneq ($(strip $(DEPS)),)
--include $(DEPS)
-endif
-
--include $(ROOT)/makefile.defs
-
-# Add inputs and outputs from these tool invocations to the build variables 
-
-# All Target
-all: lib.a
-
-# Tool invocations
-lib.a: $(OBJS) $(USER_OBJS)
-	@echo 'Building target: $@'
-	@echo 'Invoking: MBS30.archiver.gnu'
-	@echo ar -r lib.a $(OBJS) $(USER_OBJS) $(LIBS)
-	@ar -r lib.a $(OBJS) $(USER_OBJS) $(LIBS)
-	@echo 'Finished building target: $@'
-	@echo ' '
-
-# Other Targets
-clean:
-	-$(RM) $(OBJS)$(ARCHIVES)$(DEPS) lib.a
-	-@echo ' '
-
-.PHONY: all clean dependents
-.SECONDARY:
-
--include $(ROOT)/makefile.targets
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+ROOT := ..
+
+-include $(ROOT)/makefile.init
+
+RM := rm -rf
+
+# All of the sources participating in the build are defined here
+-include sources.mk
+-include $(SUBDIRS:%=%/subdir.mk)
+-include objects.mk
+ifneq ($(strip $(DEPS)),)
+-include $(DEPS)
+endif
+
+-include $(ROOT)/makefile.defs
+
+# Add inputs and outputs from these tool invocations to the build variables 
+
+# All Target
+all: lib.a
+
+# Tool invocations
+lib.a: $(OBJS) $(USER_OBJS)
+	@echo 'Building target: $@'
+	@echo 'Invoking: MBS30.archiver.gnu'
+	@echo ar -r lib.a $(OBJS) $(USER_OBJS) $(LIBS)
+	@ar -r lib.a $(OBJS) $(USER_OBJS) $(LIBS)
+	@echo 'Finished building target: $@'
+	@echo ' '
+
+# Other Targets
+clean:
+	-$(RM) $(OBJS)$(ARCHIVES)$(DEPS) lib.a
+	-@echo ' '
+
+.PHONY: all clean dependents
+.SECONDARY:
+
+-include $(ROOT)/makefile.targets
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/objects.mk	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/objects.mk	Wed Aug 05 17:35:39 2009 -0500
@@ -1,7 +1,7 @@
-################################################################################
-# Automatically-generated file. Do not edit!
-################################################################################
-
-LIBS :=
-
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+LIBS :=
+
 USER_OBJS :=
\ No newline at end of file
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/sources.mk	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/sources.mk	Wed Aug 05 17:35:39 2009 -0500
@@ -1,14 +1,14 @@
-################################################################################
-# Automatically-generated file. Do not edit!
-################################################################################
-
-C_SRCS := 
-O_SRCS := 
-OBJS := 
-ARCHIVES := 
-DEPS := 
-
-# Every subdirectory with source files must be described here
-SUBDIRS := \
-. \
-
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+C_SRCS := 
+O_SRCS := 
+OBJS := 
+ARCHIVES := 
+DEPS := 
+
+# Every subdirectory with source files must be described here
+SUBDIRS := \
+. \
+
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/subdir.mk	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/subdir.mk	Wed Aug 05 17:35:39 2009 -0500
@@ -1,34 +1,34 @@
-################################################################################
-# Automatically-generated file. Do not edit!
-################################################################################
-
-# Add inputs and outputs from these tool invocations to the build variables 
-C_SRCS += \
-$(ROOT)/f1.c \
-$(ROOT)/f2.c 
-
-OBJS += \
-${addprefix ./, \
-f1.o \
-f2.o \
-}
-
-DEPS += \
-${addprefix ./, \
-f1.d \
-f2.d \
-}
-
-
-# Each subdirectory must supply rules for building sources it contributes
-%.o: $(ROOT)/%.c
-	@echo 'Building file: $<'
-	@echo 'Invoking: MBS30.compiler.gnu.c'
-	@echo gcc -O0 -g3 -Wall -c -fmessage-length=0 -o$@ $<
-	@gcc -O0 -g3 -Wall -c -fmessage-length=0 -o$@ $< && \
-	echo -n $(@:%.o=%.d) $(dir $@) > $(@:%.o=%.d) && \
-	gcc -MM -MG -P -w -O0 -g3 -Wall -c -fmessage-length=0  $< >> $(@:%.o=%.d)
-	@echo 'Finished building: $<'
-	@echo ' '
-
-
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables 
+C_SRCS += \
+$(ROOT)/f1.c \
+$(ROOT)/f2.c 
+
+OBJS += \
+${addprefix ./, \
+f1.o \
+f2.o \
+}
+
+DEPS += \
+${addprefix ./, \
+f1.d \
+f2.d \
+}
+
+
+# Each subdirectory must supply rules for building sources it contributes
+%.o: $(ROOT)/%.c
+	@echo 'Building file: $<'
+	@echo 'Invoking: MBS30.compiler.gnu.c'
+	@echo gcc -O0 -g3 -Wall -c -fmessage-length=0 -o$@ $<
+	@gcc -O0 -g3 -Wall -c -fmessage-length=0 -o$@ $< && \
+	echo -n $(@:%.o=%.d) $(dir $@) > $(@:%.o=%.d) && \
+	gcc -MM -MG -P -w -O0 -g3 -Wall -c -fmessage-length=0  $< >> $(@:%.o=%.d)
+	@echo 'Finished building: $<'
+	@echo ' '
+
+
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IManagedOptionValueHandler.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IManagedOptionValueHandler.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 Symbian Ltd and others.
+ * Copyright (c) 2005, 2007 Symbian Ltd and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,121 +11,104 @@
 package org.eclipse.cdt.managedbuilder.core;
 
 /**
- * This interface represents an option value handler in the managed build
+ * This interface represents an option value handler in the managed build 
  * system. It is used to enable a tool integrator to use the MBS configuration
  * GUI, while linking to an alternative back-end.
  * 
  * @since 3.0
  */
-public interface IManagedOptionValueHandler {
-
-	/**
-	 * The option is opened, i.e. its UI element is created. The valueHandler
-	 * can override the value of the option. If it does not, the last persisted
-	 * value is used.
-	 */
-	public final int EVENT_OPEN = 1;
-
-	/**
-	 * The option is closed. i.e. its value has been destroyed when a
-	 * configuration/resource gets deleted. The value handler can do various
-	 * things associated with destroying the option such as freeing the memory
-	 * associated with this option callback, if needed.
-	 */
-	public final int EVENT_CLOSE = 2;
+public interface IManagedOptionValueHandler{   
 
-	/**
-	 * The default value option::defaultValue has been set. The handleValue
-	 * callback is called afterwards to give the handler a chance to override
-	 * the value or to update the value in its back-end. Typically this event
-	 * will be called when the Restore Defaults button is pressed.
-	 */
-	public final int EVENT_SETDEFAULT = 3;
-
-	/**
-	 * The option has been set by pressing the Apply button (or the OK button).
-	 * The valueHandler can transfer the value of the option to its own
-	 * back-end.
-	 */
-	public final int EVENT_APPLY = 4;
-
-	/**
-	 * Posted when the managed build extensions (defined in the manifest files)
-	 * are loaded. The handler is allowed to adjust the extension elements
-	 */
-	public final int EVENT_LOAD = 5;
+	public final int EVENT_OPEN = 1;       /** The option is opened, i.e. its UI element 
+	                                        *  is created. The valueHandler can override 
+	                                        *  the value of the option. If it does not, 
+	                                        *  the last persisted value is used. */
+	public final int EVENT_CLOSE = 2;      /** The option is closed. i.e. its value has been
+											*  destroyed when a configuration/resource gets deleted.
+											*  The valuehandler can do various things assocaited with
+											*  destroying the option such as freeing the memory
+											*  associated with this option callback, if needed. */
+	public final int EVENT_SETDEFAULT = 3; /** The default value option::defaultValue has 
+	                                        *  been set. The handleValue callback is called 
+	                                        *  afterwards to give the handler a chance to 
+	                                        *  override the value or to update the value in 
+	                                        *  its back-end. Typically this event will be called 
+	                                        *  when the Restore Defaults button is pressed. */
+	public final int EVENT_APPLY = 4;      /** The option has been set by pressing the Apply 
+	                                        *  button (or the OK button). The valueHandler can 
+	                                        *  transfer the value of the option to its own 
+	                                        *  back-end. */
+	public final int EVENT_LOAD = 5;       /** Posted when the managed build extensions (defined in the manifest files) 
+										     *  are loadded.
+										     *  The handler is allowed to adjust the extension elements
+										     */
+	
+/**
+ * Handles transfer between values between UI element and 
+ * back-end in different circumstances.
+ * 
+ * @param configuration  build configuration of option 
+ *                       (may be IConfiguration or IResourceConfiguration)
+ * @param holder         contains the holder of the option
+ * @param option         the option that is handled
+ * @param extraArgument  extra argument for handler
+ * @param event          event to be handled 
+ *
+ * @return  True when the event was handled, false otherwise.
+ * This enables default event handling can take place.
+ */
+boolean handleValue(IBuildObject configuration, 
+                    IHoldsOptions holder, 
+                    IOption option,
+                    String extraArgument, 
+                    int event);
 
-	/**
-	 * Handles transfer between values between UI element and back-end in
-	 * different circumstances.
-	 * 
-	 * @param configuration
-	 *            build configuration of option (may be IConfiguration or
-	 *            IResourceConfiguration)
-	 * @param holder
-	 *            contains the holder of the option
-	 * @param option
-	 *            the option that is handled
-	 * @param extraArgument
-	 *            extra argument for handler
-	 * @param event
-	 *            event to be handled
-	 * 
-	 * @return True when the event was handled, false otherwise. This enables
-	 *         default event handling can take place.
-	 */
-	boolean handleValue(IBuildObject configuration, IHoldsOptions holder,
-			IOption option, String extraArgument, int event);
+/**
+ * Checks whether the value of an option is its default value.
+ * 
+ * @param configuration  build configuration of option 
+ *                       (may be IConfiguration or IResourceConfiguration)
+ * @param holder         contains the holder of the option
+ * @param option         the option that is handled
+ * @param extraArgument  extra argument for handler
+ *
+ * The additional options besides configuration are supplied to  
+ * provide enough information for querying the default value from 
+ * a potential data storage back-end.
+ * 
+ * @return  True if the options value is its default value and
+ * False otherwise. This enables that default event handling can 
+ * take place.
+ */
+boolean isDefaultValue(IBuildObject configuration, 
+                       IHoldsOptions holder, 
+                       IOption option, 
+                       String extraArgument);
 
-	/**
-	 * Checks whether the value of an option is its default value.
-	 * 
-	 * @param configuration
-	 *            build configuration of option (may be IConfiguration or
-	 *            IResourceConfiguration)
-	 * @param holder
-	 *            contains the holder of the option
-	 * @param option
-	 *            the option that is handled
-	 * @param extraArgument
-	 *            extra argument for handler
-	 * 
-	 *            The additional options besides configuration are supplied to
-	 *            provide enough information for querying the default value from
-	 *            a potential data storage back-end.
-	 * 
-	 * @return True if the options value is its default value and False
-	 *         otherwise. This enables that default event handling can take
-	 *         place.
-	 */
-	boolean isDefaultValue(IBuildObject configuration, IHoldsOptions holder,
-			IOption option, String extraArgument);
-
-	/**
-	 * Checks whether an enumeration value of an option is currently a valid
-	 * choice. The use-case for this method is the case, where the set of valid
-	 * enumerations in the plugin.xml file changes. The UI will remove entries
-	 * from selection lists if the value returns false.
-	 * 
-	 * @param configuration
-	 *            build configuration of option (may be IConfiguration or
-	 *            IResourceConfiguration)
-	 * @param holder
-	 *            contains the holder of the option
-	 * @param option
-	 *            the option that is handled
-	 * @param extraArgument
-	 *            extra argument for handler
-	 * @param enumValue
-	 *            enumeration value that is to be checked
-	 * 
-	 *            The additional options besides configuration are supplied to
-	 *            provide enough information for querying information from a a
-	 *            potential data storage back-end.
-	 * 
-	 * @return True if the enumeration value is valid and False otherwise.
-	 */
-	boolean isEnumValueAppropriate(IBuildObject configuration,
-			IHoldsOptions holder, IOption option, String extraArgument,
-			String enumValue);
+/**
+ * Checks whether an enumeration value of an option is currently a 
+ * valid choice. The use-case for this method is the case, where
+ * the set of valid enumerations in the plugin.xml file changes.
+ * The UI will remove entries from selection lists if the value 
+ * returns false.
+ * 
+ * @param configuration  build configuration of option 
+ *                       (may be IConfiguration or IResourceConfiguration)
+ * @param holder         contains the holder of the option
+ * @param option         the option that is handled
+ * @param extraArgument  extra argument for handler
+ * @param enumValue      enumeration value that is to be checked
+ *
+ * The additional options besides configuration are supplied to  
+ * provide enough information for querying information from a 
+ * a potential data storage back-end.
+ * 
+ * @return  True if the enumeration value is valid and False 
+ * otherwise.
+ */
+boolean isEnumValueAppropriate(IBuildObject configuration, 
+                               IHoldsOptions holder, 
+                               IOption option,
+                               String extraArgument, 
+                               String enumValue);
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/GnuMakefileGenerator.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/GnuMakefileGenerator.java	Wed Aug 05 17:35:39 2009 -0500
@@ -4691,11 +4691,8 @@
 					" ", //$NON-NLS-1$
 					IBuildMacroProvider.CONTEXT_CONFIGURATION,
 					builder);
-			if (resolved!=null) {
-				resolved = resolved.trim();
-				if(resolved.length() > 0)
-					buildTargetName = resolved;
-			}
+			if((resolved = resolved.trim()).length() > 0)
+				buildTargetName = resolved;
 		} catch (BuildMacroException e){
 		}
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.master/feature.xml	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.master/feature.xml	Wed Aug 05 17:35:39 2009 -0500
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.cdt.master"
       label="CDT Master Feature"
-      version="6.1.0"
+      version="6.0.1"
       provider-name="Eclipse.org">
 
    <description url="http://www.example.com/description">
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.platform-feature/feature.xml	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.platform-feature/feature.xml	Wed Aug 05 17:35:39 2009 -0500
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.cdt.platform"
       label="%featureName"
-      version="6.1.0.qualifier"
+      version="6.0.0.qualifier"
       provider-name="Eclipse.org">
 
    <description>
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/build.xml	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/build.xml	Wed Aug 05 17:35:39 2009 -0500
@@ -17,7 +17,7 @@
 		<property name="eclipseDist" value="/home/data/httpd/download.eclipse.org/eclipse/downloads/drops/R-3.5-200906111540/eclipse-SDK-3.5-linux-gtk-ppc.tar.gz"/>
 		<property name="mylynDist" value="/home/data/httpd/download.eclipse.org/tools/mylyn/update/galileo/mylyn-3.2.0.I20090520-2300-e3.4.zip"/>
 		<property name="rseDist" value="/home/data/httpd/download.eclipse.org/dsdp/tm/downloads/drops/R-3.1-200906171400/RSE-SDK-3.1.zip"/>
-		<property name="branchVersion" value="6.1.0"/>
+		<property name="branchVersion" value="6.0.1"/>
 		<property name="timestamp" value="${DSTAMP}${TSTAMP}" />
 		<property name="forceContextQualifier" value="${timestamp}"/>
 		<property name="buildingOSGi" value="true"/>
@@ -40,7 +40,7 @@
 		<property name="baseos" value="${osgi.os}"/>
 		<property name="basews" value="${osgi.ws}"/>
 		<property name="basearch" value="${osgi.arch}"/>
-		<property name="tagbranch" value=""/>
+		<property name="tagbranch" value="-r cdt_6_0"/>
 		<property name="tagname" value="v${timestamp}"/>
 		<property name="testReports" value="${zipsdir}/testReports"/>
 		<property name="junit-report-output" value="${testReports}"/>
@@ -300,9 +300,8 @@
 		<property name="copyToDir" value="/home/www/tools/cdt/builds/${branchVersion}"/>
 		<replace file="${copyToDir}/index.html">
 			<replacetoken><![CDATA[  <!-- add here -->]]></replacetoken>
-			<replacevalue><![CDATA[  <!-- add here -->
-<li><a href="@buildType@.@buildId@/index.html">@buildId@</a></li>]]>
-			</replacevalue>
+			<replacevalue><![CDATA[  <li><a href="@buildType@.@buildId@/index.html">@buildId@</a></li>
+  <!-- add here -->]]></replacevalue>
 		</replace>
 		<replace file="${copyToDir}/index.html">
 			<replacefilter token="@buildType@" value="${buildType}"/>
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/buildsite.xml	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/buildsite.xml	Wed Aug 05 17:35:39 2009 -0500
@@ -3,10 +3,10 @@
 	<category-def name="CDT Main Features" label="CDT Main Features"/>
 	<category-def name="CDT Optional Features" label="CDT Optional Features"/>
 	
-	<feature id="org.eclipse.cdt" url="features/org.eclipse.cdt_6.1.0.@timeStamp@.jar" version="6.1.0.@timeStamp@">
+	<feature id="org.eclipse.cdt" url="features/org.eclipse.cdt_6.0.0.@timeStamp@.jar" version="6.0.0.@timeStamp@">
 		<category name="CDT Main Features"/>
 	</feature>
-	<feature id="org.eclipse.cdt.sdk" url="features/org.eclipse.cdt.sdk_6.1.0.@timeStamp@.jar" version="6.1.0.@timeStamp@">
+	<feature id="org.eclipse.cdt.sdk" url="features/org.eclipse.cdt.sdk_6.0.0.@timeStamp@.jar" version="6.0.0.@timeStamp@">
 		<category name="CDT Main Features"/>
 	</feature>
 	<feature id="org.eclipse.cdt.debug.gdbjtag" url="features/org.eclipse.cdt.debug.gdbjtag_5.1.0.@timeStamp@.jar" version="5.1.0.@timeStamp@">
@@ -45,10 +45,10 @@
 	<feature id="org.eclipse.cdt.gnu.debug" url="features/org.eclipse.cdt.gnu.debug_6.0.0.@timeStamp@.jar" version="6.0.0.@timeStamp@">
 		<category name="CDT Optional Features"/>
 	</feature>
-	<feature id="org.eclipse.cdt.platform" url="features/org.eclipse.cdt.platform_6.1.0.@timeStamp@.jar" version="6.1.0.@timeStamp@">
+	<feature id="org.eclipse.cdt.platform" url="features/org.eclipse.cdt.platform_6.0.0.@timeStamp@.jar" version="6.0.0.@timeStamp@">
 		<category name="CDT Optional Features"/>
 	</feature>
-	<feature id="org.eclipse.cdt.gnu.dsf" url="features/org.eclipse.cdt.gnu.dsf_2.1.0.@timeStamp@.jar" version="2.1.0.@timeStamp@">
+	<feature id="org.eclipse.cdt.gnu.dsf" url="features/org.eclipse.cdt.gnu.dsf_2.0.0.@timeStamp@.jar" version="2.0.0.@timeStamp@">
 		<category name="CDT Optional Features"/>
 	</feature>
 	<feature id="org.eclipse.cdt.examples.dsf" url="features/org.eclipse.cdt.examples.dsf_2.0.0.@timeStamp@.jar" version="2.0.0.@timeStamp@">
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/c99/build.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/c99/build.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -28,7 +28,7 @@
 # for example, when doing a nightly build out of HEAD
 # fetchTag=HEAD
 
-cdtTag=HEAD
+cdtTag=cdt_6_0
 
 ############## BUILD / GENERATION CONTROL ################
 # The directory into which the build elements will be fetched and where
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/crossgcc/build.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/crossgcc/build.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -28,7 +28,7 @@
 # for example, when doing a nightly build out of HEAD
 # fetchTag=HEAD
 
-cdtTag=HEAD
+cdtTag=cdt_6_0
 
 ############## BUILD / GENERATION CONTROL ################
 # The directory into which the build elements will be fetched and where
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/dsfgdb/build.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/dsfgdb/build.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -28,7 +28,7 @@
 # for example, when doing a nightly build out of HEAD
 # fetchTag=HEAD
 
-cdtTag=HEAD
+cdtTag=cdt_6_0
 
 ############## BUILD / GENERATION CONTROL ################
 # The directory into which the build elements will be fetched and where
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/gdbjtag/build.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/gdbjtag/build.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -28,7 +28,7 @@
 # for example, when doing a nightly build out of HEAD
 # fetchTag=HEAD
 
-cdtTag=HEAD
+cdtTag=cdt_6_0
 
 ############## BUILD / GENERATION CONTROL ################
 # The directory into which the build elements will be fetched and where
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/launch.remote/build.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/launch.remote/build.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -28,7 +28,7 @@
 # for example, when doing a nightly build out of HEAD
 # fetchTag=HEAD
 
-cdtTag=HEAD
+cdtTag=cdt_6_0
 
 ############## BUILD / GENERATION CONTROL ################
 # The directory into which the build elements will be fetched and where
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/lrparser.sdk/build.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/lrparser.sdk/build.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -28,7 +28,7 @@
 # for example, when doing a nightly build out of HEAD
 # fetchTag=HEAD
 
-cdtTag=HEAD
+cdtTag=cdt_6_0
 
 ############## BUILD / GENERATION CONTROL ################
 # The directory into which the build elements will be fetched and where
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/lrparser/build.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/lrparser/build.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -28,7 +28,7 @@
 # for example, when doing a nightly build out of HEAD
 # fetchTag=HEAD
 
-cdtTag=HEAD
+cdtTag=cdt_6_0
 
 ############## BUILD / GENERATION CONTROL ################
 # The directory into which the build elements will be fetched and where
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/master/build.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/master/build.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -34,7 +34,7 @@
 # for example, when doing a nightly build out of HEAD
 # fetchTag=HEAD
 
-cdtTag=HEAD
+cdtTag=cdt_6_0
 
 ############## BUILD / GENERATION CONTROL ################
 # The directory into which the build elements will be fetched and where
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/memory/build.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/memory/build.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -28,7 +28,7 @@
 # for example, when doing a nightly build out of HEAD
 # fetchTag=HEAD
 
-cdtTag=HEAD
+cdtTag=cdt_6_0
 
 ############## BUILD / GENERATION CONTROL ################
 # The directory into which the build elements will be fetched and where
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/mylyn/build.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/mylyn/build.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -27,7 +27,7 @@
 # for example, when doing a nightly build out of HEAD
 # fetchTag=HEAD
 
-cdtTag=HEAD
+cdtTag=cdt_6_0
 
 ############## BUILD / GENERATION CONTROL ################
 # The directory into which the build elements will be fetched and where
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/p2/build.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/p2/build.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -28,7 +28,7 @@
 # for example, when doing a nightly build out of HEAD
 # fetchTag=HEAD
 
-cdtTag=HEAD
+cdtTag=cdt_6_0
 
 ############## BUILD / GENERATION CONTROL ################
 # The directory into which the build elements will be fetched and where
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/platform/build.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/platform/build.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -27,7 +27,7 @@
 # for example, when doing a nightly build out of HEAD
 # fetchTag=HEAD
 
-cdtTag=HEAD
+cdtTag=cdt_6_0
 
 ############## BUILD / GENERATION CONTROL ################
 # The directory into which the build elements will be fetched and where
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/sdk/build.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/sdk/build.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -27,7 +27,7 @@
 # for example, when doing a nightly build out of HEAD
 # fetchTag=HEAD
 
-cdtTag=HEAD
+cdtTag=cdt_6_0
 
 ############## BUILD / GENERATION CONTROL ################
 # The directory into which the build elements will be fetched and where
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/testing/build.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/testing/build.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -28,7 +28,7 @@
 # for example, when doing a nightly build out of HEAD
 # fetchTag=HEAD
 
-cdtTag=HEAD
+cdtTag=cdt_6_0
 
 ############## BUILD / GENERATION CONTROL ################
 # The directory into which the build elements will be fetched and where
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/upc.sdk/build.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/upc.sdk/build.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -28,7 +28,7 @@
 # for example, when doing a nightly build out of HEAD
 # fetchTag=HEAD
 
-cdtTag=HEAD
+cdtTag=cdt_6_0
 
 ############## BUILD / GENERATION CONTROL ################
 # The directory into which the build elements will be fetched and where
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/upc/build.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/upc/build.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -28,7 +28,7 @@
 # for example, when doing a nightly build out of HEAD
 # fetchTag=HEAD
 
-cdtTag=HEAD
+cdtTag=cdt_6_0
 
 ############## BUILD / GENERATION CONTROL ################
 # The directory into which the build elements will be fetched and where
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/util/build.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/util/build.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -27,7 +27,7 @@
 # for example, when doing a nightly build out of HEAD
 # fetchTag=HEAD
 
-cdtTag=HEAD
+cdtTag=cdt_6_0
 
 ############## BUILD / GENERATION CONTROL ################
 # The directory into which the build elements will be fetched and where
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/windows/build.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/windows/build.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -28,7 +28,7 @@
 # for example, when doing a nightly build out of HEAD
 # fetchTag=HEAD
 
-cdtTag=HEAD
+cdtTag=cdt_6_0
 
 ############## BUILD / GENERATION CONTROL ################
 # The directory into which the build elements will be fetched and where
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/xlc.sdk/build.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/xlc.sdk/build.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -27,7 +27,7 @@
 # for example, when doing a nightly build out of HEAD
 # fetchTag=HEAD
 
-cdtTag=HEAD
+cdtTag=cdt_6_0
 
 ############## BUILD / GENERATION CONTROL ################
 # The directory into which the build elements will be fetched and where
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.releng/xlc/build.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.releng/xlc/build.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -28,7 +28,7 @@
 # for example, when doing a nightly build out of HEAD
 # fetchTag=HEAD
 
-cdtTag=HEAD
+cdtTag=cdt_6_0
 
 ############## BUILD / GENERATION CONTROL ################
 # The directory into which the build elements will be fetched and where
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.sdk-feature/feature.xml	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.sdk-feature/feature.xml	Wed Aug 05 17:35:39 2009 -0500
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.cdt.sdk"
       label="%featureName"
-      version="6.1.0.qualifier"
+      version="6.0.0.qualifier"
       provider-name="%providerName">
 
    <description>
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.sdk/META-INF/MANIFEST.MF	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.sdk/META-INF/MANIFEST.MF	Wed Aug 05 17:35:39 2009 -0500
@@ -2,6 +2,6 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.cdt.sdk;singleton:=true
-Bundle-Version: 6.1.0.qualifier
+Bundle-Version: 5.1.0.qualifier
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/resources/refactoring/ExtractConstantHistory.rts	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,232 +0,0 @@
-//!ExtractConstantInt
-//#org.eclipse.cdt.ui.tests.refactoring.RefactoringHistoryTest
-//@A.h
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	void bar();
-};
-
-#endif /*A_H_*/
-
-//=
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	void bar();
-    static const int theAnswer = 42;
-};
-
-#endif /*A_H_*/
-
-//@A.cpp
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-}
-
-int A::foo()
-{
-	return 42; //Hallo
-}
-
-void A::bar()
-{
-	int a = 42;
-	int b = 42;
-}
-
-//=
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-}
-
-int A::foo()
-{
-	return theAnswer; //Hallo
-}
-
-void A::bar()
-{
-	int a = theAnswer;
-	int b = theAnswer;
-}
-
-//@refScript.xml
-<?xml version="1.0" encoding="UTF-8"?>
-<session version="1.0">
-<refactoring comment="Create constant for 42" description="Extract Constant Refactoring" 
-fileName="file:$$projectPath$$/A.cpp" flags="4" 
-id="org.eclipse.cdt.ui.refactoring.extractconstant.ExtractConstantRefactoring" name="theAnswer" 
-project="RegressionTestProject" selection="64,2" visibility="public"/>
-</session>
-
-
-//!replaceNumberProtected
-//#org.eclipse.cdt.ui.tests.refactoring.RefactoringHistoryTest
-//@A.h
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-};
-
-#endif /*A_H_*/
-
-//=
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-protected:
-    static const int theAnswer = 42;
-};
-
-#endif /*A_H_*/
-
-//@A.cpp
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-}
-
-int A::foo()
-{
-	return 42;
-}
-
-//=
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-}
-
-int A::foo()
-{
-	return theAnswer;
-}
-
-//@refScript.xml
-<?xml version="1.0" encoding="UTF-8"?>
-<session version="1.0">
-<refactoring comment="Create constant for 42" description="Extract Constant Refactoring" 
-fileName="file:$$projectPath$$/A.cpp" flags="4" 
-id="org.eclipse.cdt.ui.refactoring.extractconstant.ExtractConstantRefactoring" name="theAnswer" 
-project="RegressionTestProject" selection="64,2" visibility="protected"/>
-</session>
-
-//!replaceNumberPrivate
-//#org.eclipse.cdt.ui.tests.refactoring.RefactoringHistoryTest
-//@A.h
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-};
-
-#endif /*A_H_*/
-
-//=
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-private:
-    static const int theAnswer = 42;
-};
-
-#endif /*A_H_*/
-
-//@A.cpp
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-}
-
-int A::foo()
-{
-	return 42;
-}
-
-//=
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-}
-
-int A::foo()
-{
-	return theAnswer;
-}
-
-//@refScript.xml
-<?xml version="1.0" encoding="UTF-8"?>
-<session version="1.0">
-<refactoring comment="Create constant for 42" description="Extract Constant Refactoring" 
-fileName="file:$$projectPath$$/A.cpp" flags="4" 
-id="org.eclipse.cdt.ui.refactoring.extractconstant.ExtractConstantRefactoring" name="theAnswer" 
-project="RegressionTestProject" selection="64,2" visibility="private"/>
-</session>
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/resources/refactoring/ExtractLocalVariableHistory.rts	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-//!extract local variable from for loop
-//#org.eclipse.cdt.ui.tests.refactoring.RefactoringHistoryTest
-//@main.cpp
-void foo(){
-	for(int n = 5 + 2; n < 10; ++n);
-}
-
-//=
-void foo(){
-    int i = 5 + 2;
-    for(int n = i; n < 10; ++n);
-}
-
-//@refScript.xml
-<?xml version="1.0" encoding="UTF-8"?>
-<session version="1.0">
-<refactoring comment="Extract 5 + 2" description="Extract Local Variable Refactoring"
- fileName="file:$$projectPath$$/main.cpp" flags="4"
- id="org.eclipse.cdt.internal.ui.refactoring.extractlocalvariable.ExtractLocalVariableRefactoring"
- name="i" project="RegressionTestProject" selection="25,5"/>
-</session>
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/resources/refactoring/ExtractMethodDuplicates.rts	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1075 +0,0 @@
-//!ExtractFunctionRefactoringTest with duplicates
-//#org.eclipse.cdt.ui.tests.refactoring.extractfunction.ExtractFunctionRefactoringTest
-//@.config
-replaceduplicates=true
-//@A.h
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	
-private:
-	int help();
-};
-
-#endif /*A_H_*/
-
-//=
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	
-private:
-	int help();
-    void exp(int & i);
-};
-
-#endif /*A_H_*/
-
-//@A.cpp
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int i = 2;
-	++i;
-	help();
-}int A::foo()
-{
-	int i = 2;
-	/*$*/++i;
-	help();/*$$*/
-	return i;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//=
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int i = 2;
-    exp(i);
-}void A::exp(int & i)
-{
-    ++i;
-    help();
-}
-
-int A::foo()
-{
-	int i = 2;
-    exp(i);
-	return i;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//!ExtractFunctionRefactoringTest duplicates with different Names
-//#org.eclipse.cdt.ui.tests.refactoring.extractfunction.ExtractFunctionRefactoringTest
-//@.config
-replaceduplicates=true
-//@A.h
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	
-private:
-	int help();
-};
-
-#endif /*A_H_*/
-
-//=
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	
-private:
-	int help();
-    void exp(int & i);
-};
-
-#endif /*A_H_*/
-
-//@A.cpp
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int oo = 99;
-	++oo;
-	help();
-}int A::foo()
-{
-	int i = 2;
-	/*$*/++i;
-	help();/*$$*/
-	return i;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//=
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int oo = 99;
-    exp(oo);
-}void A::exp(int & i)
-{
-    ++i;
-    help();
-}
-
-int A::foo()
-{
-	int i = 2;
-    exp(i);
-	return i;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//!ExtractFunctionRefactoringTest dublicate with field
-//#org.eclipse.cdt.ui.tests.refactoring.extractfunction.ExtractFunctionRefactoringTest
-//@.config
-replaceduplicates=true
-returnvalue=true
-//@A.h
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	void foo();
-	int i;
-	
-private:
-	int help();
-};
-
-#endif /*A_H_*/
-
-//=
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	void foo();
-	int i;
-	
-private:
-	int help();
-    int exp(int j, int & a);
-};
-
-#endif /*A_H_*/
-
-//@A.cpp
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int j = 0;
-	i++;
-	j++;
-	help();
-}void A::foo()
-{
-	int j = 0;
-	int a = 1;
-	/*$*/j++;
-	a++;
-	help();/*$$*/
-	a++;
-	j++;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//=
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int j = 0;
-	i = exp(i, j);
-}int A::exp(int j, int & a)
-{
-    j++;
-    a++;
-    help();
-    return j;
-}
-
-void A::foo()
-{
-	int j = 0;
-	int a = 1;
-	j = exp(j, a);
-	a++;
-	j++;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//!ExtractFunctionRefactoringTest dublicate with field in marked scope
-//#org.eclipse.cdt.ui.tests.refactoring.extractfunction.ExtractFunctionRefactoringTest
-//@.config
-replaceduplicates=true
-returnvalue=true
-//@A.h
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	void foo();
-	int i;
-	int field;
-	
-private:
-	int help();
-};
-
-#endif /*A_H_*/
-
-//=
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	void foo();
-	int i;
-	int field;
-	
-private:
-	int help();
-    int exp(int j);
-};
-
-#endif /*A_H_*/
-
-//@A.cpp
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int j = 0;
-	int a = 1;
-	a++;
-	j++;
-	help();
-}void A::foo()
-{
-	int j = 0;
-
-	/*$*/field++;
-	j++;
-	help();/*$$*/
-	field++;
-	j++;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//=
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int j = 0;
-	int a = 1;
-	a++;
-	j++;
-	help();
-}int A::exp(int j)
-{
-    field++;
-    j++;
-    help();
-    return j;
-}
-
-void A::foo()
-{
-	int j = 0;
-    j = exp(j);
-	field++;
-	j++;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//!ExtractFunctionRefactoringTest duplicates with different Names and return type
-//#org.eclipse.cdt.ui.tests.refactoring.extractfunction.ExtractFunctionRefactoringTest
-//@.config
-replaceduplicates=true
-returnvalue=true
-//@A.h
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	
-private:
-	int help();
-};
-
-#endif /*A_H_*/
-
-//=
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	
-private:
-	int help();
-    int exp(int i, float & j);
-};
-
-#endif /*A_H_*/
-
-//@A.cpp
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int oo = 99;
-	float blabla = 0;
-	++oo;
-	blabla += 1;
-	help();
-	blabla += 1;
-}int A::foo()
-{
-	int i = 2;
-	float j = 8989;
-	/*$*/++i;
-	j+=1;
-	help();/*$$*/
-	j++;
-	return i;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//=
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int oo = 99;
-	float blabla = 0;
-    oo = exp(oo, blabla);
-	blabla += 1;
-}int A::exp(int i, float & j)
-{
-    ++i;
-    j += 1;
-    help();
-    return i;
-}
-
-int A::foo()
-{
-	int i = 2;
-	float j = 8989;
-    i = exp(i, j);
-	j++;
-	return i;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//!ExtractFunctionRefactoringTest duplicates with a lot of different Names an variable not used afterwards in the duplicate
-//#org.eclipse.cdt.ui.tests.refactoring.extractfunction.ExtractFunctionRefactoringTest
-//@.config
-replaceduplicates=true
-//@A.h
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	
-private:
-	int help();
-};
-
-#endif /*A_H_*/
-
-//=
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	
-private:
-	int help();
-    void exp(int & i, float j);
-};
-
-#endif /*A_H_*/
-
-//@A.cpp
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int oo = 99;
-	float blabla = 0;
-	++oo;
-	blabla += 1;
-	help();
-}int A::foo()
-{
-	int i = 2;
-	float j = 8989;
-	/*$*/++i;
-	j+=1;
-	help();/*$$*/
-	return i;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//=
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int oo = 99;
-	float blabla = 0;
-    exp(oo, blabla);
-}void A::exp(int & i, float j)
-{
-    ++i;
-    j += 1;
-    help();
-}
-
-int A::foo()
-{
-	int i = 2;
-	float j = 8989;
-    exp(i, j);
-	return i;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//!ExtractFunctionRefactoringTest with duplicates name used afterwards in duplicate but not in original selection this is no dublicate
-//#org.eclipse.cdt.ui.tests.refactoring.extractfunction.ExtractFunctionRefactoringTest
-//@.config
-replaceduplicates=true
-//@A.h
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	void foo();
-	
-private:
-	int help();
-};
-
-#endif /*A_H_*/
-
-//=
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	void foo();
-	
-private:
-	int help();
-    void exp(int i);
-};
-
-#endif /*A_H_*/
-
-//@A.cpp
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int i = 2;
-	++i;// No Duplicate
-	help();
-	++i;// this is the reason
-}void A::foo()
-{
-	int i = 2;
-	/*$*/++i;
-	help();/*$$*/
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//=
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int i = 2;
-	++i;// No Duplicate
-	help();
-	++i;// this is the reason
-}void A::exp(int i)
-{
-    ++i;
-    help();
-}
-
-void A::foo()
-{
-	int i = 2;
-    exp(i);
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//!ExtractFunctionRefactoringTest with Return Value and a lot Ref Parameter and a method call
-//#org.eclipse.cdt.ui.tests.refactoring.extractfunction.ExtractFunctionRefactoringTest
-//@.config
-replaceduplicates=true
-returnvalue=true
-//@A.h
-#ifndef A_H_
-#define A_H_
-
-#include "B.h"
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	
-private:
-	int help();
-};
-
-#endif /*A_H_*/
-
-//=
-#ifndef A_H_
-#define A_H_
-
-#include "B.h"
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	
-private:
-	int help();
-    int exp(int i, B *& b, int & y, float & x);
-};
-
-#endif /*A_H_*/
-
-//@A.cpp
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int i = 2;
-	float x = i;
-	B* b = new B();
-	int y = x + i;
-	++i;
-	b->hello(y);
-	i = i + x;
-	help();
-	b->hello(y);
-	++x;
-	i++;
-}int A::foo()
-{
-	int i = 2;
-	float x = i;
-	B* b = new B();
-	int y = x + i;
-	/*$*/++i;
-	b->hello(y);
-	i = i + x;
-	help();/*$$*/
-	b->hello(y);
-	++x;
-	return i;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//=
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int i = 2;
-	float x = i;
-	B* b = new B();
-	int y = x + i;
-    i = exp(i, b, y, x);
-	b->hello(y);
-	++x;
-	i++;
-}int A::exp(int i, B *& b, int & y, float & x)
-{
-    ++i;
-    b->hello(y);
-    i = i + x;
-    help();
-    return i;
-}
-
-int A::foo()
-{
-	int i = 2;
-	float x = i;
-	B* b = new B();
-	int y = x + i;
-    i = exp(i, b, y, x);
-	b->hello(y);
-	++x;
-	return i;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//@B.h
-#ifndef B_H_
-#define B_H_
-
-class B
-{
-public:
-	B();
-	virtual ~B();
-	void hello(float y);
-};
-
-#endif /*B_H_*/
-
-//!ExtractFunctionRefactoringTest with Return Value and a lot Ref Parameter and a method call, duplicate is not similar
-//#org.eclipse.cdt.ui.tests.refactoring.extractfunction.ExtractFunctionRefactoringTest
-//@.config
-replaceduplicates=true
-returnvalue=true
-//@A.h
-#ifndef A_H_
-#define A_H_
-
-#include "B.h"
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	
-private:
-	int help();
-};
-
-#endif /*A_H_*/
-
-//=
-#ifndef A_H_
-#define A_H_
-
-#include "B.h"
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	
-private:
-	int help();
-    int exp(int i, B *& b, int & y, float x);
-};
-
-#endif /*A_H_*/
-
-//@A.cpp
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int i = 2;
-	float x = i;
-	B* b = new B();
-	int y = x + i;
-	++i;
-	b->hello(y);
-	i = i + x;
-	help();
-	b->hello(y);
-	++x;
-	i++;
-}int A::foo()
-{
-	int i = 2;
-	float x = i;
-	B* b = new B();
-	int y = x + i;
-	/*$*/++i;
-	b->hello(y);
-	i = i + x;
-	help();/*$$*/
-	b->hello(y);
-	return i;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//=
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int i = 2;
-	float x = i;
-	B* b = new B();
-	int y = x + i;
-	++i;
-	b->hello(y);
-	i = i + x;
-	help();
-	b->hello(y);
-	++x;
-	i++;
-}int A::exp(int i, B *& b, int & y, float x)
-{
-    ++i;
-    b->hello(y);
-    i = i + x;
-    help();
-    return i;
-}
-
-int A::foo()
-{
-	int i = 2;
-	float x = i;
-	B* b = new B();
-	int y = x + i;
-    i = exp(i, b, y, x);
-	b->hello(y);
-	return i;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//@B.h
-#ifndef B_H_
-#define B_H_
-
-class B
-{
-public:
-	B();
-	virtual ~B();
-	void hello(float y);
-};
-
-#endif /*B_H_*/
-
-//!ExtractFunctionRefactoringTest with duplicates and comments
-//#org.eclipse.cdt.ui.tests.refactoring.extractfunction.ExtractFunctionRefactoringTest
-//@.config
-replaceduplicates=true
-//@A.h
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	
-private:
-	int help();
-};
-
-#endif /*A_H_*/
-
-//=
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	
-private:
-	int help();
-    void exp(int & i);
-};
-
-#endif /*A_H_*/
-
-//@A.cpp
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int i = 2;
-	++i;
-	help();
-}int A::foo()
-{
-	int i = 2;
-	/*$*/++i;
-	help();/*$$*/
-	return i;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//=
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int i = 2;
-    exp(i);
-}void A::exp(int & i)
-{
-    ++i;
-    help();
-}
-
-int A::foo()
-{
-	int i = 2;
-    exp(i);
-	return i;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/resources/refactoring/ExtractMethodHistory.rts	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,362 +0,0 @@
-//!ExtractFunctionHistoryRefactoringTest variable defined in scope
-//#org.eclipse.cdt.ui.tests.refactoring.RefactoringHistoryTest
-//@A.h
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	
-private:
-	int help();
-};
-
-#endif /*A_H_*/
-
-//=
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	
-private:
-	int help();
-    int exp();
-};
-
-#endif /*A_H_*/
-
-//@A.cpp
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-}
-int A::foo()
-{
-	int i = 2;
-	++i;
-	help();
-	return i;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//=
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-}
-int A::exp()
-{
-    int i = 2;
-    ++i;
-    help();
-    return i;
-}
-
-int A::foo()
-{
-	int i = exp();
-	return i;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//@refScript.xml
-<?xml version="1.0" encoding="UTF-8"?>
-<session version="1.0">
-<refactoring comment="Create method exp" description="Extract Method Refactoring" 
-  fileName="file:$$projectPath$$/A.cpp" 
-  flags="4" id="org.eclipse.cdt.internal.ui.refactoring.extractfunction.ExtractFunctionRefactoring" 
-  name="exp" project="RegressionTestProject" selection="56,25" visibility="private"/>
-</session>
-
-
-//!ExtractFunctionHistoryRefactoringTest
-//#org.eclipse.cdt.ui.tests.refactoring.RefactoringHistoryTest
-//@A.h
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	
-private:
-	int help();
-};
-
-#endif /*A_H_*/
-
-//=
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	
-private:
-	int help();
-    void exp(int & i);
-};
-
-#endif /*A_H_*/
-
-//@A.cpp
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-}
-int A::foo()
-{
-	int i = 2;
-	//comment
-	++i;
-	help();
-	return i;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//=
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-}
-void A::exp(int & i)
-{
-    //comment
-    ++i;
-    help();
-}
-
-int A::foo()
-{
-	int i = 2;
-    exp(i);
-	return i;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//@refScript.xml
-<?xml version="1.0" encoding="UTF-8"?>
-<session version="1.0">
-<refactoring comment="Create method exp" description="Extract Method Refactoring"
- fileName="file:$$projectPath$$/A.cpp"
-  flags="4" id="org.eclipse.cdt.internal.ui.refactoring.extractfunction.ExtractFunctionRefactoring"
-  name="exp" project="RegressionTestProject" selection="79,13" visibility="private"/>
-</session>
-
-//!Extract Function History first extracted statement with leading comment
-//#org.eclipse.cdt.ui.tests.refactoring.RefactoringHistoryTest
-//@main.cpp
-int main(){
-	
-	int i;
-	// Comment
-	i= 7;
-	return i;
-}
-
-//=
-void exp(int & i)
-{
-    // Comment
-    i = 7;
-}
-
-int main(){
-	
-	int i;
-    exp(i);
-	return i;
-}
-
-//@refScript.xml
-<?xml version="1.0" encoding="UTF-8"?>
-<session version="1.0">
-<refactoring comment="Create method exp" description="Extract Method Refactoring"
- fileName="file:$$projectPath$$/main.cpp"
- flags="4" id="org.eclipse.cdt.internal.ui.refactoring.extractfunction.ExtractFunctionRefactoring"
- name="exp" project="RegressionTestProject" selection="35,5" visibility="private"/>
-</session>
-
-//!Extract Function History extracted statement with trailling comment
-//#org.eclipse.cdt.ui.tests.refactoring.RefactoringHistoryTest
-//@main.cpp
-int main(){
-	
-	int i;
-	i= 7; // Comment
-	return i;
-}
-
-//=
-void exp(int & i)
-{
-    i = 7; // Comment
-}
-
-int main(){
-	
-	int i;
-    exp(i);
-    return i;
-}
-
-//@refScript.xml
-<?xml version="1.0" encoding="UTF-8"?>
-<session version="1.0">
-<refactoring comment="Create method exp" description="Extract Method Refactoring"
- fileName="file:$$projectPath$$/main.cpp"
- flags="4" id="org.eclipse.cdt.internal.ui.refactoring.extractfunction.ExtractFunctionRefactoring"
- name="exp" project="RegressionTestProject" selection="23,5" visibility="private"/>
-</session>
-
-//!ExtractFunctionRefactoringTest duplicates with different Names History Test
-//#org.eclipse.cdt.ui.tests.refactoring.RefactoringHistoryTest
-//@A.h
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	
-private:
-	int help();
-};
-
-#endif /*A_H_*/
-
-//=
-#ifndef A_H_
-#define A_H_
-
-class A
-{
-public:
-	A();
-	virtual ~A();
-	int foo();
-	
-private:
-	int help();
-    void exp(int & i);
-};
-
-#endif /*A_H_*/
-
-//@A.cpp
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int oo = 99;
-	++oo;
-	help();
-}int A::foo()
-{
-	int i = 2;
-	++i;
-	help();
-	return i;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//=
-#include "A.h"
-
-A::A()
-{
-}
-
-A::~A()
-{
-	int oo = 99;
-    exp(oo);
-}void A::exp(int & i)
-{
-    ++i;
-    help();
-}
-
-int A::foo()
-{
-	int i = 2;
-    exp(i);
-	return i;
-}
-
-int A::help()
-{
-	return 42;
-}	
-
-//@refScript.xml
-<?xml version="1.0" encoding="UTF-8"?>
-<session version="1.0">
-<refactoring comment="Create method exp" description="Extract Method Refactoring" 
- fileName="file:$$projectPath$$/A.cpp" flags="4" id="org.eclipse.cdt.internal.ui.refactoring.extractfunction.ExtractFunctionRefactoring"
- name="exp" project="RegressionTestProject" replaceDuplicates="true" selection="97,13" visibility="private"/>
-</session>
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/resources/refactoring/HideMethodHistory.rts	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-//!HideMethodSimple
-//#org.eclipse.cdt.ui.tests.refactoring.RefactoringHistoryTest
-//@A.h
-#ifndef A_H_
-#define A_H_
-
-#include <iostream>
-
-class A{
-public:
-    A();
-    void method2();
-    std::string toString();
-private:
-	int i;
-};
-
-#endif /*A_H_*/
-
-//=
-#ifndef A_H_
-#define A_H_
-
-#include <iostream>
-
-class A{
-public:
-    A();
-    std::string toString();
-private:
-    int i;
-    void method2();
-};
-
-#endif /*A_H_*/
-
-//@refScript.xml
-<?xml version="1.0" encoding="UTF-8"?>
-<session version="1.0">
-<refactoring comment="Hide Method method2" description="Hide Method Refactoring"
- fileName="file:$$projectPath$$/A.h" flags="2"
- id="org.eclipse.cdt.internal.ui.refactoring.hidemethod.HideMethodRefactoring"
- project="RegressionTestProject" selection="83,7"/>
-</session>
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/RefactoringHistoryTest.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Institute for Software, HSR Hochschule fuer Technik  
- * Rapperswil, University of applied sciences and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0 
- * which accompanies this distribution, and is available at 
- * http://www.eclipse.org/legal/epl-v10.html  
- * 
- * Contributors: 
- * Institute for Software (IFS)- initial API and implementation 
- ******************************************************************************/
-package org.eclipse.cdt.ui.tests.refactoring;
-
-import java.io.ByteArrayInputStream;
-import java.util.Properties;
-import java.util.Vector;
-
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.ltk.core.refactoring.RefactoringDescriptorProxy;
-import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-import org.eclipse.ltk.core.refactoring.history.RefactoringHistory;
-import org.eclipse.ltk.internal.core.refactoring.history.RefactoringHistoryService;
-
-import org.eclipse.cdt.ui.tests.refactoring.extractfunction.ExtractFunctionRefactoringTest;
-
-import org.eclipse.cdt.internal.ui.refactoring.CRefactoring;
-
-/**
- * @author Emanuel Graf IFS
- * 
- */
-public class RefactoringHistoryTest extends
-		ExtractFunctionRefactoringTest {
-
-	private TestSourceFile scriptFile;
-
-	public RefactoringHistoryTest(String name,
-			Vector<TestSourceFile> files) {
-		super(name, files);
-	}
-
-	@Override
-	protected void configureRefactoring(Properties refactoringProperties) {
-		scriptFile = fileMap.get(refactoringProperties.getProperty(
-				"scriptFile", "refScript.xml"));
-
-	}
-
-	@Override
-	protected void runTest() throws Throwable {
-		String xmlSource = scriptFile.getSource();
-		xmlSource = xmlSource.replaceAll("\\$\\$projectPath\\$\\$", project.getLocation().toOSString());
-		RefactoringHistory refHist = RefactoringHistoryService.getInstance()
-				.readRefactoringHistory(
-						new ByteArrayInputStream(xmlSource
-								.getBytes()), 0);
-		for (RefactoringDescriptorProxy proxy : refHist.getDescriptors()) {
-			RefactoringStatus status = new RefactoringStatus();
-			CRefactoring ref = (CRefactoring) proxy
-					.requestDescriptor(new NullProgressMonitor())
-					.createRefactoring(status);
-			assertTrue(status.isOK());
-			RefactoringStatus checkInitialConditions = ref.checkInitialConditions(NULL_PROGRESS_MONITOR);
-			
-			if(fatalError){
-				assertConditionsFatalError(checkInitialConditions);
-				return;
-			}
-			else{
-				assertConditionsOk(checkInitialConditions);
-				executeRefactoring(ref);
-			}
-		}
-	}
-
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/extractconstant/ExtractConstantRefactoringTest.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/extractconstant/ExtractConstantRefactoringTest.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Institute for Software, HSR Hochschule fuer Technik  
+ * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik  
  * Rapperswil, University of applied sciences and others
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
@@ -21,7 +21,6 @@
 import org.eclipse.cdt.ui.tests.refactoring.RefactoringTest;
 import org.eclipse.cdt.ui.tests.refactoring.TestSourceFile;
 
-import org.eclipse.cdt.internal.ui.refactoring.CRefactoring;
 import org.eclipse.cdt.internal.ui.refactoring.extractconstant.ExtractConstantInfo;
 import org.eclipse.cdt.internal.ui.refactoring.extractconstant.ExtractConstantRefactoring;
 import org.eclipse.cdt.internal.ui.refactoring.utils.VisibilityEnum;
@@ -42,16 +41,22 @@
 	protected void runTest() throws Throwable {
 		IFile refFile = project.getFile(fileName);
 		ExtractConstantInfo info = new ExtractConstantInfo();
-		CRefactoring refactoring = new ExtractConstantRefactoring(refFile, selection, info, cproject);
-		RefactoringStatus checkInitialConditions = refactoring.checkInitialConditions(NULL_PROGRESS_MONITOR);
-		assertConditionsOk(checkInitialConditions);
-		info.setName("theAnswer"); //$NON-NLS-1$
-		info.setVisibility(visibility);
-		Change createChange = refactoring.createChange(NULL_PROGRESS_MONITOR);
-		RefactoringStatus finalConditions = refactoring.checkFinalConditions(NULL_PROGRESS_MONITOR);
-		assertConditionsOk(finalConditions);
-		createChange.perform(NULL_PROGRESS_MONITOR);
+		ExtractConstantRefactoring refactoring = new ExtractConstantRefactoring( refFile, selection, info);
+		try {
+			refactoring.lockIndex();
+			RefactoringStatus checkInitialConditions = refactoring.checkInitialConditions(NULL_PROGRESS_MONITOR);
+			assertConditionsOk(checkInitialConditions);
+			info.setName("theAnswer"); //$NON-NLS-1$
+			info.setVisibility(visibility);
+			Change createChange = refactoring.createChange(NULL_PROGRESS_MONITOR);
+			RefactoringStatus finalConditions = refactoring.checkFinalConditions(NULL_PROGRESS_MONITOR);
+			assertConditionsOk(finalConditions);
+			createChange.perform(NULL_PROGRESS_MONITOR);
+		}finally {
+			refactoring.unlockIndex();
+		}
 		compareFiles(fileMap);
+
 	}
 
 	@Override
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/extractconstant/ExtractConstantTestSuite.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/extractconstant/ExtractConstantTestSuite.java	Wed Aug 05 17:35:39 2009 -0500
@@ -27,8 +27,6 @@
 		TestSuite suite = new ExtractConstantTestSuite();
 		suite.addTest(RefactoringTester.suite("ExtractConstantRefactoringTest",
 				"resources/refactoring/ExtractConstant.rts"));
-		suite.addTest(RefactoringTester.suite("ExtractConstantHistoryRefactoringTest",
-		"resources/refactoring/ExtractConstantHistory.rts"));
 		return suite;
 	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/extractfunction/ExtractFunctionRefactoringTest.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/extractfunction/ExtractFunctionRefactoringTest.java	Wed Aug 05 17:35:39 2009 -0500
@@ -40,7 +40,6 @@
 	protected int returnParameterIndex;
 	protected boolean fatalError;
 	private VisibilityEnum visibility;
-	private static int nr = 1;
 
 	/**
 	 * @param name
@@ -63,28 +62,18 @@
 		}
 		else{
 			assertConditionsOk(checkInitialConditions);
-			setValues(info);
-			executeRefactoring(refactoring);
+			executeRefactoring(info, refactoring);
 		}
 		
 		
 	}
 
-	protected void executeRefactoring(CRefactoring refactoring) throws CoreException, Exception {
-		RefactoringStatus finalConditions = refactoring.checkFinalConditions(NULL_PROGRESS_MONITOR);
-		assertConditionsOk(finalConditions);
-		Change createChange = refactoring.createChange(NULL_PROGRESS_MONITOR);
-		createChange.perform(NULL_PROGRESS_MONITOR);
-		compareFiles(fileMap);
-	}
-
-	private void setValues(ExtractFunctionInformation info) {
+	private void executeRefactoring(ExtractFunctionInformation info, CRefactoring refactoring) throws CoreException, Exception {
 		info.setMethodName(methodName);
 		info.setReplaceDuplicates(replaceDuplicates);
 		if(info.getInScopeDeclaredVariable() == null){
 			if(returnValue) {
 				info.setReturnVariable(info.getAllAfterUsedNames().get(returnParameterIndex));
-				info.getAllAfterUsedNames().get(returnParameterIndex).setUserSetIsReference(false);
 			}
 		} else {
 			info.setReturnVariable( info.getInScopeDeclaredVariable() );
@@ -96,6 +85,13 @@
 				name.setUserSetIsReference(name.isReference());
 			}
 		}
+		
+		Change createChange = refactoring.createChange(NULL_PROGRESS_MONITOR);
+		RefactoringStatus finalConditions = refactoring.checkFinalConditions(NULL_PROGRESS_MONITOR);
+		assertConditionsOk(finalConditions);
+		createChange.perform(NULL_PROGRESS_MONITOR);
+		
+		compareFiles(fileMap);
 	}
 
 	
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/extractfunction/ExtractFunctionTestSuite.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/extractfunction/ExtractFunctionTestSuite.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Institute for Software, HSR Hochschule fuer Technik  
+ * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik  
  * Rapperswil, University of applied sciences and others
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
@@ -29,8 +29,6 @@
 		suite.addTest(RefactoringTester.suite("Extract Expression", "resources/refactoring/ExtractExpression.rts"));
 		suite.addTest(RefactoringTester.suite("ExtractMethodPreprocessorRefactoringTests", "resources/refactoring/ExtractMethodPreprocessor.rts"));
 		suite.addTest(RefactoringTester.suite("Extract Function Templates Tests", "resources/refactoring/ExtractFunctionTemplates.rts"));
-		suite.addTest(RefactoringTester.suite("Extract Method History Test", "resources/refactoring/ExtractMethodHistory.rts"));
-		suite.addTest(RefactoringTester.suite("Extract Function Dublicates Test", "resources/refactoring/ExtractMethodDuplicates.rts"));
 		return suite;
 	}
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/extractlocalvariable/ExtractLocalVariableRefactoringTest.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/extractlocalvariable/ExtractLocalVariableRefactoringTest.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Institute for Software, HSR Hochschule fuer Technik  
+ * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik  
  * Rapperswil, University of applied sciences and others
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
@@ -43,7 +43,7 @@
 		IFile refFile = project.getFile(fileName);
 		NameNVisibilityInformation info = new NameNVisibilityInformation();
 		info.setName(variableName);
-		CRefactoring refactoring = new ExtractLocalVariableRefactoring( refFile, selection, info, cproject);
+		CRefactoring refactoring = new ExtractLocalVariableRefactoring( refFile, selection, info);
 		RefactoringStatus checkInitialConditions = refactoring.checkInitialConditions(NULL_PROGRESS_MONITOR);
 		
 		if(fatalError){
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/extractlocalvariable/ExtractLocalVariableTestSuite.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/extractlocalvariable/ExtractLocalVariableTestSuite.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Institute for Software, HSR Hochschule fuer Technik  
+ * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik  
  * Rapperswil, University of applied sciences and others
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
@@ -28,8 +28,6 @@
 		TestSuite suite = new ExtractLocalVariableTestSuite();
 		suite.addTest(RefactoringTester.suite("ExtractLocalVariableRefactoringTests", 
 				"resources/refactoring/ExtractLocalVariable.rts"));
-		suite.addTest(RefactoringTester.suite("ExtractLocalVariableRefactoringHistoryTests", 
-		"resources/refactoring/ExtractLocalVariableHistory.rts"));
 		return suite;
 	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/gettersandsetters/GenerateGettersAndSettersTest.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/gettersandsetters/GenerateGettersAndSettersTest.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Institute for Software, HSR Hochschule fuer Technik  
+ * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik  
  * Rapperswil, University of applied sciences
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
@@ -52,7 +52,7 @@
 	@Override
 	protected void runTest() throws Throwable {
 		IFile refFile = project.getFile(fileName);
-		refactoring = new GenerateGettersAndSettersRefactoring(refFile, selection, null, cproject);
+		refactoring = new GenerateGettersAndSettersRefactoring(refFile, selection, null);
 		RefactoringStatus initialConditions = refactoring.checkInitialConditions(NULL_PROGRESS_MONITOR);
 		
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/hidemethod/HideMethodRefactoringTest.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/hidemethod/HideMethodRefactoringTest.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Institute for Software, HSR Hochschule fuer Technik  
+ * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik  
  * Rapperswil, University of applied sciences and others
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
@@ -40,7 +40,9 @@
 	protected void runTest() throws Throwable {
 
 		IFile refFile = project.getFile(fileWithSelection);
-		CRefactoring refactoring = new HideMethodRefactoring(refFile,selection, null, cproject);
+		CRefactoring refactoring = new HideMethodRefactoring(refFile,selection, null);
+		try {
+		refactoring.lockIndex();
 		RefactoringStatus checkInitialConditions = refactoring.checkInitialConditions(NULL_PROGRESS_MONITOR);
 		if(errors > 0) {
 			assertConditionsError(checkInitialConditions, errors);
@@ -50,7 +52,7 @@
 		}else {
 			assertConditionsOk(checkInitialConditions);
 		}
-
+		
 		Change createChange = refactoring.createChange(NULL_PROGRESS_MONITOR);
 		RefactoringStatus finalConditions = refactoring.checkFinalConditions(NULL_PROGRESS_MONITOR);
 		if(warnings > 0){
@@ -61,6 +63,10 @@
 		createChange.perform(NULL_PROGRESS_MONITOR);
 
 		compareFiles(fileMap);
+		}
+		finally {
+			refactoring.unlockIndex();
+		}
 	}
 
 	@Override
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/hidemethod/HideMethodTestSuite.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/hidemethod/HideMethodTestSuite.java	Wed Aug 05 17:35:39 2009 -0500
@@ -27,8 +27,6 @@
 		TestSuite suite = new HideMethodTestSuite();
 		suite.addTest(RefactoringTester.suite("HideMethodRefactoringTests",
 				"resources/refactoring/HideMethod.rts"));
-		suite.addTest(RefactoringTester.suite("HideMethodRefactoringHistoryTests",
-		"resources/refactoring/HideMethodHistory.rts"));
 		return suite;
 	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/implementmethod/ImplementMethodRefactoringTest.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/implementmethod/ImplementMethodRefactoringTest.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Institute for Software, HSR Hochschule fuer Technik  
+ * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik  
  * Rapperswil, University of applied sciences and others
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
@@ -42,7 +42,7 @@
 		
 		IFile refFile = project.getFile(fileName);
 		
-		CRefactoring refactoring = new ImplementMethodRefactoring(refFile, selection, null, cproject);
+		CRefactoring refactoring = new ImplementMethodRefactoring(refFile, selection, null);
 		
 		try {
 			refactoring.lockIndex();
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameRegressionTests.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameRegressionTests.java	Wed Aug 05 17:35:39 2009 -0500
@@ -624,7 +624,7 @@
         writer.write( "  void v(){i++;}         \n" ); //$NON-NLS-1$
         writer.write( "};                       \n" ); //$NON-NLS-1$
         String contents = writer.toString();
-        IFile file = importFile( "t45.cpp", contents ); //$NON-NLS-1$
+        IFile file = importFile( "t.cpp", contents ); //$NON-NLS-1$
         waitForIndexer();
         //vp1 implicit virtual method
         int offset =  contents.indexOf( "v/*vp1*/" ) ; //$NON-NLS-1$
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/search/BasicSearchTest.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/search/BasicSearchTest.java	Wed Aug 05 17:35:39 2009 -0500
@@ -255,13 +255,14 @@
 				Object node = nodeElements[0];
 				if (!(node instanceof IStatus))
 					node = nodeElements[1];
-				if (node instanceof IStatus) {
+				if (node instanceof IStatus)
+				{
 					IStatus firstRootNode = (IStatus) node;				
 					assertEquals(IStatus.WARNING, firstRootNode.getSeverity());
 					// can't really verify text in case message is localized...
-				} else {
+				}
+				else
 					fail("can't get status");
-				}
 			}
 		} else {
 			// must NOT have the IStatus
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/.settings/org.eclipse.pde.api.tools.prefs	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/.settings/org.eclipse.pde.api.tools.prefs	Wed Aug 05 17:35:39 2009 -0500
@@ -1,4 +1,4 @@
-#Mon Jul 06 14:55:59 CEST 2009
+#Wed Jun 18 09:56:50 CEST 2008
 ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
 ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
 ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
@@ -15,11 +15,9 @@
 ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
 ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
 ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
-ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
 ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
 ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
 ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
-ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
 ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
 ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
 ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
@@ -31,7 +29,6 @@
 CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
 CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
 CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
-CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
 CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
 CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
 CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
@@ -45,14 +42,12 @@
 CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
 CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
 CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
-CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
 CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
 CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
 CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
 CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
 CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
 CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
-CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
 CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
 CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
 CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
@@ -80,7 +75,6 @@
 ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
 ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
 ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
-ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
 ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
 ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
 ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
@@ -93,7 +87,6 @@
 FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
 FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
 FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
-FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
 FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
 FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
 ILLEGAL_EXTEND=Warning
@@ -106,8 +99,6 @@
 INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
 INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
 INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
-INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
-INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
 INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
 INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
 INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
@@ -119,16 +110,13 @@
 INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
 INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
 INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
-INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
 INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
 INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
 INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
 INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
 INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
 INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
-INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
 INVALID_JAVADOC_TAG=Ignore
-INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error
 LEAK_EXTEND=Warning
 LEAK_FIELD_DECL=Warning
 LEAK_IMPLEMENT=Warning
@@ -137,7 +125,6 @@
 METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
 METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
 METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
-METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
 METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
 METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
 METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
@@ -154,13 +141,6 @@
 METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
 METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
 METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
-TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
-UNUSED_PROBLEM_FILTERS=Warning
 eclipse.preferences.version=1
 incompatible_api_component_version=Error
 incompatible_api_component_version_include_major_without_breaking_change=Disabled
@@ -168,5 +148,3 @@
 invalid_since_tag_version=Error
 malformed_since_tag=Error
 missing_since_tag=Error
-report_api_breakage_when_major_version_incremented=Disabled
-report_resolution_errors_api_component=Warning
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/META-INF/MANIFEST.MF	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/META-INF/MANIFEST.MF	Wed Aug 05 17:35:39 2009 -0500
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.cdt.ui; singleton:=true
-Bundle-Version: 5.2.0.qualifier
+Bundle-Version: 5.1.1.qualifier
 Bundle-Activator: org.eclipse.cdt.ui.CUIPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/plugin.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/plugin.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -536,7 +536,4 @@
 preferenceKeywords.templates=editor templates snippet macros
 preferenceKeywords.folding=editor folding section comment header function method statement preprocessor
 preferenceKeywords.markoccurrences=editor occurrence mark highlight
-preferenceKeywords.smarttyping=editor typing type close comment tabs indentation indent imports wrap escape semicolons braces brackets parenthesis parentheses strings literals paste pasting tabulator automatically
-historyAction.label = History...
-createScriptAction.label = Create Script...
-applyScriptAction.label = Apply Script...
\ No newline at end of file
+preferenceKeywords.smarttyping=editor typing type close comment tabs indentation indent imports wrap escape semicolons braces brackets parenthesis parentheses strings literals paste pasting tabulator automatically
\ No newline at end of file
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/plugin.xml	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/plugin.xml	Wed Aug 05 17:35:39 2009 -0500
@@ -1221,10 +1221,7 @@
             <separator name="typeGroup"/>
             <separator name="typeGroup2"/>
             <separator name="codingGroup2"/>
-            <separator name="typeGroup3"/>
-            <separator
-                  name="historyGroup">
-            </separator>            
+            <separator name="typeGroup3"/>            
          </menu>
          <!-- reorg group  -->
          <action
@@ -1276,30 +1273,6 @@
                id="org.eclipse.cdt.ui.actions.ImplementMethod"
                retarget="true">
          </action>
-         <action
-               class="org.eclipse.ltk.ui.refactoring.actions.ShowRefactoringHistoryAction"
-               definitionId="org.eclipse.ltk.ui.refactor.show.refactoring.history"
-               id="org.eclipse.cdt.ui.actions.RefactoringHistory"
-               label="%historyAction.label"
-               menubarPath="org.eclipse.jdt.ui.refactoring.menu/historyGroup"
-               retarget="false">
-         </action>
-         <action
-               class="org.eclipse.ltk.ui.refactoring.actions.CreateRefactoringScriptAction"
-               definitionId="org.eclipse.ltk.ui.refactor.create.refactoring.script"
-               id="org.eclipse.cdt.ui.actions.createRefactoringScript"
-               label="%createScriptAction.label"
-               menubarPath="org.eclipse.jdt.ui.refactoring.menu/historyGroup"
-               retarget="false">
-         </action>
-         <action
-               class="org.eclipse.ltk.ui.refactoring.actions.ApplyRefactoringScriptAction"
-               definitionId="org.eclipse.ltk.ui.refactor.apply.refactoring.script"
-               id="org.eclipse.cdt.ui.actions.applyRefactoringScript"
-               label="%applyScriptAction.label"
-               menubarPath="org.eclipse.jdt.ui.refactoring.menu/historyGroup"
-               retarget="false">
-         </action>
          <menu
                id="org.eclipse.jdt.ui.source.menu"
                label="%Source.menu.label"
@@ -3190,23 +3163,4 @@
          </enabledWhen>
       </page>
    </extension>
-   <extension
-         point="org.eclipse.ltk.core.refactoring.refactoringContributions">
-      <contribution
-            class="org.eclipse.cdt.internal.ui.refactoring.extractconstant.ExtractConstantRefactoringContribution"
-            id="org.eclipse.cdt.ui.refactoring.extractconstant.ExtractConstantRefactoring">
-      </contribution>
-      <contribution
-            class="org.eclipse.cdt.internal.ui.refactoring.extractlocalvariable.ExtractLocalVariableRefactoringContribution"
-            id="org.eclipse.cdt.internal.ui.refactoring.extractlocalvariable.ExtractLocalVariableRefactoring">
-      </contribution>
-      <contribution
-            class="org.eclipse.cdt.internal.ui.refactoring.hidemethod.HideMethodRefactoringContribution"
-            id="org.eclipse.cdt.internal.ui.refactoring.hidemethod.HideMethodRefactoring">
-      </contribution>
-      <contribution
-            class="org.eclipse.cdt.internal.ui.refactoring.extractfunction.ExtractFunctionRefactoringContribution"
-            id="org.eclipse.cdt.internal.ui.refactoring.extractfunction.ExtractFunctionRefactoring">
-      </contribution>
-   </extension>
 </plugin>
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java	Wed Aug 05 17:35:39 2009 -0500
@@ -12,7 +12,6 @@
 package org.eclipse.cdt.internal.ui;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -27,7 +26,6 @@
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.ui.model.IWorkbenchAdapter;
 
-import org.eclipse.cdt.core.CCorePlugin;
 import org.eclipse.cdt.core.model.CModelException;
 import org.eclipse.cdt.core.model.CoreModel;
 import org.eclipse.cdt.core.model.IArchive;
@@ -398,12 +396,8 @@
 				ICElement[] c2 = ((ISourceRoot)child).getChildren();
 				for (int k = 0; k < c2.length; ++k)
 					list.add(c2[k]);
-			} else if (CCorePlugin.showSourceRootsAtTopOfProject()) {
+			} else
 				list.add(child);
-			} else if (child instanceof ISourceRoot && 
-						child.getResource().getParent().equals(cproject.getProject())) {	
-				list.add(child);
-			}
 		}
 
 		Object[] objects = list.toArray();
@@ -519,11 +513,7 @@
 
 	protected Object[] getCResources(ICContainer container) throws CModelException {
 		Object[] objects = null;
-		ICElement[] children = container.getChildren();
-		List<ICElement> missingElements = Collections.emptyList();
-		if (!CCorePlugin.showSourceRootsAtTopOfProject()) {
-			missingElements = getMissingElements(container, children);
-		}
+		Object[] children = container.getChildren();
 		try {
 			objects = container.getNonCResources();
 			if (objects.length > 0) {
@@ -534,38 +524,7 @@
 		if (objects == null || objects.length == 0) {
 			return children;
 		}
-		Object[] result = concatenate(children, objects);
-		return concatenate(result, missingElements.toArray());
-	}
-
-	private List<ICElement> getMissingElements(ICContainer container, ICElement[] elements) {
-		// nested source roots may be filtered out below the project root, 
-		// we need to find them to add them back in
-		List<ICElement> missingElements = new ArrayList<ICElement>();
-		try {
-			List<IResource> missingContainers = new ArrayList<IResource>();
-			IResource[] allChildren = ((IContainer) container.getResource()).members();
-			for (IResource child : allChildren) {
-				if (!(child instanceof IContainer))
-					continue;
-				boolean found = false;
-				for (ICElement element : elements) {
-					if (element.getResource().equals(child)) {
-						found = true;
-						break;
-					}
-				}
-				if (!found)
-					missingContainers.add(child);
-			}
-			for (IResource resource : missingContainers) {
-				ICElement element = container.getCProject().findElement(resource.getFullPath());
-				if (element != null)
-					missingElements.add(element);
-			}
-		} catch (CoreException e1) {
-		}
-		return missingElements;
+		return concatenate(children, objects);
 	}
 
 	protected Object[] getResources(IProject project) {
@@ -617,19 +576,16 @@
 			// folder we have to exclude it as a normal child.
 			if (o instanceof IFolder) {
 				IFolder folder = (IFolder)o;
-				ISourceRoot root = null;
+				boolean found = false;
 				for (int j = 0; j < roots.length; j++) {
 					if (roots[j].getPath().equals(folder.getFullPath())) {
-						root = roots[j];
+						found = true;
 						break;
 					}
 				}
 				// it is a sourceRoot skip it.
-				if (root != null) {
-					if (CCorePlugin.showSourceRootsAtTopOfProject())
-						continue;
-					else
-						o = root;
+				if (found) {
+					continue;
 				}
 			} else if (o instanceof IFile){
 				boolean found = false;
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginImages.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginImages.java	Wed Aug 05 17:35:39 2009 -0500
@@ -98,7 +98,6 @@
 	public static final String IMG_OBJS_TUNIT_RESOURCE_H= NAME_PREFIX + "ch_resource_obj.gif"; //$NON-NLS-1$
 	public static final String IMG_OBJS_TUNIT_RESOURCE_A= NAME_PREFIX + "asm_resource_obj.gif"; //$NON-NLS-1$
 	public static final String IMG_OBJS_SOURCE_ROOT=  NAME_PREFIX + "sroot_obj.gif"; // $NON-NLS-1$  //$NON-NLS-1$
-	public static final String IMG_OBJS_SOURCE2_ROOT=  NAME_PREFIX + "sroot2_obj.gif"; // $NON-NLS-1$  //$NON-NLS-1$
 	public static final String IMG_OBJS_CFOLDER=  NAME_PREFIX + "cfolder_obj.gif"; // $NON-NLS-1$  //$NON-NLS-1$
 	public static final String IMG_OBJS_CONFIG =  NAME_PREFIX + "config.gif"; // $NON-NLS-1$  //$NON-NLS-1$
 	public static final String IMG_OBJS_ARCHIVE= NAME_PREFIX + "ar_obj.gif"; //$NON-NLS-1$
@@ -181,7 +180,6 @@
 	public static final ImageDescriptor DESC_OBJS_TUNIT_RESOURCE_H= createManaged(T_OBJ, IMG_OBJS_TUNIT_RESOURCE_H);
 	public static final ImageDescriptor DESC_OBJS_TUNIT_RESOURCE_A= createManaged(T_OBJ, IMG_OBJS_TUNIT_RESOURCE_A);
 	public static final ImageDescriptor DESC_OBJS_SOURCE_ROOT= createManaged(T_OBJ, IMG_OBJS_SOURCE_ROOT);
-	public static final ImageDescriptor DESC_OBJS_SOURCE2_ROOT= createManaged(T_OBJ, IMG_OBJS_SOURCE2_ROOT);
 	public static final ImageDescriptor DESC_OBJS_CFOLDER= createManaged(T_OBJ, IMG_OBJS_CFOLDER);
 	public static final ImageDescriptor DESC_OBJS_CONFIG = createManaged(T_OBJ, IMG_OBJS_CONFIG);
 	public static final ImageDescriptor DESC_OBJS_ARCHIVE= createManaged(T_OBJ, IMG_OBJS_ARCHIVE);
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/StatusDialog.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/StatusDialog.java	Wed Aug 05 17:35:39 2009 -0500
@@ -154,5 +154,6 @@
 		if ((shell != null) && !shell.isDisposed())
 			shell.setImage(fImage);
 	}	
+	
 }
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java	Wed Aug 05 17:35:39 2009 -0500
@@ -559,7 +559,8 @@
 			return identifier.length() > 0
 				&& (Character.isUpperCase(identifier.charAt(0))
 					|| angularIntroducers.contains(identifier)
-					|| identifier.endsWith("_ptr")); //$NON-NLS-1$
+					|| identifier.endsWith("_ptr") //$NON-NLS-1$
+					|| identifier.endsWith("_cast")); //$NON-NLS-1$
 		}
 
 		/*
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/AppearancePreferencePage.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/AppearancePreferencePage.java	Wed Aug 05 17:35:39 2009 -0500
@@ -12,7 +12,6 @@
 package org.eclipse.cdt.internal.ui.preferences;
 
 import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Preferences;
 import org.eclipse.core.runtime.preferences.InstanceScope;
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.dialogs.IDialogConstants;
@@ -29,8 +28,6 @@
 import org.eclipse.ui.PlatformUI;
 import org.osgi.service.prefs.BackingStoreException;
 
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.CCorePreferenceConstants;
 import org.eclipse.cdt.ui.CUIPlugin;
 import org.eclipse.cdt.ui.PreferenceConstants;
 
@@ -50,7 +47,6 @@
 	private SelectionButtonDialogField fCViewGroupIncludes;
 	private SelectionButtonDialogField fCViewSeparateHeaderAndSource;
 	private SelectionButtonDialogField fOutlineGroupMembers;
-	private SelectionButtonDialogField fShowSourceRootsAtTopOfProject;
 	
 	public AppearancePreferencePage() {
 		setPreferenceStore(PreferenceConstants.getPreferenceStore());
@@ -85,12 +81,6 @@
 		fCViewSeparateHeaderAndSource= new SelectionButtonDialogField(SWT.CHECK);
 		fCViewSeparateHeaderAndSource.setDialogFieldListener(listener);
 		fCViewSeparateHeaderAndSource.setLabelText(PreferencesMessages.AppearancePreferencePage_cviewSeparateHeaderAndSource_label); 
-	
-		fShowSourceRootsAtTopOfProject= new SelectionButtonDialogField(SWT.CHECK);
-		fShowSourceRootsAtTopOfProject.setDialogFieldListener(listener);
-		fShowSourceRootsAtTopOfProject.setLabelText(PreferencesMessages.AppearancePreferencePage_showSourceRootsAtTopOfProject_label); 
-		
-	
 	}
 
 	private void initFields() {
@@ -101,8 +91,6 @@
 		fOutlineGroupIncludes.setSelection(prefs.getBoolean(PreferenceConstants.OUTLINE_GROUP_INCLUDES));
 		fOutlineGroupNamespaces.setSelection(prefs.getBoolean(PreferenceConstants.OUTLINE_GROUP_NAMESPACES));
 		fOutlineGroupMembers.setSelection(prefs.getBoolean(PreferenceConstants.OUTLINE_GROUP_MEMBERS));
-		boolean showSourceRootsAtTopOfProject = CCorePlugin.showSourceRootsAtTopOfProject();
-		fShowSourceRootsAtTopOfProject.setSelection(showSourceRootsAtTopOfProject);
 	}
 	
 	/*
@@ -146,10 +134,6 @@
 		gd.horizontalSpan= 2;
 		noteControl.setLayoutData(gd);
 		
-		
-		new Separator().doFillIntoGrid(result, nColumns);
-		fShowSourceRootsAtTopOfProject.doFillIntoGrid(result, nColumns);
-		
 		initFields();
 		
 		Dialog.applyDialogFont(result);
@@ -192,8 +176,6 @@
 		} catch (BackingStoreException exc) {
 			CUIPlugin.log(exc);
 		}
-		CCorePlugin.getDefault().getPluginPreferences().setValue(CCorePreferenceConstants.SHOW_SOURCE_ROOTS_AT_TOP_LEVEL_OF_PROJECT, fShowSourceRootsAtTopOfProject.isSelected());
-		CCorePlugin.getDefault().savePluginPreferences();
 		return super.performOk();
 	}
 	
@@ -209,8 +191,6 @@
 		fOutlineGroupIncludes.setSelection(prefs.getDefaultBoolean(PreferenceConstants.OUTLINE_GROUP_INCLUDES));
 		fOutlineGroupNamespaces.setSelection(prefs.getDefaultBoolean(PreferenceConstants.OUTLINE_GROUP_NAMESPACES));
 		fOutlineGroupMembers.setSelection(prefs.getDefaultBoolean(PreferenceConstants.OUTLINE_GROUP_MEMBERS));
-		Preferences corePrefs = CCorePlugin.getDefault().getPluginPreferences();
-		fShowSourceRootsAtTopOfProject.setSelection(corePrefs.getDefaultBoolean(CCorePreferenceConstants.SHOW_SOURCE_ROOTS_AT_TOP_LEVEL_OF_PROJECT));
 		super.performDefaults();
 	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/PreferencesMessages.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/PreferencesMessages.java	Wed Aug 05 17:35:39 2009 -0500
@@ -138,7 +138,6 @@
 	public static String AppearancePreferencePage_outlineGroupNamespaces_label;
 	public static String AppearancePreferencePage_note;
 	public static String AppearancePreferencePage_preferenceOnlyForNewViews;
-	public static String AppearancePreferencePage_showSourceRootsAtTopOfProject_label;
 	public static String CEditorPreferencePage_folding_title;
 	public static String FoldingConfigurationBlock_enable;
 	public static String FoldingConfigurationBlock_combo_caption;
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/PreferencesMessages.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/PreferencesMessages.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -157,7 +157,6 @@
 AppearancePreferencePage_outlineGroupNamespaces_label= Group namespaces in the Outline view
 AppearancePreferencePage_note=Note:
 AppearancePreferencePage_preferenceOnlyForNewViews=This preference does not affect open views
-AppearancePreferencePage_showSourceRootsAtTopOfProject_label=Show source roots at top of project
 
 #Folding
 CEditorPreferencePage_folding_title= &Folding
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/CCompositeChange.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Institute for Software, HSR Hochschule fuer Technik  
- * Rapperswil, University of applied sciences and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0 
- * which accompanies this distribution, and is available at 
- * http://www.eclipse.org/legal/epl-v10.html  
- * 
- * Contributors: 
- * Institute for Software (IFS)- initial API and implementation 
- ******************************************************************************/
-package org.eclipse.cdt.internal.ui.refactoring;
-
-import org.eclipse.ltk.core.refactoring.Change;
-import org.eclipse.ltk.core.refactoring.ChangeDescriptor;
-import org.eclipse.ltk.core.refactoring.CompositeChange;
-import org.eclipse.ltk.core.refactoring.RefactoringChangeDescriptor;
-
-/**
- * @author Emanuel Graf IFS
- *
- */
-public class CCompositeChange extends CompositeChange {
-	
-	private RefactoringChangeDescriptor desc;
-	
-	public CCompositeChange(String name, Change[] children) {
-		super(name, children);
-	}
-
-	public CCompositeChange(String name) {
-		super(name);
-	}
-
-	public void setDescription(RefactoringChangeDescriptor descriptor) {
-		desc = descriptor;
-	}
-
-	@Override
-	public ChangeDescriptor getDescriptor() {
-		if(desc == null) {
-			return super.getDescriptor();
-		}else {
-			return desc;
-		}
-	}
-	
-
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/CRefactoring.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/CRefactoring.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Institute for Software, HSR Hochschule fuer Technik  
+ * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik  
  * Rapperswil, University of applied sciences and others
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
@@ -23,8 +23,6 @@
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.ltk.core.refactoring.Change;
 import org.eclipse.ltk.core.refactoring.Refactoring;
-import org.eclipse.ltk.core.refactoring.RefactoringChangeDescriptor;
-import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
 import org.eclipse.ltk.core.refactoring.RefactoringStatus;
 
 import org.eclipse.cdt.core.CCorePlugin;
@@ -70,10 +68,7 @@
 	protected IASTTranslationUnit unit;
 	private IIndex fIndex;
 
-	protected ICProject project;
-
-	public CRefactoring(IFile file, ISelection selection, ICElement element, ICProject proj) {
-		project = proj;
+	public CRefactoring(IFile file, ISelection selection, ICElement element) {
 		if (element instanceof ISourceReference) {
 			ISourceReference sourceRef= (ISourceReference) element;
 			ITranslationUnit tu= sourceRef.getTranslationUnit();
@@ -212,13 +207,9 @@
 	public Change createChange(IProgressMonitor pm) throws CoreException, OperationCanceledException {
 		ModificationCollector collector = new ModificationCollector();
 		collectModifications(pm, collector);
-		CCompositeChange finalChange = collector.createFinalChange();
-		finalChange.setDescription(new RefactoringChangeDescriptor(getRefactoringDescriptor()));
-		return finalChange;
+		return collector.createFinalChange();
 	}
 	
-	abstract protected RefactoringDescriptor getRefactoringDescriptor();
-
 	abstract protected void collectModifications(IProgressMonitor pm, ModificationCollector collector)
 		throws CoreException, OperationCanceledException;
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/CRefactoringContribution.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Institute for Software, HSR Hochschule fuer Technik  
- * Rapperswil, University of applied sciences and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0 
- * which accompanies this distribution, and is available at 
- * http://www.eclipse.org/legal/epl-v10.html  
- * 
- * Contributors: 
- * Institute for Software (IFS)- initial API and implementation 
- ******************************************************************************/
-package org.eclipse.cdt.internal.ui.refactoring;
-
-import java.util.Map;
-
-import org.eclipse.ltk.core.refactoring.RefactoringContribution;
-import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
-
-/**
- * @author Emanuel Graf IFS
- *
- */
-public abstract class CRefactoringContribution extends RefactoringContribution {
-
-	public CRefactoringContribution() {
-		super();
-	}
-
-	@SuppressWarnings("unchecked")
-	@Override
-	public Map retrieveArgumentMap(RefactoringDescriptor descriptor) {
-		if (descriptor instanceof CRefactoringDescription) {
-			CRefactoringDescription refDesc = (CRefactoringDescription) descriptor;
-			return refDesc.getParameterMap();
-		}else {
-			return super.retrieveArgumentMap(descriptor);
-		}
-	}
-
-}
\ No newline at end of file
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/CRefactoringDescription.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Institute for Software, HSR Hochschule fuer Technik  
- * Rapperswil, University of applied sciences and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0 
- * which accompanies this distribution, and is available at 
- * http://www.eclipse.org/legal/epl-v10.html  
- * 
- * Contributors: 
- * Institute for Software (IFS)- initial API and implementation 
- ******************************************************************************/
-package org.eclipse.cdt.internal.ui.refactoring;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Map;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.text.TextSelection;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
-
-import org.eclipse.cdt.core.model.CoreModel;
-import org.eclipse.cdt.core.model.ICProject;
-import org.eclipse.cdt.ui.CUIPlugin;
-
-/**
- * @author Emanuel Graf IFS
- *
- */
-public abstract class CRefactoringDescription extends RefactoringDescriptor {
-
-	public static final String FILE_NAME = "fileName"; //$NON-NLS-1$
-	public static final String SELECTION = "selection"; //$NON-NLS-1$
-	protected Map<String, String> arguments;
-
-	public CRefactoringDescription(String id, String project, String description, String comment, int flags, Map<String, String> arguments) {
-		super(id, project, description, comment, flags);
-		this.arguments = arguments;
-	}
-
-	public Map<String, String> getParameterMap() {
-		return arguments;
-	}
-
-	protected ISelection getSelection() throws CoreException {
-		ISelection selection;
-		String selectStrings[] = arguments.get(SELECTION).split(","); //$NON-NLS-1$
-		if(selectStrings.length >= 2) {
-			int offset = Integer.parseInt(selectStrings[0]);
-			int length = Integer.parseInt(selectStrings[1]);
-			selection = new TextSelection(offset,length);
-		}else {
-			throw new CoreException(new Status(IStatus.ERROR, CUIPlugin.PLUGIN_ID, "Illegal Selection")); //$NON-NLS-1$
-		}
-		return selection;
-	}
-
-	protected ICProject getCProject() throws CoreException {
-		ICProject proj;
-		IProject iProject = ResourcesPlugin.getWorkspace().getRoot().getProject(getProject());
-		proj = CoreModel.getDefault().create(iProject);
-		if(proj == null) {
-			throw new CoreException(new Status(IStatus.ERROR, CUIPlugin.PLUGIN_ID, "Unknown Project")); //$NON-NLS-1$
-		}
-		return proj;
-	}
-
-	protected IFile getFile() throws CoreException {
-		IFile file;
-		try {
-			file = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocationURI(new URI(arguments.get(FILE_NAME)))[0];
-		} catch (URISyntaxException e) {
-			throw new CoreException(new Status(IStatus.ERROR, CUIPlugin.PLUGIN_ID, e.getMessage(), e));
-		}
-		return file;
-	}
-
-}
\ No newline at end of file
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/ModificationCollector.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/ModificationCollector.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Institute for Software, HSR Hochschule fuer Technik  
+ * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik  
  * Rapperswil, University of applied sciences and others
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
@@ -18,6 +18,7 @@
 import java.util.Map;
 
 import org.eclipse.ltk.core.refactoring.Change;
+import org.eclipse.ltk.core.refactoring.CompositeChange;
 
 import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
 import org.eclipse.cdt.core.dom.rewrite.ASTRewrite;
@@ -51,9 +52,9 @@
 		changes.add(change);
 	}
 	
-	public CCompositeChange createFinalChange() {
+	public CompositeChange createFinalChange() {
 		// Synthetic changes aren't displayed and therefore don't need a name
-		CCompositeChange result = new CCompositeChange(""); //$NON-NLS-1$
+		CompositeChange result = new CompositeChange(""); //$NON-NLS-1$
 		result.markAsSynthetic();
 		
 		if(changes != null)
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/RefactoringRunner.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/RefactoringRunner.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Institute for Software, HSR Hochschule fuer Technik  
+ * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik  
  * Rapperswil, University of applied sciences and others
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
@@ -16,7 +16,6 @@
 import org.eclipse.jface.window.IShellProvider;
 
 import org.eclipse.cdt.core.model.ICElement;
-import org.eclipse.cdt.core.model.ICProject;
 
 /**
  * Base class for all refactoring runners.
@@ -30,14 +29,12 @@
 	protected ISelection selection;
 	protected ICElement celement;
 	protected IShellProvider shellProvider;
-	protected ICProject project;
 
-	public RefactoringRunner(IFile file, ISelection selection, ICElement element, IShellProvider shellProvider, ICProject cProject) {
+	public RefactoringRunner(IFile file, ISelection selection, ICElement element, IShellProvider shellProvider) {
 		this.file = file;
 		this.selection = selection;
 		this.celement= element;
 		this.shellProvider= shellProvider;
-		this.project = cProject;
 	}
 
 	public abstract void run();
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractconstant/ExtractConstantRefactoring.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractconstant/ExtractConstantRefactoring.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Institute for Software, HSR Hochschule fuer Technik  
+ * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik  
  * Rapperswil, University of applied sciences and others
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
@@ -13,8 +13,6 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.ResourcesPlugin;
@@ -26,7 +24,6 @@
 import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.jface.text.Region;
 import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
 import org.eclipse.ltk.core.refactoring.RefactoringStatus;
 import org.eclipse.text.edits.TextEditGroup;
 
@@ -49,7 +46,6 @@
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleDeclSpecifier;
 import org.eclipse.cdt.core.dom.rewrite.ASTRewrite;
-import org.eclipse.cdt.core.model.ICProject;
 
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTDeclarator;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTIdExpression;
@@ -63,7 +59,6 @@
 
 import org.eclipse.cdt.internal.ui.refactoring.AddDeclarationNodeToClassChange;
 import org.eclipse.cdt.internal.ui.refactoring.CRefactoring;
-import org.eclipse.cdt.internal.ui.refactoring.CRefactoringDescription;
 import org.eclipse.cdt.internal.ui.refactoring.MethodContext;
 import org.eclipse.cdt.internal.ui.refactoring.ModificationCollector;
 import org.eclipse.cdt.internal.ui.refactoring.utils.NodeHelper;
@@ -79,67 +74,52 @@
  */
 public class ExtractConstantRefactoring extends CRefactoring {
 	
-	public static final String ID = "org.eclipse.cdt.ui.refactoring.extractconstant.ExtractConstantRefactoring"; //$NON-NLS-1$
-	
 	private IASTLiteralExpression target = null;
 	private final ArrayList<IASTExpression> literalsToReplace = new ArrayList<IASTExpression>();
 	private final ExtractConstantInfo info;
 	
-	
-	public ExtractConstantRefactoring(IFile file, ISelection selection, ExtractConstantInfo info, ICProject proj){
-		super(file,selection, null, proj);
+	public ExtractConstantRefactoring(IFile file, ISelection selection, ExtractConstantInfo info){
+		super(file,selection, null);
 		this.info = info;
-		this.project = proj;
 		name = Messages.ExtractConstantRefactoring_ExtractConst; 
 	}
 
 	@Override
 	public RefactoringStatus checkInitialConditions(IProgressMonitor pm) throws CoreException, OperationCanceledException {
 		SubMonitor sm = SubMonitor.convert(pm, 9);
-		try {
-			lockIndex();
-			try {
-				super.checkInitialConditions(sm.newChild(6));
-
-				Collection<IASTLiteralExpression> literalExpressionCollection = findAllLiterals();
-				if(literalExpressionCollection.isEmpty()){
-					initStatus.addFatalError(Messages.ExtractConstantRefactoring_LiteralMustBeSelected); 
-					return initStatus;
-				}
-				sm.worked(1);
-				if(isProgressMonitorCanceld(sm, initStatus)) return initStatus;
+		super.checkInitialConditions(sm.newChild(6));
 
-				boolean oneMarked = region != null && isOneMarked(literalExpressionCollection, region);
-				if(!oneMarked){ 
-					//No or more than one marked
-					if(target == null){
-						//No Selection found;
-						initStatus.addFatalError(Messages.ExtractConstantRefactoring_NoLiteralSelected); 
-					} else {
-						//To many selection found
-						initStatus.addFatalError(Messages.ExtractConstantRefactoring_TooManyLiteralSelected); 
-					}
-					return initStatus;
-				}
-				sm.worked(1);
-
-				if(isProgressMonitorCanceld(sm, initStatus)) return initStatus;
+		Collection<IASTLiteralExpression> literalExpressionCollection = findAllLiterals();
+		if(literalExpressionCollection.isEmpty()){
+			initStatus.addFatalError(Messages.ExtractConstantRefactoring_LiteralMustBeSelected); 
+			return initStatus;
+		}
+		
+		sm.worked(1);
+		if(isProgressMonitorCanceld(sm, initStatus)) return initStatus;
+		
+		boolean oneMarked = region != null && isOneMarked(literalExpressionCollection, region);
+		if(!oneMarked){ 
+			//No or more than one marked
+			if(target == null){
+				//No Selection found;
+				initStatus.addFatalError(Messages.ExtractConstantRefactoring_NoLiteralSelected); 
+			} else {
+				//To many selection found
+				initStatus.addFatalError(Messages.ExtractConstantRefactoring_TooManyLiteralSelected); 
+			}
+			return initStatus;
+		}
+		sm.worked(1);
 
-				findAllNodesForReplacement(literalExpressionCollection);
-
-				info.addNamesToUsedNames(findAllDeclaredNames());
-				if(info.getName().length() == 0) {
-					info.setName(getDefaultName(target));
-				}
-				info.setMContext(NodeHelper.findMethodContext(target, getIndex()));
-				sm.done();
-			}
-			finally {
-				unlockIndex();
-			}
-		} catch (InterruptedException e) {
-			Thread.currentThread().interrupt();
-		}
+		if(isProgressMonitorCanceld(sm, initStatus)) return initStatus;
+				
+		findAllNodesForReplacement(literalExpressionCollection);
+		
+		info.addNamesToUsedNames(findAllDeclaredNames());
+		info.setName(getDefaultName(target));
+		info.setMContext(NodeHelper.findMethodContext(target, getIndex()));
+		sm.done();
 		return initStatus;
 	}
 
@@ -271,78 +251,53 @@
 
 	@Override
 	protected void collectModifications(IProgressMonitor pm, ModificationCollector collector)
-	throws CoreException, OperationCanceledException{
-		try {
-			lockIndex();
-			try {
-				MethodContext context = info.getMContext();
-				Collection<IASTExpression> locLiteralsToReplace = new ArrayList<IASTExpression>();
-
-				if(context.getType() == MethodContext.ContextType.METHOD){
+		throws CoreException, OperationCanceledException{
+		
+		MethodContext context = info.getMContext();
+		Collection<IASTExpression> locLiteralsToReplace = new ArrayList<IASTExpression>();
 
-					for (IASTExpression expression : literalsToReplace) {
-						MethodContext exprContext = NodeHelper.findMethodContext(expression, getIndex());
-						if(exprContext.getType() == MethodContext.ContextType.METHOD){
-							if(context.getMethodQName() != null) {
-								if( MethodContext.isSameClass(exprContext.getMethodQName(), context.getMethodQName())){
-									locLiteralsToReplace.add(expression);
-								}
-							}else {
-								if( MethodContext.isSameClass(exprContext.getMethodDeclarationName(), context.getMethodDeclarationName())){
-									locLiteralsToReplace.add(expression);
-								}
-							}
+		if(context.getType() == MethodContext.ContextType.METHOD){
+			
+			for (IASTExpression expression : literalsToReplace) {
+				MethodContext exprContext = NodeHelper.findMethodContext(expression, getIndex());
+				if(exprContext.getType() == MethodContext.ContextType.METHOD){
+					if(context.getMethodQName() != null) {
+						if( MethodContext.isSameClass(exprContext.getMethodQName(), context.getMethodQName())){
+							locLiteralsToReplace.add(expression);
 						}
-					}
-
-				} else {
-
-					for (IASTExpression expression : literalsToReplace) {
-						IPath path = new Path(expression.getContainingFilename());
-						IFile expressionFile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(path);
-						//expressionFile may be null if the file is NOT in the workspace
-						if( expressionFile != null && expressionFile.equals(file) ){
+					}else {
+						if( MethodContext.isSameClass(exprContext.getMethodDeclarationName(), context.getMethodDeclarationName())){
 							locLiteralsToReplace.add(expression);
 						}
 					}
-
 				}
-
-				//Create all Changes for literals
-				String constName = info.getName();
-				createLiteralToConstantChanges(constName, locLiteralsToReplace, collector);
-
-				if(context.getType() == MethodContext.ContextType.METHOD) {
-					ICPPASTCompositeTypeSpecifier classDefinition = (ICPPASTCompositeTypeSpecifier) context.getMethodDeclaration().getParent();
-					AddDeclarationNodeToClassChange.createChange(classDefinition, info.getVisibility(), getConstNodesClass(constName), true, collector);
-				} else {
-					IASTDeclaration nodes = getConstNodesGlobal(constName);
-					ASTRewrite rewriter = collector.rewriterForTranslationUnit(unit);
-					rewriter.insertBefore(unit, TranslationUnitHelper.getFirstNode(unit), nodes, new TextEditGroup(Messages.ExtractConstantRefactoring_CreateConstant));
+			}
+			
+		} else {
+			
+			for (IASTExpression expression : literalsToReplace) {
+				IPath path = new Path(expression.getContainingFilename());
+				IFile expressionFile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(path);
+				//expressionFile may be null if the file is NOT in the workspace
+				if( expressionFile != null && expressionFile.equals(file) ){
+					locLiteralsToReplace.add(expression);
 				}
 			}
-			finally {
-				unlockIndex();
-			}
-		} catch (InterruptedException e) {
-			Thread.currentThread().interrupt();
+			
 		}
-	}
-	
-	@Override
-	protected RefactoringDescriptor getRefactoringDescriptor() {
-		Map<String, String> arguments = getArgumentMap();
-		RefactoringDescriptor desc = new ExtractConstantRefactoringDescription( project.getProject().getName(), "Extract Constant Refactoring", "Create constant for " + target.getRawSignature(), arguments);  //$NON-NLS-1$//$NON-NLS-2$
-		return desc;
-	}
-
-	private Map<String, String> getArgumentMap() {
-		Map<String, String> arguments = new HashMap<String, String>();
-		arguments.put(CRefactoringDescription.FILE_NAME, file.getLocationURI().toString());
-		arguments.put(CRefactoringDescription.SELECTION, region.getOffset() + "," + region.getLength()); //$NON-NLS-1$
-		arguments.put(ExtractConstantRefactoringDescription.NAME, info.getName());
-		arguments.put(ExtractConstantRefactoringDescription.VISIBILITY, info.getVisibility().toString());
-		return arguments;
+				
+		//Create all Changes for literals
+		String constName = info.getName();
+		createLiteralToConstantChanges(constName, locLiteralsToReplace, collector);
+		
+		if(context.getType() == MethodContext.ContextType.METHOD) {
+			ICPPASTCompositeTypeSpecifier classDefinition = (ICPPASTCompositeTypeSpecifier) context.getMethodDeclaration().getParent();
+			AddDeclarationNodeToClassChange.createChange(classDefinition, info.getVisibility(), getConstNodesClass(constName), true, collector);
+		} else {
+			IASTDeclaration nodes = getConstNodesGlobal(constName);
+			ASTRewrite rewriter = collector.rewriterForTranslationUnit(unit);
+			rewriter.insertBefore(unit, TranslationUnitHelper.getFirstNode(unit), nodes, new TextEditGroup(Messages.ExtractConstantRefactoring_CreateConstant));
+		}
 	}
 
 	private void createLiteralToConstantChanges(String constName, Iterable<? extends IASTExpression> literals, ModificationCollector collector) {
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractconstant/ExtractConstantRefactoringContribution.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Institute for Software, HSR Hochschule fuer Technik  
- * Rapperswil, University of applied sciences and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0 
- * which accompanies this distribution, and is available at 
- * http://www.eclipse.org/legal/epl-v10.html  
- * 
- * Contributors: 
- * Institute for Software (IFS)- initial API and implementation 
- ******************************************************************************/
-package org.eclipse.cdt.internal.ui.refactoring.extractconstant;
-
-import java.util.Map;
-
-import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
-
-import org.eclipse.cdt.internal.ui.refactoring.CRefactoringContribution;
-
-/**
- * @author Emanuel Graf IFS
- *
- */
-public class ExtractConstantRefactoringContribution extends
-		CRefactoringContribution {
-
-	@SuppressWarnings("unchecked")
-	@Override
-	public RefactoringDescriptor createDescriptor(String id, String project,
-			String description, String comment, Map arguments, int flags)
-			throws IllegalArgumentException {
-		if(id.equals(ExtractConstantRefactoring.ID)) {
-			return new ExtractConstantRefactoringDescription(project, description, comment, arguments);
-		}else {
-			return null;
-		}
-	}
-
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractconstant/ExtractConstantRefactoringDescription.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Institute for Software, HSR Hochschule fuer Technik  
- * Rapperswil, University of applied sciences and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0 
- * which accompanies this distribution, and is available at 
- * http://www.eclipse.org/legal/epl-v10.html  
- * 
- * Contributors: 
- * Institute for Software (IFS)- initial API and implementation 
- ******************************************************************************/
-package org.eclipse.cdt.internal.ui.refactoring.extractconstant;
-
-import java.util.Map;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ltk.core.refactoring.Refactoring;
-import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
-import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-
-import org.eclipse.cdt.core.model.ICProject;
-
-import org.eclipse.cdt.internal.ui.refactoring.CRefactoringDescription;
-import org.eclipse.cdt.internal.ui.refactoring.utils.VisibilityEnum;
-
-/**
- * @author Emanuel Graf IFS
- *
- */
-public class ExtractConstantRefactoringDescription extends
-		CRefactoringDescription {
-	protected static final String NAME = "name"; //$NON-NLS-1$
-	protected static final String VISIBILITY = "visibility"; //$NON-NLS-1$
-	
-	protected ExtractConstantRefactoringDescription(String project,
-			String description, String comment, Map<String, String> arguments) {
-		super(ExtractConstantRefactoring.ID, project, description, comment, RefactoringDescriptor.MULTI_CHANGE, arguments);
-	}
-	
-	@Override
-	public Refactoring createRefactoring(RefactoringStatus status)
-			throws CoreException {
-		IFile file;
-		ExtractConstantInfo info = new ExtractConstantInfo();
-		ICProject proj;
-		
-		info.setName(arguments.get(NAME));
-		info.setVisibility(VisibilityEnum.getEnumForStringRepresentation(arguments.get(VISIBILITY)));
-		
-		proj = getCProject();
-		
-		file = getFile();
-		
-		ISelection selection = getSelection();
-		return new ExtractConstantRefactoring(file, selection, info, proj);
-	}
-
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractconstant/ExtractConstantRefactoringRunner.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractconstant/ExtractConstantRefactoringRunner.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Institute for Software, HSR Hochschule fuer Technik  
+ * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik  
  * Rapperswil, University of applied sciences and others
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
@@ -12,11 +12,12 @@
 package org.eclipse.cdt.internal.ui.refactoring.extractconstant;
 
 import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.window.IShellProvider;
 import org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation;
 
-import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.ui.CUIPlugin;
 
 import org.eclipse.cdt.internal.ui.refactoring.CRefactoring;
 import org.eclipse.cdt.internal.ui.refactoring.RefactoringRunner;
@@ -27,22 +28,29 @@
  */
 public class ExtractConstantRefactoringRunner extends RefactoringRunner  {
 
-	public ExtractConstantRefactoringRunner(IFile file, ISelection selection, IShellProvider shellProvider, ICProject cProject) {
-		super(file, selection, null, shellProvider, cProject);
+	public ExtractConstantRefactoringRunner(IFile file, ISelection selection, IShellProvider shellProvider) {
+		super(file, selection, null, shellProvider);
 	}
 
 	@Override
 	public void run() {
 		ExtractConstantInfo info = new ExtractConstantInfo();
-		CRefactoring refactoring = new ExtractConstantRefactoring(file,selection,info, project);
+		CRefactoring refactoring = new ExtractConstantRefactoring(file,selection,info);
 		ExtractConstantRefactoringWizard wizard = new ExtractConstantRefactoringWizard(refactoring, info);
 		RefactoringWizardOpenOperation operator = new RefactoringWizardOpenOperation(wizard);
-
+		
 		try {
-			operator.run(shellProvider.getShell(), refactoring.getName());
-
+			refactoring.lockIndex();
+			try {
+				operator.run(shellProvider.getShell(), refactoring.getName());
+			}
+			finally {
+				refactoring.unlockIndex();
+			}
 		} catch (InterruptedException e) {
 			Thread.currentThread().interrupt();
-		} 
+		} catch (CoreException e) {
+			CUIPlugin.log(e);
+		}
 	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/ChooserComposite.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/ChooserComposite.java	Wed Aug 05 17:35:39 2009 -0500
@@ -54,6 +54,7 @@
 
 		boolean hasNoPredefinedReturnValue = true;
 		if (info.getInScopeDeclaredVariable() != null) {
+			info.getInScopeDeclaredVariable().setUserSetIsReturnValue(true);
 			hasNoPredefinedReturnValue = false;
 		}
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/ExtractFunctionComposite.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/ExtractFunctionComposite.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Institute for Software, HSR Hochschule fuer Technik  
+ * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik  
  * Rapperswil, University of applied sciences and others
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
@@ -40,13 +40,15 @@
 		Group returnGroup = createReturnGroup(nameVisiComp);
 		createReturnValueChooser(returnGroup, info, ip);		
 
-		createReplaceCheckBox(nameVisiComp);
+		// Disabled for now
+		//createReplaceCheckBox(nameVisiComp);
 		
 		if (info.getMethodContext().getType() == MethodContext.ContextType.METHOD) {
 			visibilityPanelSetVisible(true);
 		}else {
 			visibilityPanelSetVisible(false);
 		}
+		
 		layout();
 	}
 
@@ -104,13 +106,13 @@
 	}
 
 	
-	private void createReplaceCheckBox(Composite parent) {
-		replaceSimilar = new Button(parent, SWT.CHECK | SWT.LEFT);
-		GridData buttonLayoutData = new GridData(SWT.None);
-		buttonLayoutData.verticalIndent = 5;
-		replaceSimilar.setLayoutData(buttonLayoutData);
-		replaceSimilar.setText(Messages.ExtractFunctionComposite_ReplaceDuplicates);
-	}
+//	private void createReplaceCheckBox(Composite parent) {
+//		replaceSimilar = new Button(parent, SWT.CHECK | SWT.LEFT);
+//		GridData buttonLayoutData = new GridData(SWT.None);
+//		buttonLayoutData.verticalIndent = 5;
+//		replaceSimilar.setLayoutData(buttonLayoutData);
+//		replaceSimilar.setText(Messages.ExtractFunctionComposite_ReplaceDuplicates); 
+//	}
 
 	
 	public ChooserComposite getReturnChooser() {
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/ExtractFunctionInputPage.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/ExtractFunctionInputPage.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Institute for Software, HSR Hochschule fuer Technik  
+ * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik  
  * Rapperswil, University of applied sciences and others
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
@@ -17,8 +17,6 @@
 import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.events.MouseAdapter;
 import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
@@ -67,7 +65,9 @@
 			});
 		}
 		
-		comp.getReplaceSimilarButton().addSelectionListener(new SelectionListener(){
+		/* Disable until it works again.
+		 * 
+		 * comp.getReplaceSimilarButton().addSelectionListener(new SelectionListener(){
 
 			public void widgetDefaultSelected(SelectionEvent e) {
 				info.setReplaceDuplicates(comp.getReplaceSimilarButton().isEnabled());	
@@ -77,7 +77,7 @@
 				widgetDefaultSelected(e);		
 			}
 			
-		});
+		});*/
 		
 		setControl(comp);
 		
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/ExtractFunctionRefactoring.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/ExtractFunctionRefactoring.java	Wed Aug 05 17:35:39 2009 -0500
@@ -13,7 +13,6 @@
 
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Vector;
@@ -31,14 +30,12 @@
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
 import org.eclipse.ltk.core.refactoring.RefactoringStatus;
 import org.eclipse.text.edits.TextEditGroup;
 
 import org.eclipse.cdt.core.CCorePlugin;
 import org.eclipse.cdt.core.dom.ast.DOMException;
 import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTComment;
 import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement;
 import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
 import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
@@ -51,8 +48,8 @@
 import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition;
 import org.eclipse.cdt.core.dom.ast.IASTIdExpression;
 import org.eclipse.cdt.core.dom.ast.IASTInitializerExpression;
+import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
 import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTNamedTypeSpecifier;
 import org.eclipse.cdt.core.dom.ast.IASTNode;
 import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
 import org.eclipse.cdt.core.dom.ast.IASTPointerOperator;
@@ -67,15 +64,11 @@
 import org.eclipse.cdt.core.dom.ast.IParameter;
 import org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTConversionName;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDeclarator;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTOperatorName;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleDeclSpecifier;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateId;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod;
 import org.eclipse.cdt.core.dom.rewrite.ASTRewrite;
@@ -94,6 +87,7 @@
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionDefinition;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTIdExpression;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTInitializerExpression;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTLiteralExpression;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTQualifiedName;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTReturnStatement;
@@ -106,7 +100,6 @@
 
 import org.eclipse.cdt.internal.ui.refactoring.AddDeclarationNodeToClassChange;
 import org.eclipse.cdt.internal.ui.refactoring.CRefactoring;
-import org.eclipse.cdt.internal.ui.refactoring.CRefactoringDescription;
 import org.eclipse.cdt.internal.ui.refactoring.Container;
 import org.eclipse.cdt.internal.ui.refactoring.MethodContext;
 import org.eclipse.cdt.internal.ui.refactoring.ModificationCollector;
@@ -114,13 +107,10 @@
 import org.eclipse.cdt.internal.ui.refactoring.MethodContext.ContextType;
 import org.eclipse.cdt.internal.ui.refactoring.NodeContainer.NameInformation;
 import org.eclipse.cdt.internal.ui.refactoring.utils.ASTHelper;
-import org.eclipse.cdt.internal.ui.refactoring.utils.CPPASTAllVisitor;
 import org.eclipse.cdt.internal.ui.refactoring.utils.NodeHelper;
 import org.eclipse.cdt.internal.ui.refactoring.utils.SelectionHelper;
 
 public class ExtractFunctionRefactoring extends CRefactoring {
-	
-	public static final String ID = "org.eclipse.cdt.internal.ui.refactoring.extractfunction.ExtractFunctionRefactoring"; //$NON-NLS-1$
 
 	static final Integer NULL_INTEGER = Integer.valueOf(0);
 	static final char[] ZERO= "0".toCharArray(); //$NON-NLS-1$
@@ -135,16 +125,18 @@
 	private final Container<Integer> returnNumber;
 
 	protected boolean hasNameResolvingForSimilarError = false;
+	protected ICProject project;
 
 	HashMap<String, Integer> nameTrail;
 
 	private ExtractedFunctionConstructionHelper extractedFunctionConstructionHelper;
-	private final INodeFactory factory = CPPNodeFactory.getDefault();
+	private INodeFactory factory = CPPNodeFactory.getDefault();
 
 	public ExtractFunctionRefactoring(IFile file, ISelection selection,
 			ExtractFunctionInformation info, ICProject project) {
-		super(file, selection, null, project);
+		super(file, selection, null);
 		this.info = info;
+		this.project = project;
 		name = Messages.ExtractFunctionRefactoring_ExtractFunction;
 		names = new HashMap<String, Integer>();
 		namesCounter = new Container<Integer>(NULL_INTEGER);
@@ -181,13 +173,15 @@
 		info.setAllUsedNames(container.getUsedNamesUnique());
 
 		if (container.size() < 1) {
-			status.addFatalError(Messages.ExtractFunctionRefactoring_NoStmtSelected);
+			status
+					.addFatalError(Messages.ExtractFunctionRefactoring_NoStmtSelected);
 			sm.done();
 			return status;
 		}
 
 		if (container.getAllDeclaredInScope().size() > 1) {
-			status.addFatalError(Messages.ExtractFunctionRefactoring_TooManySelected);
+			status
+					.addFatalError(Messages.ExtractFunctionRefactoring_TooManySelected);
 		} else if (container.getAllDeclaredInScope().size() == 1) {
 			info.setInScopeDeclaredVariable(container.getAllDeclaredInScope().get(0));
 		}
@@ -202,21 +196,10 @@
 		MethodContext context = NodeHelper.findMethodContext(container.getNodesToWrite().get(0), getIndex());
 		info.setMethodContext(context);
 		
-		if (info.getInScopeDeclaredVariable() != null) {
-			info.getInScopeDeclaredVariable().setUserSetIsReturnValue(true);
-		}
-		for (int i = 0; i < info.getAllUsedNames().size(); i++) {
-			if (!info.getAllUsedNames().get(i).isDeclarationInScope()) {
-				NameInformation name = info.getAllUsedNames().get(i);
-				if(!name.isReturnValue()) {
-					name.setUserSetIsReference(name.isReference());
-				}
-			}
-		}
 		if(unit != null) {
 			IIndex index = CCorePlugin.getIndexManager().getIndex(project);
 			unit.setIndex(index);
-		}	
+		}
 		
 		sm.done();
 		return status;
@@ -242,10 +225,12 @@
 		for (IASTNode node : cont.getNodesToWrite()) {
 			node.accept(vis);
 			if (vis.containsContinue()) {
-				initStatus.addFatalError(Messages.ExtractFunctionRefactoring_Error_Continue);
+				initStatus
+						.addFatalError(Messages.ExtractFunctionRefactoring_Error_Continue);
 				break;
 			} else if (vis.containsBreak()) {
-				initStatus.addFatalError(Messages.ExtractFunctionRefactoring_Error_Break);
+				initStatus
+						.addFatalError(Messages.ExtractFunctionRefactoring_Error_Break);
 				break;
 			}
 		}
@@ -254,7 +239,8 @@
 		for (IASTNode node : cont.getNodesToWrite()) {
 			node.accept(rFinder);
 			if (rFinder.containsReturn()) {
-				initStatus.addFatalError(Messages.ExtractFunctionRefactoring_Error_Return);
+				initStatus
+						.addFatalError(Messages.ExtractFunctionRefactoring_Error_Return);
 				break;
 			}
 		}
@@ -354,11 +340,6 @@
 			methodCall = declarationStatement;
 		}
 		insertCallintoTree(methodCall, container.getNodesToWrite(), rewriter, editGroup);
-
-		if (info.isReplaceDuplicates()) {
-			replaceSimilar(collector, astMethodName, implementationFile, context.getType());
-		}
-
 		for (IASTNode node : container.getNodesToWrite()) {
 			if (node != firstNodeToWrite) {
 				rewriter.remove(node, editGroup);
@@ -375,12 +356,14 @@
 			IASTExpression leftSubTree = parent.getOperand1();
 			int op = parent.getOperator();
 			IASTBinaryExpression newParentNode = new CPPASTBinaryExpression();
+			CPPASTLiteralExpression placeholder = new CPPASTLiteralExpression(IASTLiteralExpression.lk_integer_constant, ZERO);
 			IASTBinaryExpression rootBinExp = getRootBinExp(parent, list);
 			newParentNode.setParent(rootBinExp.getParent());
-			newParentNode.setOperand1(leftSubTree.copy());
+			newParentNode.setOperand1(placeholder);
 			newParentNode.setOperator(op);
-			newParentNode.setOperand2((IASTExpression) methodCall);
-			rewriter.replace(rootBinExp, newParentNode, editGroup);
+			newParentNode.setOperand2((IASTExpression) methodCall); // TODO check
+			ASTRewrite callRewrite = rewriter.replace(rootBinExp, newParentNode, editGroup);
+			callRewrite.replace(placeholder, leftSubTree, editGroup);
 		}else {
 			rewriter.replace(firstNode, methodCall, editGroup);
 		}
@@ -423,158 +406,6 @@
 
 	}
 
-	private void replaceSimilar(ModificationCollector collector, final IASTName astMethodName,
-			final IFile implementationFile,
-			final ContextType contextType) {
-		// Find similar code
-		final List<IASTNode> nodesToRewriteWithoutComments = new LinkedList<IASTNode>();
-
-		for (IASTNode node : container.getNodesToWrite()) {
-			if (!(node instanceof IASTComment)) {
-				nodesToRewriteWithoutComments.add(node);
-			}
-		}
-
-		final Vector<IASTNode> initTrail = getTrail(nodesToRewriteWithoutComments);
-		final String title;
-		if (contextType == MethodContext.ContextType.METHOD) {
-			title = Messages.ExtractFunctionRefactoring_CreateMethodCall;
-		} else {
-			title = Messages.ExtractFunctionRefactoring_CreateFunctionCall;
-		}
-
-		if (!hasNameResolvingForSimilarError) {
-			unit.accept(new SimilarFinderVisitor(this, collector, initTrail, implementationFile,
-					astMethodName, nodesToRewriteWithoutComments, title));
-		}
-	}
-
-	protected Vector<IASTNode> getTrail(List<IASTNode> stmts) {
-		final Vector<IASTNode> trail = new Vector<IASTNode>();
-
-		nameTrail = new HashMap<String, Integer>();
-		final Container<Integer> trailCounter = new Container<Integer>(NULL_INTEGER);
-
-		for (IASTNode node : stmts) {
-			node.accept(new CPPASTAllVisitor() {
-				@Override
-				public int visitAll(IASTNode node) {
-
-					if (node instanceof IASTComment) {
-						// Visit Comment, but don't add them to the trail
-						return super.visitAll(node);
-					} else if (node instanceof IASTNamedTypeSpecifier) {
-						// Skip if somewhere is a named Type Specifier
-						trail.add(node);
-						return PROCESS_SKIP;
-					} else if (node instanceof IASTName) {
-						if (node instanceof ICPPASTConversionName && node instanceof ICPPASTOperatorName
-								&& node instanceof ICPPASTTemplateId) {
-							trail.add(node);
-							return super.visitAll(node);
-						} else {
-							// Save Name Sequenz Number
-							IASTName name = (IASTName) node;
-							TrailName trailName = new TrailName();
-							int actCount = trailCounter.getObject().intValue();
-							if (nameTrail.containsKey(name.getRawSignature())) {
-								Integer value = nameTrail.get(name.getRawSignature());
-								actCount = value.intValue();
-							} else {
-								trailCounter.setObject(Integer.valueOf(++actCount));
-								nameTrail.put(name.getRawSignature(), trailCounter.getObject());
-							}
-							trailName.setNameNumber(actCount);
-							trailName.setRealName(name);
-
-							if (info.getReturnVariable() != null
-									&& info.getReturnVariable().getName().getRawSignature().equals(
-											name.getRawSignature())) {
-								returnNumber.setObject(Integer.valueOf(actCount));
-							}
-
-							// Save type informations for the name
-							IBinding bind = name.resolveBinding();
-							IASTName[] declNames = name.getTranslationUnit().getDeclarationsInAST(bind);
-							if (declNames.length > 0) {
-								IASTNode tmpNode = ASTHelper.getDeclarationForNode(declNames[0]);
-
-								IBinding declbind = declNames[0].resolveBinding();
-								if (declbind instanceof ICPPBinding) {
-									ICPPBinding cppBind = (ICPPBinding) declbind;
-									try {
-										trailName.setGloballyQualified(cppBind.isGloballyQualified());
-									} catch (DOMException e) {
-										ILog logger = CUIPlugin.getDefault().getLog();
-										IStatus status = new Status(IStatus.WARNING, CUIPlugin.PLUGIN_ID,
-												IStatus.OK, e.getMessage(), e);
-
-										logger.log(status);
-									}
-								}
-
-								if (tmpNode != null) {
-									trailName.setDeclaration(tmpNode);
-								} else {
-									hasNameResolvingForSimilarError = true;
-								}
-							}
-
-							trail.add(trailName);
-							return PROCESS_SKIP;
-						}
-					} else {
-						trail.add(node);
-						return super.visitAll(node);
-					}
-				}
-			});
-
-		}
-
-		return trail;
-	}
-
-	protected boolean isStatementInTrail(IASTStatement stmt, final Vector<IASTNode> trail) {
-		final Container<Boolean> same = new Container<Boolean>(Boolean.TRUE);
-		final TrailNodeEqualityChecker equalityChecker = new TrailNodeEqualityChecker(names, namesCounter);
-
-		stmt.accept(new CPPASTAllVisitor() {
-			@Override
-			public int visitAll(IASTNode node) {
-
-				int pos = trailPos.getObject().intValue();
-
-				if (trail.size() <= 0 || pos >= trail.size()) {
-					same.setObject(Boolean.FALSE);
-					return PROCESS_ABORT;
-				}
-
-				if (node instanceof IASTComment) {
-					// Visit Comment, but they are not in the trail
-					return super.visitAll(node);
-				}
-
-				IASTNode trailNode = trail.get(pos);
-				trailPos.setObject(Integer.valueOf(pos + 1));
-
-				if (equalityChecker.isEquals(trailNode, node)) {
-					if (node instanceof ICPPASTQualifiedName || node instanceof IASTNamedTypeSpecifier) {
-						return PROCESS_SKIP;
-					} else {
-						return super.visitAll(node);
-					}
-
-				} else {
-					same.setObject(new Boolean(false));
-					return PROCESS_ABORT;
-				}
-			}
-		});
-
-		return same.getObject().booleanValue();
-	}
-
 	private boolean isMethodAllreadyDefined(
 			IASTSimpleDeclaration methodDeclaration,
 			ICPPASTCompositeTypeSpecifier classDeclaration) {
@@ -935,21 +766,4 @@
 		}
 	}
 
-	@Override
-	protected RefactoringDescriptor getRefactoringDescriptor() {
-		Map<String, String> arguments = getArgumentMap();
-		RefactoringDescriptor desc = new ExtractFunctionRefactoringDescription( project.getProject().getName(), "Extract Method Refactoring", "Create method " + info.getMethodName(), arguments);  //$NON-NLS-1$//$NON-NLS-2$
-		return desc;
-	}
-
-	private Map<String, String> getArgumentMap() {
-		Map<String, String> arguments = new HashMap<String, String>();
-		arguments.put(CRefactoringDescription.FILE_NAME, file.getLocationURI().toString());
-		arguments.put(CRefactoringDescription.SELECTION, region.getOffset() + "," + region.getLength()); //$NON-NLS-1$
-		arguments.put(ExtractFunctionRefactoringDescription.NAME, info.getMethodName());
-		arguments.put(ExtractFunctionRefactoringDescription.VISIBILITY, info.getVisibility().toString());
-		arguments.put(ExtractFunctionRefactoringDescription.REPLACE_DUBLICATES, Boolean.toString(info.isReplaceDuplicates()));
-		return arguments;
-	}
-
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/ExtractFunctionRefactoringContribution.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Institute for Software, HSR Hochschule fuer Technik  
- * Rapperswil, University of applied sciences and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0 
- * which accompanies this distribution, and is available at 
- * http://www.eclipse.org/legal/epl-v10.html  
- * 
- * Contributors: 
- * Institute for Software (IFS)- initial API and implementation 
- ******************************************************************************/
-package org.eclipse.cdt.internal.ui.refactoring.extractfunction;
-
-import java.util.Map;
-
-import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
-
-import org.eclipse.cdt.internal.ui.refactoring.CRefactoringContribution;
-
-/**
- * @author Emanuel Graf IFS
- *
- */
-public class ExtractFunctionRefactoringContribution extends CRefactoringContribution {
-
-	@SuppressWarnings("unchecked")
-	@Override
-	public RefactoringDescriptor createDescriptor(String id, String project, String description,
-			String comment, Map arguments, int flags) throws IllegalArgumentException {
-		if(id.equals(ExtractFunctionRefactoring.ID)) {
-			return new ExtractFunctionRefactoringDescription(project, description, comment, arguments);
-		}else {
-			return null;
-		}
-	}
-
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/ExtractFunctionRefactoringDescription.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Institute for Software, HSR Hochschule fuer Technik  
- * Rapperswil, University of applied sciences and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0 
- * which accompanies this distribution, and is available at 
- * http://www.eclipse.org/legal/epl-v10.html  
- * 
- * Contributors: 
- * Institute for Software (IFS)- initial API and implementation 
- ******************************************************************************/
-package org.eclipse.cdt.internal.ui.refactoring.extractfunction;
-
-import java.util.Map;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ltk.core.refactoring.Refactoring;
-import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
-import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-
-import org.eclipse.cdt.core.model.ICProject;
-
-import org.eclipse.cdt.internal.ui.refactoring.CRefactoringDescription;
-import org.eclipse.cdt.internal.ui.refactoring.utils.VisibilityEnum;
-
-/**
- * @author Emanuel Graf IFS
- *
- */
-public class ExtractFunctionRefactoringDescription extends CRefactoringDescription {
-	protected static final String NAME = "name"; //$NON-NLS-1$
-	protected static final String VISIBILITY = "visibility"; //$NON-NLS-1$
-	protected static final String REPLACE_DUBLICATES = "replaceDuplicates"; //$NON-NLS-1$
-
-	public ExtractFunctionRefactoringDescription(String project, String description,
-			String comment, Map<String, String> arguments) {
-		super(ExtractFunctionRefactoring.ID, project, description, comment, RefactoringDescriptor.MULTI_CHANGE, arguments);
-	}
-
-	@Override
-	public Refactoring createRefactoring(RefactoringStatus status) throws CoreException {
-		IFile file;
-		ExtractFunctionInformation info = new ExtractFunctionInformation();
-		ICProject proj;
-		
-		info.setMethodName(arguments.get(NAME));
-		info.setVisibility(VisibilityEnum.getEnumForStringRepresentation(arguments.get(VISIBILITY)));
-		info.setReplaceDuplicates(Boolean.parseBoolean(arguments.get(REPLACE_DUBLICATES)));
-		
-		proj = getCProject();
-		file = getFile();
-		
-		ISelection selection = getSelection();
-		return new ExtractFunctionRefactoring(file, selection, info, proj);
-	}
-
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/ExtractFunctionRefactoringRunner.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/ExtractFunctionRefactoringRunner.java	Wed Aug 05 17:35:39 2009 -0500
@@ -26,9 +26,12 @@
  *
  */
 public class ExtractFunctionRefactoringRunner extends RefactoringRunner  {
+	
+	private ICProject project;
 
-	public ExtractFunctionRefactoringRunner(IFile file, ISelection selection, IShellProvider shellProvider, ICProject cProject) {
-		super(file, selection, null, shellProvider, cProject);
+	public ExtractFunctionRefactoringRunner(IFile file, ISelection selection, IShellProvider shellProvider, ICProject project) {
+		super(file, selection, null, shellProvider);
+		this.project = project;
 	}
 
 	@Override
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/Messages.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/Messages.java	Wed Aug 05 17:35:39 2009 -0500
@@ -34,7 +34,7 @@
 	public static String ExtractFunctionComposite_ReturnValue;
 	public static String ExtractFunctionRefactoring_CreateMethodDef;
 	public static String ExtractFunctionRefactoring_CreateFunctionDef;
-	public static String ExtractFunctionComposite_ReplaceDuplicates;
+//	public static String ExtractFunctionComposite_ReplaceDuplicates;
 	public static String ExtractFunctionRefactoring_CreateMethodCall;
 	public static String ExtractFunctionRefactoring_CreateFunctionCall;
 	public static String ChooserComposite_Return;
@@ -46,7 +46,6 @@
 	public static String ExtractFunctionRefactoring_Error_Return;
 	public static String ExtractFunctionRefactoring_Error_Continue;
 	public static String ExtractFunctionRefactoring_Error_Break;
-	public static String SimilarFinderVisitor_replaceDuplicateCode;
 
 	static {
 		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/SimilarFinderVisitor.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Institute for Software, HSR Hochschule fuer Technik  
- * Rapperswil, University of applied sciences and others
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0 
- * which accompanies this distribution, and is available at 
- * http://www.eclipse.org/legal/epl-v10.html  
- *  
- * Contributors: 
- * Institute for Software - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.ui.refactoring.extractfunction;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Vector;
-import java.util.Map.Entry;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.text.edits.TextEditGroup;
-
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.IASTStatement;
-import org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor;
-import org.eclipse.cdt.core.dom.rewrite.ASTRewrite;
-
-import org.eclipse.cdt.internal.ui.refactoring.ModificationCollector;
-import org.eclipse.cdt.internal.ui.refactoring.NodeContainer;
-import org.eclipse.cdt.internal.ui.refactoring.NodeContainer.NameInformation;
-
-final class SimilarFinderVisitor extends CPPASTVisitor {
-
-		private final ExtractFunctionRefactoring refactoring;
-
-		private final Vector<IASTNode> trail;
-		private final IASTName name;
-		private final List<IASTNode> stmts;
-		private int i = 0;
-		private NodeContainer similarContainer;
-	private final List<IASTStatement> stmtToReplace = new ArrayList<IASTStatement>();
-
-	private final ModificationCollector collector;
-
-	SimilarFinderVisitor(ExtractFunctionRefactoring refactoring,
-			ModificationCollector collector, Vector<IASTNode> trail, IFile file, IASTName name,
-			List<IASTNode> stmts, String title) {
-		this.refactoring = refactoring;
-		this.trail = trail;
-		this.name = name;
-		this.stmts = stmts;
-		this.collector = collector;
-		this.similarContainer = new NodeContainer();
-	}
-
-		{
-			shouldVisitStatements = true;
-		}
-
-		@Override
-		public int visit(IASTStatement stmt) {
-			
-			boolean isAllreadyInMainRefactoring = isInSelection(stmt);
-			
-			if( (!isAllreadyInMainRefactoring)
-					&& this.refactoring.isStatementInTrail(stmt, trail)){
-				stmtToReplace.add(stmt);
-				similarContainer.add(stmt);	
-				++i;
-				
-				if(i==stmts.size()){
-					//found similar code
-					
-					boolean similarOnReturnWays = true;
-					for (NameInformation nameInfo : similarContainer.getAllAfterUsedNames()) {
-						if(this.refactoring.names.containsKey(nameInfo.getDeclaration().getRawSignature())){
-							Integer nameOrderNumber = this.refactoring.names.get(nameInfo.getDeclaration().getRawSignature());
-							if(this.refactoring.nameTrail.containsValue(nameOrderNumber)){
-								String orgName = null;
-								boolean found = false;
-								for (Entry<String, Integer> entry : this.refactoring.nameTrail.entrySet()) {
-									if(entry.getValue().equals(nameOrderNumber)){
-										orgName = entry.getKey();
-									}
-								}
-								if(orgName != null){
-									for (NameInformation orgNameInfo : this.refactoring.container.getAllAfterUsedNamesChoosenByUser()) {
-										if( orgName.equals(orgNameInfo.getDeclaration().getRawSignature()) ){
-											found = true;
-										}
-									}
-								}
-								
-								if(!found){
-									similarOnReturnWays = false;
-								}
-							}
-						}
-					}
-										
-					if(similarOnReturnWays){
-						System.out.println(6);
-					IASTNode call = refactoring.getMethodCall(name,
-							this.refactoring.nameTrail, this.refactoring.names,
-							this.refactoring.container, similarContainer);
-					ASTRewrite rewrite = collector.rewriterForTranslationUnit(stmtToReplace.get(0)
-							.getTranslationUnit());
-					TextEditGroup editGroup = new TextEditGroup(Messages.SimilarFinderVisitor_replaceDuplicateCode);
-					rewrite.replace(stmtToReplace.get(0), call, editGroup);
-					if (stmtToReplace.size() > 1) {
-						for (int i = 1; i < stmtToReplace.size(); ++i) {
-							rewrite.remove(stmtToReplace.get(i), editGroup);
-						}
-					}
-					}
-
-					clear();
-				}
-				
-				return PROCESS_SKIP;
-			} else {
-				clear();
-				return super.visit(stmt);
-			}
-			
-		}
-
-		private boolean isInSelection(IASTStatement stmt) {
-			List<IASTNode>nodes = this.refactoring.container.getNodesToWrite();
-			for (IASTNode node : nodes) {
-				if(node.equals(stmt)) {
-					return true;
-				}
-			}
-			return false;
-		}
-
-		private void clear() {
-			i = 0;
-			this.refactoring.names.clear();
-			similarContainer = new NodeContainer();
-			this.refactoring.namesCounter.setObject(ExtractFunctionRefactoring.NULL_INTEGER);
-			this.refactoring.trailPos.setObject(ExtractFunctionRefactoring.NULL_INTEGER);
-		stmtToReplace.clear();
-		}
-	}
\ No newline at end of file
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/messages.properties	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/messages.properties	Wed Aug 05 17:35:39 2009 -0500
@@ -22,7 +22,7 @@
 ExtractFunctionComposite_ReturnValue=Return value:
 ExtractFunctionRefactoring_CreateMethodDef=Create Method Definition
 ExtractFunctionRefactoring_CreateFunctionDef=Create Function Definition
-ExtractFunctionComposite_ReplaceDuplicates=Replace all occurrences of statements with method.
+#ExtractFunctionComposite_ReplaceDuplicates=Replace all occurrences of statements with method.
 ExtractFunctionRefactoring_CreateMethodCall=Create Method Call
 ExtractFunctionRefactoring_CreateFunctionCall=Create Function Call
 ChooserComposite_Return=Return
@@ -34,4 +34,3 @@
 ExtractFunctionRefactoring_Error_Return=Extracting return statements is not supported
 ExtractFunctionRefactoring_Error_Continue=Extracting cotinue statements without the surrounding loop is not possible. Please adjust your selection.
 ExtractFunctionRefactoring_Error_Break=Extracting break statements without the surrounding loop is not possible. Please adjust your selection.
-SimilarFinderVisitor_replaceDuplicateCode=Replace Duplicated Code
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractlocalvariable/ExtractLocalVariableRefactoring.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractlocalvariable/ExtractLocalVariableRefactoring.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Google and others. All rights reserved. This program and
+ * Copyright (c) 2008 Google and others. All rights reserved. This program and
  * the accompanying materials are made available under the terms of the Eclipse
  * Public License v1.0 which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
@@ -11,9 +11,7 @@
 package org.eclipse.cdt.internal.ui.refactoring.extractlocalvariable;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.CoreException;
@@ -22,7 +20,6 @@
 import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.jface.text.Region;
 import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
 import org.eclipse.ltk.core.refactoring.RefactoringStatus;
 import org.eclipse.text.edits.TextEditGroup;
 
@@ -48,7 +45,6 @@
 import org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier;
 import org.eclipse.cdt.core.dom.rewrite.ASTRewrite;
-import org.eclipse.cdt.core.model.ICProject;
 
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTDeclarationStatement;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTDeclarator;
@@ -60,7 +56,6 @@
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPFunction;
 
 import org.eclipse.cdt.internal.ui.refactoring.CRefactoring;
-import org.eclipse.cdt.internal.ui.refactoring.CRefactoringDescription;
 import org.eclipse.cdt.internal.ui.refactoring.ModificationCollector;
 import org.eclipse.cdt.internal.ui.refactoring.NameNVisibilityInformation;
 import org.eclipse.cdt.internal.ui.refactoring.NodeContainer;
@@ -76,73 +71,61 @@
  * @author Tom Ball
  */
 public class ExtractLocalVariableRefactoring extends CRefactoring {
-	
-	public static final String ID = "org.eclipse.cdt.internal.ui.refactoring.extractlocalvariable.ExtractLocalVariableRefactoring"; //$NON-NLS-1$
-	
 	private IASTExpression target = null;
 	private final NameNVisibilityInformation info;
 	private NodeContainer container;
 
 	public ExtractLocalVariableRefactoring(IFile file, ISelection selection,
-			NameNVisibilityInformation info, ICProject project) {
-		super(file, selection, null, project);
+			NameNVisibilityInformation info) {
+		super(file, selection, null);
 		this.info = info;
 		name = Messages.ExtractLocalVariable;
 	}
 
 	@Override
 	public RefactoringStatus checkInitialConditions(IProgressMonitor pm)
-	throws CoreException, OperationCanceledException {
+			throws CoreException, OperationCanceledException {
 		SubMonitor sm = SubMonitor.convert(pm, 9);
-		try {
-			lockIndex();
-			try {
-				super.checkInitialConditions(sm.newChild(6));
+		super.checkInitialConditions(sm.newChild(6));
 
-				container = findAllExpressions();
-				if (container.size() < 1) {
-					initStatus.addFatalError(Messages.ExpressionMustBeSelected);
-					return initStatus;
-				}
+		container = findAllExpressions();
+		if (container.size() < 1) {
+			initStatus.addFatalError(Messages.ExpressionMustBeSelected);
+			return initStatus;
+		}
 
-				sm.worked(1);
-				if (isProgressMonitorCanceld(sm, initStatus))
-					return initStatus;
+		sm.worked(1);
+		if (isProgressMonitorCanceld(sm, initStatus))
+			return initStatus;
 
-				boolean oneMarked = region != null
+		boolean oneMarked = region != null
 				&& isOneMarked(container.getNodesToWrite(), region);
-				if (!oneMarked) {
-					if (target == null) {
-						initStatus.addFatalError(Messages.NoExpressionSelected);
-					} else {
-						initStatus.addFatalError(Messages.TooManyExpressionsSelected);
-					}
-					return initStatus;
-				}
-				sm.worked(1);
+		if (!oneMarked) {
+			if (target == null) {
+				initStatus.addFatalError(Messages.NoExpressionSelected);
+			} else {
+				initStatus.addFatalError(Messages.TooManyExpressionsSelected);
+			}
+			return initStatus;
+		}
+		sm.worked(1);
 
-				if (isProgressMonitorCanceld(sm, initStatus))
-					return initStatus;
-
-				container.findAllNames();
-				sm.worked(1);
+		if (isProgressMonitorCanceld(sm, initStatus))
+			return initStatus;
 
-				container.getAllAfterUsedNames();
-				info.addNamesToUsedNames(findAllDeclaredNames());
-				sm.worked(1);
+		container.findAllNames();
+		sm.worked(1);
 
-				NodeHelper.findMethodContext(container.getNodesToWrite().get(0),
-						getIndex());
-				sm.worked(1);
+		container.getAllAfterUsedNames();
+		info.addNamesToUsedNames(findAllDeclaredNames());
+		sm.worked(1);
 
-				info.setName(guessTempName());
-				sm.done();
-			}finally {
-				unlockIndex();
-			}
-		} catch (InterruptedException e) {
-			Thread.currentThread().interrupt();
-		}
+		NodeHelper.findMethodContext(container.getNodesToWrite().get(0),
+				getIndex());
+		sm.worked(1);
+
+		info.setName(guessTempName());
+		sm.done();
 		return initStatus;
 	}
 
@@ -257,31 +240,22 @@
 	protected void collectModifications(IProgressMonitor pm,
 			ModificationCollector collector) throws CoreException,
 			OperationCanceledException {
-		try {
-			lockIndex();
-			try {
-				String variableName = info.getName();
-				TextEditGroup editGroup = new TextEditGroup(
-						Messages.CreateLocalVariable);
+		String variableName = info.getName();
+		TextEditGroup editGroup = new TextEditGroup(
+				Messages.CreateLocalVariable);
 
-				// Define temporary variable declaration and insert it
-				IASTStatement declInsertPoint = getParentStatement(target);
-				IASTDeclarationStatement declaration = getVariableNodes(variableName);
-				declaration.setParent(declInsertPoint.getParent());
-				ASTRewrite rewriter = collector.rewriterForTranslationUnit(unit);
-				rewriter.insertBefore(declInsertPoint.getParent(), declInsertPoint,
-						declaration, editGroup);
+		// Define temporary variable declaration and insert it
+		IASTStatement declInsertPoint = getParentStatement(target);
+		IASTDeclarationStatement declaration = getVariableNodes(variableName);
+		declaration.setParent(declInsertPoint.getParent());
+		ASTRewrite rewriter = collector.rewriterForTranslationUnit(unit);
+		rewriter.insertBefore(declInsertPoint.getParent(), declInsertPoint,
+				declaration, editGroup);
 
-				// Replace target with reference to temporary variable
-				CPPASTIdExpression idExpression = new CPPASTIdExpression(
-						new CPPASTName(variableName.toCharArray()));
-				rewriter.replace(target, idExpression, editGroup);
-			}finally {
-				unlockIndex();
-			}
-		} catch (InterruptedException e) {
-			Thread.currentThread().interrupt();
-		}
+		// Replace target with reference to temporary variable
+		CPPASTIdExpression idExpression = new CPPASTIdExpression(
+				new CPPASTName(variableName.toCharArray()));
+		rewriter.replace(target, idExpression, editGroup);
 	}
 
 	private IASTStatement getParentStatement(IASTNode node) {
@@ -456,19 +430,4 @@
 		}
 		return null;
 	}
-
-	@Override
-	protected RefactoringDescriptor getRefactoringDescriptor() {
-		Map<String, String> arguments = getArgumentMap();
-		RefactoringDescriptor desc = new ExtractLocalVariableRefactoringDescription(project.getProject().getName(), "Extract Local Variable Refactoring", "Extract " + target.getRawSignature(), arguments);  //$NON-NLS-1$//$NON-NLS-2$
-		return desc;
-	}
-
-	private Map<String, String> getArgumentMap() {
-		Map<String, String> arguments = new HashMap<String, String>();
-		arguments.put(CRefactoringDescription.FILE_NAME, file.getLocationURI().toString());
-		arguments.put(CRefactoringDescription.SELECTION, region.getOffset() + "," + region.getLength()); //$NON-NLS-1$
-		arguments.put(ExtractLocalVariableRefactoringDescription.NAME, info.getName());
-		return arguments;
-	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractlocalvariable/ExtractLocalVariableRefactoringContribution.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Institute for Software, HSR Hochschule fuer Technik  
- * Rapperswil, University of applied sciences and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0 
- * which accompanies this distribution, and is available at 
- * http://www.eclipse.org/legal/epl-v10.html  
- * 
- * Contributors: 
- * Institute for Software (IFS)- initial API and implementation 
- ******************************************************************************/
-package org.eclipse.cdt.internal.ui.refactoring.extractlocalvariable;
-
-import java.util.Map;
-
-import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
-
-import org.eclipse.cdt.internal.ui.refactoring.CRefactoringContribution;
-
-/**
- * @author Emanuel Graf IFS
- *
- */
-public class ExtractLocalVariableRefactoringContribution extends CRefactoringContribution {
-
-	@SuppressWarnings("unchecked")
-	@Override
-	public RefactoringDescriptor createDescriptor(String id, String project, String description,
-			String comment, Map arguments, int flags) throws IllegalArgumentException {
-		if(id.equals(ExtractLocalVariableRefactoring.ID)) {
-			return new ExtractLocalVariableRefactoringDescription(project, description, comment, arguments);
-		}else {
-			return null;
-		}
-	}
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractlocalvariable/ExtractLocalVariableRefactoringDescription.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Institute for Software, HSR Hochschule fuer Technik  
- * Rapperswil, University of applied sciences and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0 
- * which accompanies this distribution, and is available at 
- * http://www.eclipse.org/legal/epl-v10.html  
- * 
- * Contributors: 
- * Institute for Software (IFS)- initial API and implementation 
- ******************************************************************************/
-package org.eclipse.cdt.internal.ui.refactoring.extractlocalvariable;
-
-import java.util.Map;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ltk.core.refactoring.Refactoring;
-import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-
-import org.eclipse.cdt.core.model.ICProject;
-
-import org.eclipse.cdt.internal.ui.refactoring.CRefactoringDescription;
-import org.eclipse.cdt.internal.ui.refactoring.NameNVisibilityInformation;
-
-/**
- * @author Emanuel Graf IFS
- *
- */
-public class ExtractLocalVariableRefactoringDescription extends CRefactoringDescription {
-	
-	static protected final String NAME = "name";  //$NON-NLS-1$
-
-	public ExtractLocalVariableRefactoringDescription(String project, String description,
-			String comment, Map<String, String> arguments) {
-		super(ExtractLocalVariableRefactoring.ID, project, description, comment, CRefactoringDescription.MULTI_CHANGE, arguments);
-	}
-
-	@Override
-	public Refactoring createRefactoring(RefactoringStatus status) throws CoreException {
-		IFile file;
-		NameNVisibilityInformation info = new NameNVisibilityInformation();
-		ICProject proj;
-		
-		info.setName(arguments.get(NAME));
-		
-		proj = getCProject();
-		
-		file = getFile();
-		
-		ISelection selection = getSelection();
-		return new ExtractLocalVariableRefactoring(file, selection, info, proj);
-	}
-
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractlocalvariable/ExtractLocalVariableRefactoringRunner.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractlocalvariable/ExtractLocalVariableRefactoringRunner.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Institute for Software, HSR Hochschule fuer Technik  
+ * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik  
  * Rapperswil, University of applied sciences and others
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
@@ -16,8 +16,6 @@
 import org.eclipse.jface.window.IShellProvider;
 import org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation;
 
-import org.eclipse.cdt.core.model.ICProject;
-
 import org.eclipse.cdt.internal.ui.refactoring.CRefactoring;
 import org.eclipse.cdt.internal.ui.refactoring.NameNVisibilityInformation;
 import org.eclipse.cdt.internal.ui.refactoring.RefactoringRunner;
@@ -30,15 +28,15 @@
 public class ExtractLocalVariableRefactoringRunner extends RefactoringRunner {
 
 	public ExtractLocalVariableRefactoringRunner(IFile file,
-			ISelection selection, IShellProvider shellProvider, ICProject cProject) {
-		super(file, selection, null, shellProvider, cProject);
+			ISelection selection, IShellProvider shellProvider) {
+		super(file, selection, null, shellProvider);
 	}
 
 	@Override
 	public void run() {
 		NameNVisibilityInformation info = new NameNVisibilityInformation();
 		CRefactoring refactoring = new ExtractLocalVariableRefactoring(file,
-				selection, info, project);
+				selection, info);
 		ExtractLocalVariableRefactoringWizard wizard = new ExtractLocalVariableRefactoringWizard(
 				refactoring, info);
 		RefactoringWizardOpenOperation operator = new RefactoringWizardOpenOperation(wizard);
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GenerateGettersAndSettersRefactoring.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GenerateGettersAndSettersRefactoring.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Institute for Software, HSR Hochschule fuer Technik  
+ * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik  
  * Rapperswil, University of applied sciences and others
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
@@ -20,7 +20,6 @@
 import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.jface.text.Region;
 import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
 import org.eclipse.ltk.core.refactoring.RefactoringStatus;
 
 import org.eclipse.cdt.core.dom.ast.ASTNodeProperty;
@@ -38,7 +37,6 @@
 import org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor;
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier;
 import org.eclipse.cdt.core.model.ICElement;
-import org.eclipse.cdt.core.model.ICProject;
 
 import org.eclipse.cdt.internal.ui.refactoring.AddDeclarationNodeToClassChange;
 import org.eclipse.cdt.internal.ui.refactoring.CRefactoring;
@@ -83,8 +81,8 @@
 	private static final String MEMBER_DECLARATION = "MEMBER_DECLARATION"; //$NON-NLS-1$
 	private final GetterAndSetterContext context = new GetterAndSetterContext();	
 	
-	public GenerateGettersAndSettersRefactoring(IFile file, ISelection selection, ICElement element, ICProject project) {
-		super(file, selection, element, project);
+	public GenerateGettersAndSettersRefactoring(IFile file, ISelection selection, ICElement element) {
+		super(file, selection, element);
 	}
 	
 	@Override
@@ -197,11 +195,5 @@
 	
 	public Region getRegion() {
 		return region;
-	}
-
-	@Override
-	protected RefactoringDescriptor getRefactoringDescriptor() {
-		// TODO egraf add Descriptor
-		return null;
 	}	
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GenerateGettersAndSettersRefactoringRunner.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GenerateGettersAndSettersRefactoringRunner.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Institute for Software, HSR Hochschule fuer Technik  
+ * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik  
  * Rapperswil, University of applied sciences and others
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
@@ -19,7 +19,6 @@
 import org.eclipse.ui.texteditor.ITextEditor;
 
 import org.eclipse.cdt.core.model.ICElement;
-import org.eclipse.cdt.core.model.ICProject;
 
 import org.eclipse.cdt.internal.ui.refactoring.RefactoringRunner;
 
@@ -29,14 +28,14 @@
  */
 public class GenerateGettersAndSettersRefactoringRunner extends RefactoringRunner {
 
-	public GenerateGettersAndSettersRefactoringRunner(IFile file, ISelection selection, ICElement elem, IShellProvider shellProvider, ICProject cProject) {
-		super(file, selection, elem, shellProvider, cProject);
+	public GenerateGettersAndSettersRefactoringRunner(IFile file, ISelection selection, ICElement elem, IShellProvider shellProvider) {
+		super(file, selection, elem, shellProvider);
 	}
 
 	@Override
 	public void run() {
 		if (PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor() instanceof ITextEditor) {
-			GenerateGettersAndSettersRefactoring refactoring = new GenerateGettersAndSettersRefactoring(file, selection, celement, project);
+			GenerateGettersAndSettersRefactoring refactoring = new GenerateGettersAndSettersRefactoring(file, selection, celement);
 			GenerateGettersAndSettersRefactoringWizard wizard = new GenerateGettersAndSettersRefactoringWizard(refactoring);
 			RefactoringWizardOpenOperation operator = new RefactoringWizardOpenOperation(wizard);
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/hidemethod/HideMethodRefactoring.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/hidemethod/HideMethodRefactoring.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Institute for Software, HSR Hochschule fuer Technik  
+ * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik  
  * Rapperswil, University of applied sciences and others
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
@@ -12,8 +12,6 @@
 package org.eclipse.cdt.internal.ui.refactoring.hidemethod;
 
 import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.CoreException;
@@ -21,7 +19,6 @@
 import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
 import org.eclipse.ltk.core.refactoring.RefactoringStatus;
 import org.eclipse.text.edits.TextEditGroup;
 
@@ -41,14 +38,12 @@
 import org.eclipse.cdt.core.dom.rewrite.ASTRewrite;
 import org.eclipse.cdt.core.index.IIndexName;
 import org.eclipse.cdt.core.model.ICElement;
-import org.eclipse.cdt.core.model.ICProject;
 
 import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor;
 import org.eclipse.cdt.internal.core.pdom.dom.PDOMName;
 
 import org.eclipse.cdt.internal.ui.refactoring.AddDeclarationNodeToClassChange;
 import org.eclipse.cdt.internal.ui.refactoring.CRefactoring;
-import org.eclipse.cdt.internal.ui.refactoring.CRefactoringDescription;
 import org.eclipse.cdt.internal.ui.refactoring.ModificationCollector;
 import org.eclipse.cdt.internal.ui.refactoring.utils.DeclarationFinder;
 import org.eclipse.cdt.internal.ui.refactoring.utils.DeclarationFinderDO;
@@ -62,102 +57,90 @@
  * 
  */
 public class HideMethodRefactoring extends CRefactoring {
-	
-	public static final String ID = "org.eclipse.cdt.internal.ui.refactoring.hidemethod.HideMethodRefactoring"; //$NON-NLS-1$
 
 	private IASTName methodToHide;
 	private IASTDeclaration methodToHideDecl;
 	private DeclarationFinderDO declData;
 
-	public HideMethodRefactoring(IFile file, ISelection selection, ICElement element, ICProject project) {
-		super(file, selection, element, project);
+	public HideMethodRefactoring(IFile file, ISelection selection, ICElement element) {
+		super(file, selection, element);
 		name = Messages.HideMethodRefactoring_HIDE_METHOD;
 	}
 	
 	@Override
 	public RefactoringStatus checkInitialConditions(IProgressMonitor pm) throws CoreException, OperationCanceledException {
 		SubMonitor sm = SubMonitor.convert(pm, 10);
-		try {
-			lockIndex();
-			try {
-				super.checkInitialConditions(sm.newChild(6));
-
-				if(initStatus.hasFatalError()){
-					return initStatus;
-				}
-
-				if(isProgressMonitorCanceld(sm, initStatus)) return initStatus;
+		super.checkInitialConditions(sm.newChild(6));
+		
+		if(initStatus.hasFatalError()){
+			return initStatus;
+		}
+		
+		if(isProgressMonitorCanceld(sm, initStatus)) return initStatus;
+		
+		IASTName name;
+		ArrayList<IASTName> names = findAllMarkedNames();
+		if (names.size() < 1) {
+			initStatus.addFatalError(Messages.HideMethodRefactoring_NoNameSelected);  
+			return initStatus;
+		}
+		name = names.get(names.size()-1);
+		sm.worked(1);
+		if(isProgressMonitorCanceld(sm, initStatus)) return initStatus;
+		
+		declData = DeclarationFinder.getDeclaration(name, getIndex());
+		
+		if(declData == null || declData.name == null) {
+			initStatus.addFatalError(Messages.HideMethodRefactoring_NoMethodNameSelected); 
+			return initStatus;
+		}
+		
+		methodToHide = declData.name;
+		sm.worked(1);
+		methodToHideDecl = NodeHelper.findSimpleDeclarationInParents(methodToHide);
+		if(methodToHideDecl == null) {
+			initStatus.addFatalError(Messages.HideMethodRefactoring_CanOnlyHideMethods); 
+			return initStatus;
+		}
+		if(!(methodToHideDecl.getParent() instanceof ICPPASTCompositeTypeSpecifier)) {
+			methodToHideDecl = NodeHelper.findFunctionDefinitionInAncestors(methodToHide);
+		}
 
-				IASTName name;
-				ArrayList<IASTName> names = findAllMarkedNames();
-				if (names.size() < 1) {
-					initStatus.addFatalError(Messages.HideMethodRefactoring_NoNameSelected);  
-					return initStatus;
-				}
-				name = names.get(names.size()-1);
-				sm.worked(1);
-				if(isProgressMonitorCanceld(sm, initStatus)) return initStatus;
-
-				declData = DeclarationFinder.getDeclaration(name, getIndex());
-
-				if(declData == null || declData.name == null) {
-					initStatus.addFatalError(Messages.HideMethodRefactoring_NoMethodNameSelected); 
-					return initStatus;
-				}
-
-				methodToHide = declData.name;
-				sm.worked(1);
-				methodToHideDecl = NodeHelper.findSimpleDeclarationInParents(methodToHide);
-				if(methodToHideDecl == null) {
+		if(isProgressMonitorCanceld(sm, initStatus)) return initStatus;
+		sm.worked(1);
+		if(methodToHideDecl instanceof IASTFunctionDefinition) {
+			IASTDeclarator declarator = ((IASTFunctionDefinition)methodToHideDecl).getDeclarator();
+			if(CPPVisitor.findInnermostDeclarator(declarator).getName().getRawSignature().equals(name.getRawSignature())) {
+				if (!(declarator instanceof IASTFunctionDeclarator)) {
 					initStatus.addFatalError(Messages.HideMethodRefactoring_CanOnlyHideMethods); 
 					return initStatus;
 				}
-				if(!(methodToHideDecl.getParent() instanceof ICPPASTCompositeTypeSpecifier)) {
-					methodToHideDecl = NodeHelper.findFunctionDefinitionInAncestors(methodToHide);
-				}
-
-				if(isProgressMonitorCanceld(sm, initStatus)) return initStatus;
-				sm.worked(1);
-				if(methodToHideDecl instanceof IASTFunctionDefinition) {
-					IASTDeclarator declarator = ((IASTFunctionDefinition)methodToHideDecl).getDeclarator();
-					if(CPPVisitor.findInnermostDeclarator(declarator).getName().getRawSignature().equals(name.getRawSignature())) {
-						if (!(declarator instanceof IASTFunctionDeclarator)) {
-							initStatus.addFatalError(Messages.HideMethodRefactoring_CanOnlyHideMethods); 
-							return initStatus;
-						}
+			}
+		}else if (methodToHideDecl instanceof IASTSimpleDeclaration) {
+			for(IASTDeclarator declarator : ((IASTSimpleDeclaration) methodToHideDecl).getDeclarators()) {
+				if(declarator.getName().getRawSignature().equals(name.getRawSignature())) {
+					if (!(declarator instanceof IASTFunctionDeclarator)) {
+						initStatus.addFatalError(Messages.HideMethodRefactoring_CanOnlyHideMethods); 
+						return initStatus;
 					}
-				}else if (methodToHideDecl instanceof IASTSimpleDeclaration) {
-					for(IASTDeclarator declarator : ((IASTSimpleDeclaration) methodToHideDecl).getDeclarators()) {
-						if(declarator.getName().getRawSignature().equals(name.getRawSignature())) {
-							if (!(declarator instanceof IASTFunctionDeclarator)) {
-								initStatus.addFatalError(Messages.HideMethodRefactoring_CanOnlyHideMethods); 
-								return initStatus;
-							}
-						}
-					}			
-				}else {
-					initStatus.addFatalError(Messages.HideMethodRefactoring_CanOnlyHideMethods); 
-					return initStatus;
 				}
-
-				sm.worked(1);		
+			}			
+		}else {
+			initStatus.addFatalError(Messages.HideMethodRefactoring_CanOnlyHideMethods); 
+			return initStatus;
+		}
+		
+		sm.worked(1);		
 
-				IASTCompositeTypeSpecifier classNode = NodeHelper.findClassInAncestors(methodToHide);
-				if(classNode == null) {
-					initStatus.addError(Messages.HideMethodRefactoring_EnclosingClassNotFound);
-				}
-
-				if(checkIfPrivate(classNode, methodToHideDecl)) {
-					initStatus.addError(Messages.HideMethodRefactoring_IsAlreadyPrivate);
-				}
-				sm.done();
-			}
-			finally {
-				unlockIndex();
-			}
-		} catch (InterruptedException e) {
-			Thread.currentThread().interrupt();
+		IASTCompositeTypeSpecifier classNode = NodeHelper.findClassInAncestors(methodToHide);
+		if(classNode == null) {
+			initStatus.addError(Messages.HideMethodRefactoring_EnclosingClassNotFound);
 		}
+		
+		if(checkIfPrivate(classNode, methodToHideDecl)) {
+			initStatus.addError(Messages.HideMethodRefactoring_IsAlreadyPrivate);
+		}
+		sm.done();
 		return initStatus;
 	}
 	
@@ -187,54 +170,41 @@
 	
 	@Override
 	public RefactoringStatus checkFinalConditions(IProgressMonitor pm) throws CoreException, OperationCanceledException {
-		RefactoringStatus finalConditions = null;
-		try {
-			lockIndex();
-			try {
-				finalConditions = super.checkFinalConditions(pm);
-
-				for(IIndexName pdomref : declData.allNamesPDom) {
-					declData.filename = pdomref.getFileLocation().getFileName();
+		RefactoringStatus finalConditions = super.checkFinalConditions(pm);
 
-					if(pdomref instanceof PDOMName) {
-						PDOMName pdomName = (PDOMName)pdomref;
-						if(pdomName.isDeclaration()) {
-							continue;
-						}
-						if(pdomName.isDefinition()) {
-							continue;
-						}
-					}			
-
-					IASTTranslationUnit transUtmp = TranslationUnitHelper.loadTranslationUnit(declData.filename, false);
-					IASTName expName = ExpressionFinder.findExpressionInTranslationUnit(transUtmp, pdomref);
+		for(IIndexName pdomref : declData.allNamesPDom) {
+			declData.filename = pdomref.getFileLocation().getFileName();
 
-					IASTFunctionDeclarator funcDec = findEnclosingFunction(expName);
-					IASTCompositeTypeSpecifier encClass2;
-					if(funcDec == null) {
-						encClass2 = NodeHelper.findClassInAncestors(expName);
-					}
-					else {
-						encClass2 = NodeHelper.findClassInAncestors(funcDec);
-					}
-
-					IASTCompositeTypeSpecifier encClass = NodeHelper.findClassInAncestors(methodToHide);
+			if(pdomref instanceof PDOMName) {
+				PDOMName pdomName = (PDOMName)pdomref;
+				if(pdomName.isDeclaration()) {
+					continue;
+				}
+				if(pdomName.isDefinition()) {
+					continue;
+				}
+			}			
+			
+			IASTTranslationUnit transUtmp = TranslationUnitHelper.loadTranslationUnit(declData.filename, false);
+			IASTName expName = ExpressionFinder.findExpressionInTranslationUnit(transUtmp, pdomref);
+			
+			IASTFunctionDeclarator funcDec = findEnclosingFunction(expName);
+			IASTCompositeTypeSpecifier encClass2;
+			if(funcDec == null) {
+				encClass2 = NodeHelper.findClassInAncestors(expName);
+			}
+			else {
+				encClass2 = NodeHelper.findClassInAncestors(funcDec);
+			}
+			
+			IASTCompositeTypeSpecifier encClass = NodeHelper.findClassInAncestors(methodToHide);
 
-					if(!NodeHelper.isSameNode(encClass, encClass2)) {
-						finalConditions.addWarning(Messages.HideMethodRefactoring_HasExternalReferences);
-						break;
-					}
-				}
-
-				return finalConditions;	
+			if(!NodeHelper.isSameNode(encClass, encClass2)) {
+				finalConditions.addWarning(Messages.HideMethodRefactoring_HasExternalReferences);
+				break;
 			}
-			finally {
-				unlockIndex();
-			}
-		} catch (InterruptedException e) {
-			Thread.currentThread().interrupt();
 		}
-		return finalConditions;
+		return finalConditions;	
 	}
 
 	private IASTFunctionDeclarator findEnclosingFunction(IASTNode node) throws CoreException {
@@ -275,36 +245,12 @@
 
 	@Override
 	protected void collectModifications(IProgressMonitor pm, ModificationCollector collector) throws CoreException,	OperationCanceledException {
-		try {
-			lockIndex();
-			try {
-				ASTRewrite rewriter = collector.rewriterForTranslationUnit(declData.transUnit);
-				TextEditGroup editGroup = new TextEditGroup(Messages.HideMethodRefactoring_FILE_CHANGE_TEXT+ methodToHide.getRawSignature());
-
-				ICPPASTCompositeTypeSpecifier classDefinition = (ICPPASTCompositeTypeSpecifier) methodToHideDecl.getParent();
-				AddDeclarationNodeToClassChange.createChange(classDefinition, VisibilityEnum.v_private, methodToHideDecl, false, collector);
+		ASTRewrite rewriter = collector.rewriterForTranslationUnit(declData.transUnit);
+		TextEditGroup editGroup = new TextEditGroup(Messages.HideMethodRefactoring_FILE_CHANGE_TEXT+ methodToHide.getRawSignature());
+		
+		ICPPASTCompositeTypeSpecifier classDefinition = (ICPPASTCompositeTypeSpecifier) methodToHideDecl.getParent();
+		AddDeclarationNodeToClassChange.createChange(classDefinition, VisibilityEnum.v_private, methodToHideDecl, false, collector);
 
-				rewriter.remove(methodToHideDecl, editGroup);
-			}
-			finally {
-				unlockIndex();
-			}
-		} catch (InterruptedException e) {
-			Thread.currentThread().interrupt();
-		}
-	}
-
-	@Override
-	protected RefactoringDescriptor getRefactoringDescriptor() {
-		Map<String, String> arguments = getArgumentMap();
-		RefactoringDescriptor desc = new HideMethodRefactoringDescription( project.getProject().getName(), "Hide Method Refactoring", "Hide Method " + methodToHide.getRawSignature(), arguments);  //$NON-NLS-1$//$NON-NLS-2$
-		return desc;
-	}
-
-	private Map<String, String> getArgumentMap() {
-		Map<String, String> arguments = new HashMap<String, String>();
-		arguments.put(CRefactoringDescription.FILE_NAME, file.getLocationURI().toString());
-		arguments.put(CRefactoringDescription.SELECTION, region.getOffset() + "," + region.getLength()); //$NON-NLS-1$
-		return arguments;
+		rewriter.remove(methodToHideDecl, editGroup);
 	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/hidemethod/HideMethodRefactoringContribution.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Institute for Software, HSR Hochschule fuer Technik  
- * Rapperswil, University of applied sciences and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0 
- * which accompanies this distribution, and is available at 
- * http://www.eclipse.org/legal/epl-v10.html  
- * 
- * Contributors: 
- * Institute for Software (IFS)- initial API and implementation 
- ******************************************************************************/
-package org.eclipse.cdt.internal.ui.refactoring.hidemethod;
-
-import java.util.Map;
-
-import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
-
-import org.eclipse.cdt.internal.ui.refactoring.CRefactoringContribution;
-
-/**
- * @author Emanuel Graf IFS
- *
- */
-public class HideMethodRefactoringContribution extends CRefactoringContribution {
-
-	@SuppressWarnings("unchecked")
-	@Override
-	public RefactoringDescriptor createDescriptor(String id, String project, String description,
-			String comment, Map arguments, int flags) throws IllegalArgumentException {
-		if(id.equals(HideMethodRefactoring.ID)) {
-			return new HideMethodRefactoringDescription(project, description, comment, arguments);
-		}else {
-			return null;
-		}
-	}
-
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/hidemethod/HideMethodRefactoringDescription.java	Tue Aug 04 14:00:13 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Institute for Software, HSR Hochschule fuer Technik  
- * Rapperswil, University of applied sciences and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0 
- * which accompanies this distribution, and is available at 
- * http://www.eclipse.org/legal/epl-v10.html  
- * 
- * Contributors: 
- * Institute for Software (IFS)- initial API and implementation 
- ******************************************************************************/
-package org.eclipse.cdt.internal.ui.refactoring.hidemethod;
-
-import java.util.Map;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ltk.core.refactoring.Refactoring;
-import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
-import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-
-import org.eclipse.cdt.core.model.ICProject;
-
-import org.eclipse.cdt.internal.ui.refactoring.CRefactoringDescription;
-
-/**
- * @author Emanuel Graf IFS
- *
- */
-public class HideMethodRefactoringDescription extends CRefactoringDescription {
-
-	public HideMethodRefactoringDescription(String project, String description, String comment,
-			Map<String, String> arguments) {
-		super(HideMethodRefactoring.ID, project, description, comment, RefactoringDescriptor.STRUCTURAL_CHANGE, arguments);
-	}
-
-	@Override
-	public Refactoring createRefactoring(RefactoringStatus status) throws CoreException {
-		IFile file;
-		ICProject proj;
-		
-		proj = getCProject();
-		file = getFile();
-		ISelection selection = getSelection();
-		return new HideMethodRefactoring(file, selection, null, proj);
-	}
-
-}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/hidemethod/HideMethodRefactoringRunner.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/hidemethod/HideMethodRefactoringRunner.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Institute for Software, HSR Hochschule fuer Technik  
+ * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik  
  * Rapperswil, University of applied sciences and others
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
@@ -12,12 +12,13 @@
 package org.eclipse.cdt.internal.ui.refactoring.hidemethod;
 
 import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.window.IShellProvider;
 import org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation;
 
 import org.eclipse.cdt.core.model.ICElement;
-import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.ui.CUIPlugin;
 
 import org.eclipse.cdt.internal.ui.refactoring.CRefactoring;
 import org.eclipse.cdt.internal.ui.refactoring.RefactoringRunner;
@@ -28,20 +29,29 @@
  */
 public class HideMethodRefactoringRunner extends RefactoringRunner {
 
-	public HideMethodRefactoringRunner(IFile file, ISelection selection, ICElement element, IShellProvider shellProvider, ICProject cProject) {
-		super(file, selection, element, shellProvider, cProject);
+	public HideMethodRefactoringRunner(IFile file, ISelection selection, ICElement element, IShellProvider shellProvider) {
+		super(file, selection, element, shellProvider);
 	}
 
 
 	@Override
 	public void run() {
-		CRefactoring refactoring= new HideMethodRefactoring(file, selection, celement, project);
+		CRefactoring refactoring= new HideMethodRefactoring(file, selection, celement);
 		HideMethodRefactoringWizard wizard = new HideMethodRefactoringWizard(refactoring);
 		RefactoringWizardOpenOperation operator = new RefactoringWizardOpenOperation(wizard);
+
 		try {
-			operator.run(shellProvider.getShell(), refactoring.getName());
+			refactoring.lockIndex();
+			try {
+				operator.run(shellProvider.getShell(), refactoring.getName());
+			}
+			finally {
+				refactoring.unlockIndex();
+			}
 		} catch (InterruptedException e) {
 			Thread.currentThread().interrupt();
-		} 
+		} catch (CoreException e) {
+			CUIPlugin.log(e);
+		}
 	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/ImplementMethodRefactoring.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/ImplementMethodRefactoring.java	Wed Aug 05 17:35:39 2009 -0500
@@ -21,7 +21,6 @@
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
 import org.eclipse.ltk.core.refactoring.RefactoringStatus;
 
 import org.eclipse.cdt.core.dom.ast.ASTVisitor;
@@ -41,7 +40,6 @@
 import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter;
 import org.eclipse.cdt.core.dom.rewrite.ASTRewrite;
 import org.eclipse.cdt.core.model.ICElement;
-import org.eclipse.cdt.core.model.ICProject;
 
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTCompoundStatement;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionDeclarator;
@@ -68,8 +66,8 @@
 	private CPPASTFunctionDeclarator createdMethodDeclarator;
 	private ImplementMethodData data;
 	
-	public ImplementMethodRefactoring(IFile file, ISelection selection, ICElement element, ICProject project) {
-		super(file, selection, element, project);
+	public ImplementMethodRefactoring(IFile file, ISelection selection, ICElement element) {
+		super(file, selection, element);
 		data = new ImplementMethodData();
 	}
 	
@@ -248,10 +246,4 @@
 	public ImplementMethodData getRefactoringData() {
 		return data;
 	}
-
-	@Override
-	protected RefactoringDescriptor getRefactoringDescriptor() {
-		// TODO egraf add Descriptor
-		return null;
-	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/ImplementMethodRefactoringRunner.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/ImplementMethodRefactoringRunner.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Institute for Software, HSR Hochschule fuer Technik  
+ * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik  
  * Rapperswil, University of applied sciences and others
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
@@ -18,7 +18,6 @@
 import org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation;
 
 import org.eclipse.cdt.core.model.ICElement;
-import org.eclipse.cdt.core.model.ICProject;
 import org.eclipse.cdt.ui.CUIPlugin;
 
 import org.eclipse.cdt.internal.ui.refactoring.RefactoringRunner;
@@ -29,13 +28,13 @@
  */
 public class ImplementMethodRefactoringRunner extends RefactoringRunner {
 
-	public ImplementMethodRefactoringRunner(IFile file, ISelection selection, ICElement element, IShellProvider shellProvider, ICProject cProject) {
-		super(file, selection, element, shellProvider, cProject);
+	public ImplementMethodRefactoringRunner(IFile file, ISelection selection, ICElement element, IShellProvider shellProvider) {
+		super(file, selection, element, shellProvider);
 	}
 
 	@Override
 	public void run() {
-		ImplementMethodRefactoring refactoring = new ImplementMethodRefactoring(file, selection, celement, project);
+		ImplementMethodRefactoring refactoring = new ImplementMethodRefactoring(file, selection, celement);
 		ImplementMethodRefactoringWizard wizard = new ImplementMethodRefactoringWizard(refactoring);
 		RefactoringWizardOpenOperation operator = new RefactoringWizardOpenOperation(wizard);
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/ASTManager.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/ASTManager.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /******************************************************************************* 
- * Copyright (c) 2005, 2009 Wind River Systems, Inc. and others.
+ * Copyright (c) 2005, 2008 Wind River Systems, Inc. and others.
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
  * which accompanies this distribution, and is available at 
@@ -615,7 +615,10 @@
 
     private static IType getRealType(IType t) {
         while(t instanceof ITypedef) {
-            t= ((ITypedef) t).getType();
+            try {
+                t= ((ITypedef) t).getType();
+            } catch (DOMException e) {
+            }
         }
         return t;
     }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/LineSearchElement.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/LineSearchElement.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,251 +1,251 @@
-/*******************************************************************************
- * Copyright (c) 2009 QNX Software Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Andrey Eremchenko, kamre@ngs.ru - 222495 C/C++ search should show line matches and line numbers	
- * 
- *******************************************************************************/
-package org.eclipse.cdt.internal.ui.search;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.List;
-
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-
-import org.eclipse.cdt.core.index.IIndexFileLocation;
-import org.eclipse.cdt.core.parser.CodeReader;
-import org.eclipse.cdt.ui.CUIPlugin;
-
-/**
- * Element representing a line with one ore more matches.
- * 
- */
-public class LineSearchElement extends PDOMSearchElement {
-	public static final class Match {
-		private final int fOffset;
-		private final int fLength;
-		private final boolean fIsPolymorphicCall;
-
-		public Match(int offset, int length, boolean isPolymorphicCall) {
-			fOffset = offset;
-			fLength = length;
-			fIsPolymorphicCall = isPolymorphicCall;
-		}
-
-		public int getOffset() {
-			return fOffset;
-		}
-
-		public int getLength() {
-			return fLength;
-		}
-
-		public boolean isPolymorphicCall() {
-			return fIsPolymorphicCall;
-		}
-		
-		@Override
-		public boolean equals(Object obj) {
-			if (!(obj instanceof Match))
-				return false;
-			Match m = (Match) obj;
-			return (fOffset == m.fOffset) && (fLength == m.fLength);
-		}
-
-		@Override
-		public int hashCode() {
-			return 31 * fOffset + fLength;
-		}
-	}
-
-	private static final class MatchesComparator implements Comparator<Match> {
-		public int compare(Match m1, Match m2) {
-			return m1.getOffset() - m2.getOffset();
-		}
-	}
-
-	private final int fOffset;
-	private final int fNumber;
-	private final String fContent;
-	private final Match[] fMatches;
-	private final static MatchesComparator MATCHES_COMPARATOR = new MatchesComparator();
-
-	private LineSearchElement(IIndexFileLocation file, Match[] matches, int number, String content, int offset) {
-		super(file);
-		fMatches = matches;
-		fNumber = number;
-		// skip whitespace at the beginning
-		int index = 0;
-		int length = content.length();
-		int firstMatchOffset = matches[0].getOffset();
-		while (offset < firstMatchOffset && length > 0) {
-			if (content.charAt(index) != ' ')
-				break;
-			index++;
-			offset++;
-			length--;
-		}
-		fOffset = offset;
-		fContent = content.substring(index);
-	}
-
-	public int getOffset() {
-		return fOffset;
-	}
-
-	public int getLineNumber() {
-		return fNumber;
-	}
-
-	public String getContent() {
-		return fContent;
-	}
-
-	public Match[] getMatches() {
-		return fMatches;
-	}
-
-	@Override
-	public String toString() {
-		return fNumber + ": " + fContent; //$NON-NLS-1$
-	}
-
-	@Override
-	public boolean equals(Object obj) {
-		if (!(obj instanceof LineSearchElement))
-			return false;
-		LineSearchElement other = (LineSearchElement) obj;
-		return (fOffset == other.fOffset) && (super.equals(obj)) && (fMatches.equals(other.fMatches));
-	}
-
-	@Override
-	public int hashCode() {
-		return fOffset + 31 * (super.hashCode() + 31 * fMatches.hashCode());
-	}
-
-	public static LineSearchElement[] createElements(IIndexFileLocation fileLocation, Match[] matches) {
-		// sort matches according to their offsets
-		Arrays.sort(matches, MATCHES_COMPARATOR);
-		LineSearchElement[] result = {};
-		try {
-			String path = fileLocation.getURI().getPath();
-			// read the content of file
-			CodeReader reader = new CodeReader(path);
-			result = collectLineElements(reader.buffer, matches, fileLocation);
-		} catch (IOException e) {
-			CUIPlugin.log(e);
-		}
-		return result;
-	}
-
-	public static LineSearchElement[] createElements(IIndexFileLocation fileLocation, Match[] matches,
-			IDocument document) {
-		// sort matches according to their offsets
-		Arrays.sort(matches, MATCHES_COMPARATOR);
-		// group all matches by lines and create LineSearchElements
-		List<LineSearchElement> result = new ArrayList<LineSearchElement>();
-		int firstMatch = 0;
-		while (firstMatch < matches.length) {
-			try {
-				int lineNumber = document.getLineOfOffset(matches[firstMatch].getOffset());
-				int lineOffset = document.getLineOffset(lineNumber);
-				int lineLength = document.getLineLength(lineNumber);
-				int nextlineOffset = lineOffset + lineLength;
-				int nextMatch = firstMatch;
-				int nextMatchOffset = matches[nextMatch].getOffset();
-				while (nextMatch < matches.length && nextMatchOffset < nextlineOffset) {
-					nextMatch++;
-					if (nextMatch < matches.length)
-						nextMatchOffset = matches[nextMatch].getOffset();
-				}
-				int lineMatchesCount = nextMatch - firstMatch;
-				Match[] lineMatches = new Match[lineMatchesCount];
-				System.arraycopy(matches, firstMatch, lineMatches, 0, lineMatchesCount);
-				String content = document.get(lineOffset, lineLength);
-				result.add(new LineSearchElement(fileLocation, lineMatches, lineNumber + 1, content, lineOffset));
-				firstMatch = nextMatch;
-			} catch (BadLocationException e) {
-				CUIPlugin.log(e);
-			}
-		}
-		return result.toArray(new LineSearchElement[result.size()]);
-	}
-
-	private static LineSearchElement[] collectLineElements(char[] buffer, Match[] matches,
-			IIndexFileLocation fileLocation) {
-		List<LineSearchElement> result = new ArrayList<LineSearchElement>();
-		boolean skipLF = false;
-		int lineNumber = 1;
-		int lineOffset = 0;
-		int lineFirstMatch = -1; // not matched
-		int nextMatch = 0;
-		int nextMatchOffset = matches[nextMatch].getOffset();
-		for (int pos = 0; pos < buffer.length; pos++) {
-			char c = buffer[pos];
-			// consider '\n' and '\r'
-			if (skipLF) {
-				skipLF = false;
-				if (c == '\n') {
-					lineOffset = pos + 1;
-					continue;
-				}
-			}
-			if (c == '\n' || c == '\r') {
-				// create new LineElement if there were matches
-				if (lineFirstMatch != -1) {
-					int lineLength = pos - lineOffset;
-					int lineMatchesCount = nextMatch - lineFirstMatch;
-					Match[] lineMatches = new Match[lineMatchesCount];
-					System.arraycopy(matches, lineFirstMatch, lineMatches, 0, lineMatchesCount);
-					String lineContent = new String(buffer, lineOffset, lineLength);
-					result.add(new LineSearchElement(fileLocation, lineMatches, lineNumber, lineContent,
-							lineOffset));
-					lineFirstMatch = -1;
-					if (nextMatch >= matches.length)
-						break;
-					if (matches[nextMatch].getOffset() < pos)
-						lineFirstMatch = nextMatch;
-				}
-				lineNumber++;
-				lineOffset = pos + 1;
-				if (c == '\r')
-					skipLF = true;
-				continue;
-			}
-			// compare offset of next match with current position
-			if (nextMatchOffset > pos)
-				continue;
-			// next match was reached
-			// check if this match is the first for current line
-			if (lineFirstMatch == -1)
-				lineFirstMatch = nextMatch;
-			// goto to next match
-			nextMatch++;
-			if (nextMatch < matches.length) {
-				// update offset of next match
-				nextMatchOffset = matches[nextMatch].getOffset();
-			} else {
-				// no more matches
-				nextMatchOffset = buffer.length;
-			}
-		}
-		// check if there were matches on the last line
-		if (lineFirstMatch != -1) {
-			int lineLength = buffer.length - lineOffset;
-			int lineMatchesCount = nextMatch - lineFirstMatch;
-			Match[] lineMatches = new Match[lineMatchesCount];
-			System.arraycopy(matches, lineFirstMatch, lineMatches, 0, lineMatchesCount);
-			String lineContent = new String(buffer, lineOffset, lineLength);
-			result.add(new LineSearchElement(fileLocation, lineMatches, lineNumber, lineContent, lineOffset));
-		}
-		return result.toArray(new LineSearchElement[result.size()]);
-	}
-}
+/*******************************************************************************
+ * Copyright (c) 2009 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Andrey Eremchenko, kamre@ngs.ru - 222495 C/C++ search should show line matches and line numbers	
+ * 
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.search;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
+
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.IDocument;
+
+import org.eclipse.cdt.core.index.IIndexFileLocation;
+import org.eclipse.cdt.core.parser.CodeReader;
+import org.eclipse.cdt.ui.CUIPlugin;
+
+/**
+ * Element representing a line with one ore more matches.
+ * 
+ */
+public class LineSearchElement extends PDOMSearchElement {
+	public static final class Match {
+		private final int fOffset;
+		private final int fLength;
+		private final boolean fIsPolymorphicCall;
+
+		public Match(int offset, int length, boolean isPolymorphicCall) {
+			fOffset = offset;
+			fLength = length;
+			fIsPolymorphicCall = isPolymorphicCall;
+		}
+
+		public int getOffset() {
+			return fOffset;
+		}
+
+		public int getLength() {
+			return fLength;
+		}
+
+		public boolean isPolymorphicCall() {
+			return fIsPolymorphicCall;
+		}
+		
+		@Override
+		public boolean equals(Object obj) {
+			if (!(obj instanceof Match))
+				return false;
+			Match m = (Match) obj;
+			return (fOffset == m.fOffset) && (fLength == m.fLength);
+		}
+
+		@Override
+		public int hashCode() {
+			return 31 * fOffset + fLength;
+		}
+	}
+
+	private static final class MatchesComparator implements Comparator<Match> {
+		public int compare(Match m1, Match m2) {
+			return m1.getOffset() - m2.getOffset();
+		}
+	}
+
+	private final int fOffset;
+	private final int fNumber;
+	private final String fContent;
+	private final Match[] fMatches;
+	private final static MatchesComparator MATCHES_COMPARATOR = new MatchesComparator();
+
+	private LineSearchElement(IIndexFileLocation file, Match[] matches, int number, String content, int offset) {
+		super(file);
+		fMatches = matches;
+		fNumber = number;
+		// skip whitespace at the beginning
+		int index = 0;
+		int length = content.length();
+		int firstMatchOffset = matches[0].getOffset();
+		while (offset < firstMatchOffset && length > 0) {
+			if (content.charAt(index) != ' ')
+				break;
+			index++;
+			offset++;
+			length--;
+		}
+		fOffset = offset;
+		fContent = content.substring(index);
+	}
+
+	public int getOffset() {
+		return fOffset;
+	}
+
+	public int getLineNumber() {
+		return fNumber;
+	}
+
+	public String getContent() {
+		return fContent;
+	}
+
+	public Match[] getMatches() {
+		return fMatches;
+	}
+
+	@Override
+	public String toString() {
+		return fNumber + ": " + fContent; //$NON-NLS-1$
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		if (!(obj instanceof LineSearchElement))
+			return false;
+		LineSearchElement other = (LineSearchElement) obj;
+		return (fOffset == other.fOffset) && (super.equals(obj)) && (fMatches.equals(other.fMatches));
+	}
+
+	@Override
+	public int hashCode() {
+		return fOffset + 31 * (super.hashCode() + 31 * fMatches.hashCode());
+	}
+
+	public static LineSearchElement[] createElements(IIndexFileLocation fileLocation, Match[] matches) {
+		// sort matches according to their offsets
+		Arrays.sort(matches, MATCHES_COMPARATOR);
+		LineSearchElement[] result = {};
+		try {
+			String path = fileLocation.getURI().getPath();
+			// read the content of file
+			CodeReader reader = new CodeReader(path);
+			result = collectLineElements(reader.buffer, matches, fileLocation);
+		} catch (IOException e) {
+			CUIPlugin.log(e);
+		}
+		return result;
+	}
+
+	public static LineSearchElement[] createElements(IIndexFileLocation fileLocation, Match[] matches,
+			IDocument document) {
+		// sort matches according to their offsets
+		Arrays.sort(matches, MATCHES_COMPARATOR);
+		// group all matches by lines and create LineSearchElements
+		List<LineSearchElement> result = new ArrayList<LineSearchElement>();
+		int firstMatch = 0;
+		while (firstMatch < matches.length) {
+			try {
+				int lineNumber = document.getLineOfOffset(matches[firstMatch].getOffset());
+				int lineOffset = document.getLineOffset(lineNumber);
+				int lineLength = document.getLineLength(lineNumber);
+				int nextlineOffset = lineOffset + lineLength;
+				int nextMatch = firstMatch;
+				int nextMatchOffset = matches[nextMatch].getOffset();
+				while (nextMatch < matches.length && nextMatchOffset < nextlineOffset) {
+					nextMatch++;
+					if (nextMatch < matches.length)
+						nextMatchOffset = matches[nextMatch].getOffset();
+				}
+				int lineMatchesCount = nextMatch - firstMatch;
+				Match[] lineMatches = new Match[lineMatchesCount];
+				System.arraycopy(matches, firstMatch, lineMatches, 0, lineMatchesCount);
+				String content = document.get(lineOffset, lineLength);
+				result.add(new LineSearchElement(fileLocation, lineMatches, lineNumber + 1, content, lineOffset));
+				firstMatch = nextMatch;
+			} catch (BadLocationException e) {
+				CUIPlugin.log(e);
+			}
+		}
+		return result.toArray(new LineSearchElement[result.size()]);
+	}
+
+	private static LineSearchElement[] collectLineElements(char[] buffer, Match[] matches,
+			IIndexFileLocation fileLocation) {
+		List<LineSearchElement> result = new ArrayList<LineSearchElement>();
+		boolean skipLF = false;
+		int lineNumber = 1;
+		int lineOffset = 0;
+		int lineFirstMatch = -1; // not matched
+		int nextMatch = 0;
+		int nextMatchOffset = matches[nextMatch].getOffset();
+		for (int pos = 0; pos < buffer.length; pos++) {
+			char c = buffer[pos];
+			// consider '\n' and '\r'
+			if (skipLF) {
+				skipLF = false;
+				if (c == '\n') {
+					lineOffset = pos + 1;
+					continue;
+				}
+			}
+			if (c == '\n' || c == '\r') {
+				// create new LineElement if there were matches
+				if (lineFirstMatch != -1) {
+					int lineLength = pos - lineOffset;
+					int lineMatchesCount = nextMatch - lineFirstMatch;
+					Match[] lineMatches = new Match[lineMatchesCount];
+					System.arraycopy(matches, lineFirstMatch, lineMatches, 0, lineMatchesCount);
+					String lineContent = new String(buffer, lineOffset, lineLength);
+					result.add(new LineSearchElement(fileLocation, lineMatches, lineNumber, lineContent,
+							lineOffset));
+					lineFirstMatch = -1;
+					if (nextMatch >= matches.length)
+						break;
+					if (matches[nextMatch].getOffset() < pos)
+						lineFirstMatch = nextMatch;
+				}
+				lineNumber++;
+				lineOffset = pos + 1;
+				if (c == '\r')
+					skipLF = true;
+				continue;
+			}
+			// compare offset of next match with current position
+			if (nextMatchOffset > pos)
+				continue;
+			// next match was reached
+			// check if this match is the first for current line
+			if (lineFirstMatch == -1)
+				lineFirstMatch = nextMatch;
+			// goto to next match
+			nextMatch++;
+			if (nextMatch < matches.length) {
+				// update offset of next match
+				nextMatchOffset = matches[nextMatch].getOffset();
+			} else {
+				// no more matches
+				nextMatchOffset = buffer.length;
+			}
+		}
+		// check if there were matches on the last line
+		if (lineFirstMatch != -1) {
+			int lineLength = buffer.length - lineOffset;
+			int lineMatchesCount = nextMatch - lineFirstMatch;
+			Match[] lineMatches = new Match[lineMatchesCount];
+			System.arraycopy(matches, lineFirstMatch, lineMatches, 0, lineMatchesCount);
+			String lineContent = new String(buffer, lineOffset, lineLength);
+			result.add(new LineSearchElement(fileLocation, lineMatches, lineNumber, lineContent, lineOffset));
+		}
+		return result.toArray(new LineSearchElement[result.size()]);
+	}
+}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/PDOMSearchLabelProvider.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/PDOMSearchLabelProvider.java	Wed Aug 05 17:35:39 2009 -0500
@@ -109,7 +109,7 @@
 		if (element instanceof LineSearchElement) {
 			return element.toString();
 		}
-
+		
 		if (element instanceof TypeInfoSearchElement) {
 			return fTypeInfoLabelProvider.getText(((TypeInfoSearchElement)element).getTypeInfo());
 		}
@@ -167,4 +167,5 @@
 		}
 		return styled;
 	}
+	
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/PDOMSearchListLabelProvider.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/PDOMSearchListLabelProvider.java	Wed Aug 05 17:35:39 2009 -0500
@@ -55,7 +55,7 @@
 		
 		return text;
 	}
-
+	
 	@Override
 	public StyledString getStyledText(Object element) {
 		if (!(element instanceof LineSearchElement))
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/PDOMSearchPatternQuery.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/PDOMSearchPatternQuery.java	Wed Aug 05 17:35:39 2009 -0500
@@ -110,7 +110,8 @@
     		}
     	}
     	
-    	if (buff.length() > 0) {
+    	if (buff.length() > 0)
+    	{
 			if (isCaseSensitive)
 				patternList.add(Pattern.compile(buff.toString()));
 			else
@@ -137,7 +138,8 @@
 				boolean matches= false;
 				if ((flags & FIND_ALL_TYPES) == FIND_ALL_TYPES) {
 					matches= true;
-				} else if (pdomBinding instanceof ICompositeType) {
+				}
+				else if (pdomBinding instanceof ICompositeType) {
 					ICompositeType ct= (ICompositeType) pdomBinding;
 					switch (ct.getKey()) {
 					case ICompositeType.k_struct:
@@ -148,21 +150,29 @@
 						matches= (flags & FIND_UNION) != 0;
 						break;
 					}
-				} else if (pdomBinding instanceof IEnumeration) {
+				}
+				else if (pdomBinding instanceof IEnumeration) {
 					matches= (flags & FIND_ENUM) != 0;
-				} else if (pdomBinding instanceof IEnumerator) {
+				}
+				else if (pdomBinding instanceof IEnumerator) {
 					matches= (flags & FIND_ENUMERATOR) != 0;
-				} else if (pdomBinding instanceof IField) {
+				}
+				else if (pdomBinding instanceof IField) {
 					matches= (flags & FIND_FIELD) != 0;
-				} else if (pdomBinding instanceof ICPPMethod) {
+				}
+				else if (pdomBinding instanceof ICPPMethod) {
 					matches= (flags & FIND_METHOD) != 0;
-				} else if (pdomBinding instanceof IVariable) {
+				}
+				else if (pdomBinding instanceof IVariable) {
 					matches= (flags & FIND_VARIABLE) != 0;
-				} else if (pdomBinding instanceof IFunction) {
+				}
+				else if (pdomBinding instanceof IFunction) {
 					matches= (flags & FIND_FUNCTION) != 0;
-				} else if (pdomBinding instanceof ICPPNamespace || pdomBinding instanceof ICPPNamespaceAlias) {
+				}
+				else if (pdomBinding instanceof ICPPNamespace || pdomBinding instanceof ICPPNamespaceAlias) {
 					matches= (flags & FIND_NAMESPACE) != 0;
-				} else if (pdomBinding instanceof ITypedef) {
+				}
+				else if (pdomBinding instanceof ITypedef) {
 					matches= (flags & FIND_TYPEDEF) != 0;
 				}
 				if (matches) {
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/PDOMSearchQuery.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/PDOMSearchQuery.java	Wed Aug 05 17:35:39 2009 -0500
@@ -304,14 +304,14 @@
 			if (localMatches.isEmpty())
 				return;
 			// Search for dirty editor
-			ITextEditor dirtyTextEditor = null;
+			ITextEditor dirtyTextEditor = null; 
 			String fullPath = ast.getFilePath();
 			for (IEditorPart editorPart : CUIPlugin.getDirtyEditors()) {
 				if (editorPart instanceof ITextEditor) {
-					ITextEditor textEditor = (ITextEditor) editorPart;
+					ITextEditor textEditor = (ITextEditor)editorPart;
 					IEditorInput editorInput = editorPart.getEditorInput();
 					if (editorInput instanceof IPathEditorInput) {
-						IPathEditorInput pathEditorInput = (IPathEditorInput) editorInput;
+						IPathEditorInput pathEditorInput = (IPathEditorInput)editorInput;
 						IPath path = pathEditorInput.getPath();
 						if (fullPath.equals(path.toOSString())) {
 							dirtyTextEditor = textEditor;
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/PDOMSearchTreeLabelProvider.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/PDOMSearchTreeLabelProvider.java	Wed Aug 05 17:35:39 2009 -0500
@@ -39,7 +39,7 @@
 		return text + " " //$NON-NLS-1$
 				+ Messages.format(CSearchMessages.CSearchResultCollector_matches, new Integer(count)); 
 	}
-
+	
 	@Override
 	public StyledString getStyledText(Object element) {
 		if (element instanceof TranslationUnit) {
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CReconciler.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CReconciler.java	Wed Aug 05 17:35:39 2009 -0500
@@ -51,6 +51,8 @@
 import org.eclipse.cdt.ui.CUIPlugin;
 import org.eclipse.cdt.ui.IWorkingCopyManager;
 
+import org.eclipse.cdt.internal.core.index.IndexChangeEvent;
+
 /**
  * A single strategy C reconciler.
  * 
@@ -266,7 +268,8 @@
 		 */
 		public void indexChanged(IIndexChangeEvent event) {
 			if (!fIndexChanged && isRelevantProject(event.getAffectedProject())) {
-				if (!fIgnoreChanges || event.isCleared() || event.isReloaded() || event.hasNewFile()) {
+				if (!fIgnoreChanges || event.isCleared() || event.isReloaded() || 
+						((event instanceof IndexChangeEvent) && ((IndexChangeEvent)event).hasNewFile())) {
 					fIndexChanged= true;
 				}
 			}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/EditorUtility.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/EditorUtility.java	Wed Aug 05 17:35:39 2009 -0500
@@ -243,6 +243,7 @@
 		String desc= CUIPlugin.getResourceString("Editorutility.closedproject.description"); //$NON-NLS-1$
 		errorMsg.setMessage(MessageFormat.format(desc, new Object[]{project.getName()}));
 		errorMsg.open();
+
 	}
 
 	private static IEditorPart openInEditor(IEditorInput input, String editorID, boolean activate) throws PartInitException {
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementImageProvider.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementImageProvider.java	Wed Aug 05 17:35:39 2009 -0500
@@ -14,10 +14,8 @@
 package org.eclipse.cdt.internal.ui.viewsupport;
 
 import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IPath;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.graphics.Point;
@@ -25,14 +23,12 @@
 import org.eclipse.ui.ide.IDE;
 import org.eclipse.ui.model.IWorkbenchAdapter;
 
-import org.eclipse.cdt.core.CCorePlugin;
 import org.eclipse.cdt.core.model.CModelException;
 import org.eclipse.cdt.core.model.CoreModel;
 import org.eclipse.cdt.core.model.IArchiveContainer;
 import org.eclipse.cdt.core.model.IBinary;
 import org.eclipse.cdt.core.model.IBinaryContainer;
 import org.eclipse.cdt.core.model.IBinaryModule;
-import org.eclipse.cdt.core.model.ICContainer;
 import org.eclipse.cdt.core.model.ICElement;
 import org.eclipse.cdt.core.model.ICProject;
 import org.eclipse.cdt.core.model.IContributedCElement;
@@ -50,8 +46,6 @@
 import org.eclipse.cdt.ui.CElementImageDescriptor;
 import org.eclipse.cdt.ui.CUIPlugin;
 
-import org.eclipse.cdt.internal.core.model.CModelManager;
-
 import org.eclipse.cdt.internal.ui.CPluginImages;
 
 
@@ -126,11 +120,7 @@
 	public Image getImageLabel(Object element, int flags) {
 		ImageDescriptor descriptor= null;
 		if (element instanceof ICElement) {
-			if (!CCorePlugin.showSourceRootsAtTopOfProject() &&
-				element instanceof ICContainer && isParentOfSourceRoot(element))
-				descriptor = CPluginImages.DESC_OBJS_SOURCE2_ROOT;
-			else
-				descriptor= getCImageDescriptor((ICElement) element, flags);
+			descriptor= getCImageDescriptor((ICElement) element, flags);
 		} else if (element instanceof IFile) {
 			// Check for Non Translation Unit.
 			IFile file = (IFile)element;
@@ -148,9 +138,6 @@
 				Point size= useSmallSize(flags) ? SMALL_SIZE : BIG_SIZE;
 				descriptor = new CElementImageDescriptor(descriptor, 0, size);
 			}
-		} else if (!CCorePlugin.showSourceRootsAtTopOfProject() &&
-				element instanceof IFolder && isParentOfSourceRoot(element)) {
-			descriptor = CPluginImages.DESC_OBJS_SOURCE2_ROOT;
 		}
 		if (descriptor == null && element instanceof IAdaptable) {
 			descriptor= getWorkbenchImageDescriptor((IAdaptable) element, flags);
@@ -161,34 +148,6 @@
 		return null;
 	}
 
-	private boolean isParentOfSourceRoot(Object element) {
-		// we want to return true for parents of source roots which are not themselves source roots
-		// so we can distinguish the two and return the source root icon or the parent of source root icon
-		IFolder folder = null;
-		if (element instanceof ICContainer && !(element instanceof ISourceRoot))
-			folder = (IFolder) ((ICContainer) element).getResource();
-		else if (element instanceof IFolder)
-			folder = (IFolder) element;
-		if (folder == null)
-			return false;
-		
-		ICProject cproject = CModelManager.getDefault().getCModel().findCProject(folder.getProject());
-		if (cproject != null) {
-			try {
-				IPath folderPath = folder.getFullPath();
-				for (ICElement sourceRoot : cproject.getSourceRoots()) {
-					IPath sourceRootPath = sourceRoot.getPath();
-					if (folderPath.isPrefixOf(sourceRootPath)) {
-						return true;
-					}
-				}
-			} catch (CModelException e) {
-			}
-		}
-		
-		return false;
-	}
-
 	public static ImageDescriptor getImageDescriptor(int type) {
 		switch (type) {
 			case ICElement.C_VCONTAINER:
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/dialogfields/ListDialogField.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/dialogfields/ListDialogField.java	Wed Aug 05 17:35:39 2009 -0500
@@ -193,6 +193,7 @@
 	}
 	
 	
+	
 	// ------ adapter communication
 	
 	private void buttonPressed(int index) {
@@ -238,7 +239,7 @@
 		Control list= getListControl(parent);
 		gd= new GridData();
 		gd.horizontalAlignment= GridData.FILL;
-		gd.grabExcessHorizontalSpace= true;
+		gd.grabExcessHorizontalSpace= false;
 		gd.verticalAlignment= GridData.FILL;
 		gd.grabExcessVerticalSpace= true;
 		gd.horizontalSpan= nColumns - 2;
@@ -644,6 +645,7 @@
 		dialogFieldChanged();
 	}	
 
+
 	/**
 	 * Adds an element at a position.
 	 */	
@@ -690,6 +692,7 @@
 	public int getSize() {
 		return fElements.size();
 	}
+	
 
 	public void selectElements(ISelection selection) {
 		fSelectionWhenEnabled= selection;
@@ -715,6 +718,7 @@
 			selectElements(new StructuredSelection(element));
 		}
 	}
+	
 		
 	public void postSetSelection(final ISelection selection) {
 		if (isOkToUse(fTableControl)) {
@@ -783,6 +787,7 @@
 		return reverse;
 	}
 	
+	
 	private void remove() {
 		removeElements(getSelectedElements());
 	}
@@ -867,8 +872,10 @@
 		public void doubleClick(DoubleClickEvent event) {
 			doDoubleClick(event);
 		}
+
 	}
 	
+	
 	protected void doListSelected(SelectionChangedEvent event) {
 		updateButtonState();
 		if (fListAdapter != null) {
@@ -881,4 +888,7 @@
 			fListAdapter.doubleClicked(this);
 		}
 	}	
+
+
+
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractCPropertyTab.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractCPropertyTab.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 Intel Corporation and others.
+ * Copyright (c) 2007, 2008 Intel Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -700,14 +700,4 @@
 	public void setHelpContextId(String id) {
 		helpId = PREFIX + id;
 	}
-
-	/** 
-	 * Allows subclasses to inform the container about changes relevant to the indexer.
-	 * The tab will be asked before the apply is performed. As a consequence of returning
-	 * <code>true</code> the user will be asked whether she wants to rebuild the index.
-	 * @since 5.2
-	 */
-	protected boolean isIndexerAffected() {
-		return false;
-	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractLangsListTab.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractLangsListTab.java	Wed Aug 05 17:35:39 2009 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 Intel Corporation and others.
+ * Copyright (c) 2007, 2008 Intel Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -90,17 +90,9 @@
 	protected ICLanguageSetting [] ls; // all languages known
 	private boolean fHadSomeModification;
 	
-	private static final int BUTTON_INDEX_ADD = 0;
-	private static final int BUTTON_INDEX_EDIT = 1;
-	private static final int BUTTON_INDEX_DELETE = 2;
-	private static final int BUTTON_INDEX_EXPORT = 3;
-	// there is a separator instead of button #4
-	private static final int BUTTON_INDEX_MOVEUP = 5;
-	private static final int BUTTON_INDEX_MOVEDOWN = 6;
-
 	protected final static String[] BUTTONS = {ADD_STR, EDIT_STR, DEL_STR, 
 			UIMessages.getString("AbstractLangsListTab.2"), //$NON-NLS-1$
-			null, MOVEUP_STR, MOVEDOWN_STR };
+    		null, MOVEUP_STR, MOVEDOWN_STR };
 	protected final static String[] BUTTSYM = {ADD_STR, EDIT_STR, DEL_STR, 
 		UIMessages.getString("AbstractLangsListTab.2")}; //$NON-NLS-1$
 
@@ -129,14 +121,14 @@
 		sashForm.setLayout(layout);
 
 		addTree(sashForm).setLayoutData(new GridData(GridData.FILL_VERTICAL));
-		table = new Table(sashForm, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.FULL_SELECTION);
-		gd = new GridData(GridData.FILL_BOTH);
-		gd.widthHint = 150;
-		table.setLayoutData(gd);
-		table.setHeaderVisible(isHeaderVisible());
-		table.setLinesVisible(true);
+	    table = new Table(sashForm, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.FULL_SELECTION);
+	    gd = new GridData(GridData.FILL_BOTH);
+	    gd.widthHint = 150;
+	    table.setLayoutData(gd);
+  	    table.setHeaderVisible(isHeaderVisible());
+  	    table.setLinesVisible(true);
 
-		sashForm.setWeights(DEFAULT_SASH_WEIGHTS);
+  	    sashForm.setWeights(DEFAULT_SASH_WEIGHTS);
 		
 		sashForm.addListener(SWT.Selection, new Listener() {
 			public void handleEvent(Event event) {
@@ -159,7 +151,7 @@
 			}
 		});
 
-		tv = new TableViewer(table);
+  	    tv = new TableViewer(table);
 
 		tv.setContentProvider(new IStructuredContentProvider() {
 			public Object[] getElements(Object inputElement) {
@@ -168,77 +160,73 @@
 			public void dispose() {}
 			public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}
 		});
-
-		tv.setLabelProvider(new RichLabelProvider());
-
-		table.addSelectionListener(new SelectionAdapter() {
-			@Override
+  	    
+  	    tv.setLabelProvider(new RichLabelProvider());
+  	    
+	    table.addSelectionListener(new SelectionAdapter() {
+	    	@Override
 			public void widgetSelected(SelectionEvent e) {
-				updateButtons();
-			}
-
-			@Override
+	    		updateButtons();
+	    	}
+	    	@Override
 			public void widgetDefaultSelected(SelectionEvent e) {
-				if (buttonIsEnabled(1) && table.getSelectionIndex() != -1)
-					buttonPressed(1);
-			}
-		});
-
-		table.addControlListener(new ControlListener() {
+	    		if (buttonIsEnabled(1) && table.getSelectionIndex() != -1)
+    				buttonPressed(1);
+	    	}
+	    });
+	    
+	    table.addControlListener(new ControlListener() {
 			public void controlMoved(ControlEvent e) {
 				setColumnToFit();
 			}
 			public void controlResized(ControlEvent e) {
 				setColumnToFit();
 			}});
-
-		setupLabel(usercomp, EMPTY_STR, 1, 0);
-
-		lb1 = new Label(usercomp, SWT.BORDER | SWT.CENTER);
-		lb1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		lb1.setToolTipText(UIMessages.getString("EnvironmentTab.15")); //$NON-NLS-1$
-		lb1.addMouseListener(new MouseAdapter() {
+	    
+	    setupLabel(usercomp, EMPTY_STR, 1, 0);
+	    
+	    lb1 = new Label(usercomp, SWT.BORDER | SWT.CENTER);
+	    lb1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+	    lb1.setToolTipText(UIMessages.getString("EnvironmentTab.15")); //$NON-NLS-1$
+	    lb1.addMouseListener(new MouseAdapter() {
 			@Override
 			public void mouseDoubleClick(MouseEvent e) {
 				CDTPrefUtil.spinDMode();
 				update();
-			}
-		});
+			}});
 
-		showBIButton = setupCheck(usercomp,
-				UIMessages.getString("AbstractLangsListTab.0"), 1, GridData.FILL_HORIZONTAL); //$NON-NLS-1$
-		showBIButton.addSelectionListener(new SelectionAdapter() {
-			@Override
+	    showBIButton = setupCheck(usercomp, UIMessages.getString("AbstractLangsListTab.0"), 1, GridData.FILL_HORIZONTAL); //$NON-NLS-1$
+	    showBIButton.addSelectionListener(new SelectionAdapter() {
+	    	@Override
 			public void widgetSelected(SelectionEvent e) {
-				update();
-			}
-		});
-
-		lb2 = new Label(usercomp, SWT.BORDER | SWT.CENTER);
-		lb2.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		lb2.setToolTipText(UIMessages.getString("EnvironmentTab.23")); //$NON-NLS-1$
-		lb2.addMouseListener(new MouseAdapter() {
+	    		update(); 
+	    	}
+	    });
+	    
+	    lb2 = new Label(usercomp, SWT.BORDER | SWT.CENTER);
+	    lb2.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+	    lb2.setToolTipText(UIMessages.getString("EnvironmentTab.23")); //$NON-NLS-1$
+	    lb2.addMouseListener(new MouseAdapter() {
 			@Override
 			public void mouseDoubleClick(MouseEvent e) {
 				CDTPrefUtil.spinWMode();
 				updateLbs(null, lb2);
-			}
-		});
+			}});
 
-		additionalTableSet();
-		initButtons((getKind() == ICSettingEntry.MACRO) ? BUTTSYM : BUTTONS);
-		updateData(getResDesc());
+	    additionalTableSet();
+	    initButtons((getKind() == ICSettingEntry.MACRO) ? BUTTSYM : BUTTONS); 
+	    updateData(getResDesc());
 	}
 	
-	/**
-	 * Updates state for all buttons
-	 * Called when table selection changes.
-	 */
-	@Override
+    /**
+     * Updates state for all buttons
+     * Called when table selection changes.
+     */
+    @Override
 	protected void updateButtons() {
-		int index = table.getSelectionIndex();
-		int[] ids = table.getSelectionIndices();
-		boolean canAdd = langTree.getItemCount() > 0;
+    	int index = table.getSelectionIndex();
+    	int[] ids = table.getSelectionIndices(); 
+    	boolean canAdd = langTree.getItemCount() > 0;
 		boolean canExport = index != -1;
 		boolean canEdit = canExport && ids.length == 1;
 		boolean canDelete = canExport;
@@ -248,11 +236,11 @@
 			if (ent.isReadOnly()) canEdit = false;
 			if (ent.isReadOnly()) canDelete = false;
 			if (exported.contains(ent))
-				buttonSetText(BUTTON_INDEX_EXPORT, UIMessages.getString("AbstractLangsListTab.4")); //$NON-NLS-1$
+				buttonSetText(3, UIMessages.getString("AbstractLangsListTab.4")); //$NON-NLS-1$
 			else
-				buttonSetText(BUTTON_INDEX_EXPORT, UIMessages.getString("AbstractLangsListTab.2")); //$NON-NLS-1$
+				buttonSetText(3, UIMessages.getString("AbstractLangsListTab.2")); //$NON-NLS-1$
 		} else {
-			buttonSetText(BUTTON_INDEX_EXPORT, UIMessages.getString("AbstractLangsListTab.2")); //$NON-NLS-1$
+			buttonSetText(3, UIMessages.getString("AbstractLangsListTab.2")); //$NON-NLS-1$
 		}
 		boolean canMoveUp = false;
 		boolean canMoveDown = false;
@@ -260,54 +248,55 @@
 			canMoveUp = canEdit && index > 0 && !ent.isBuiltIn();
 			canMoveDown = canEdit && (index < table.getItemCount() - 1) && !ent.isBuiltIn();
 		}
-		if (canMoveDown && showBIButton.getSelection()) {
-			ent = (ICLanguageSettingEntry)(table.getItem(index+1).getData());
-			if (ent.isBuiltIn()) canMoveDown = false; // cannot exchange with built in
-		}
-		buttonSetEnabled(BUTTON_INDEX_ADD, canAdd);
-		buttonSetEnabled(BUTTON_INDEX_EDIT, canEdit);
-		buttonSetEnabled(BUTTON_INDEX_DELETE, canDelete);
-		buttonSetEnabled(BUTTON_INDEX_EXPORT, canExport && !page.isMultiCfg());
-		buttonSetEnabled(BUTTON_INDEX_MOVEUP, canMoveUp && !page.isMultiCfg());
-		buttonSetEnabled(BUTTON_INDEX_MOVEDOWN, canMoveDown && !page.isMultiCfg());
-	}
+    	if (canMoveDown && showBIButton.getSelection()) {
+    		ent = (ICLanguageSettingEntry)(table.getItem(index+1).getData());
+    		if (ent.isBuiltIn()) canMoveDown = false; // cannot exchange with built in
+    	}
+    	buttonSetEnabled(0, canAdd); // add
+    	buttonSetEnabled(1, canEdit); // edit
+    	buttonSetEnabled(2, canDelete); // delete
+    	buttonSetEnabled(3, canExport && !page.isMultiCfg()); // export
+    	// there is a separator instead of button #4
+    	buttonSetEnabled(5, canMoveUp && !page.isMultiCfg()); // up
+    	buttonSetEnabled(6, canMoveDown && !page.isMultiCfg()); // down
+    }
 	
 	private Tree addTree(Composite comp) {
 		langTree = new Tree(comp, SWT.BORDER | SWT.SINGLE | SWT.H_SCROLL);
 		langTree.setLayoutData(new GridData(GridData.FILL_VERTICAL));
 		langTree.setHeaderVisible(true);
-
+		
 		langTree.addSelectionListener(new SelectionAdapter() {
 			@Override
 			public void widgetSelected(SelectionEvent e) {
 				TreeItem[] items = langTree.getSelection();
 				if (items.length > 0) {
-					ICLanguageSetting ls = (ICLanguageSetting) items[0].getData();
+					ICLanguageSetting ls = (ICLanguageSetting)items[0].getData(); 
 					if (ls != null) {
 						lang = ls;
 						update();
 					}
 				}
-			}
-		});
+			}});
 		langTree.addPaintListener(new PaintListener() {
 			public void paintControl(PaintEvent e) {
 				int x = langTree.getBounds().width - 5;
 				if (langCol.getWidth() != x)
 					langCol.setWidth(x);
-			}
-		});
-
+			}});
+		
 		langCol = new TreeColumn(langTree, SWT.NONE);
 		langCol.setText(UIMessages.getString("AbstractLangsListTab.1")); //$NON-NLS-1$
 		langCol.setWidth(200);
 		langCol.setResizable(false);
-		langTree.getAccessible().addAccessibleListener(new AccessibleAdapter() {
-			@Override
-			public void getName(AccessibleEvent e) {
-				e.result = UIMessages.getString("AbstractLangsListTab.1"); //$NON-NLS-1$
-			}
-		});
+		langTree.getAccessible().addAccessibleListener(
+			   new AccessibleAdapter() {                       
+	               @Override
+				public void getName(AccessibleEvent e) {
+	                       e.result = UIMessages.getString("AbstractLangsListTab.1"); //$NON-NLS-1$
+	               }
+			   }
+		);
 		return langTree;
 	}
 
@@ -317,7 +306,7 @@
 	public abstract int getKind();
 	public abstract ICLanguageSettingEntry doAdd();
 	public abstract ICLanguageSettingEntry doEdit(ICLanguageSettingEntry ent);
-	public void additionalTableSet() {} // may be not overwritten
+    public void additionalTableSet() {} // may be not overwritten
 	
 	/**
 	 * Called when language changed or item added/edited/removed.
@@ -326,7 +315,7 @@
 	 * Note, this method is rewritten in Symbols tab.
 	 */
 	public void update() { update(0); } 
-
+   
 	public void update(int shift) {
 		if (lang != null) {
 			int x = table.getSelectionIndex();
@@ -374,10 +363,10 @@
 		ls = getLangSetting(cfg);
 		if (ls != null) {
 			Arrays.sort(ls, CDTListComparator.getInstance());
-			for (ICLanguageSetting element : ls) {
-				if ((element.getSupportedEntryKinds() & getKind()) != 0) {
+			for (int i=0; i<ls.length; i++) {
+				if ((ls[i].getSupportedEntryKinds() & getKind()) != 0) {
 					TreeItem t = new TreeItem(langTree, SWT.NONE);
-					String s = element.getLanguageId();
+					String s = ls[i].getLanguageId();
 					if (s != null && !s.equals(EMPTY_STR)) {
 						// Bug #178033: get language name via LangManager.
 						ILanguageDescriptor ld = LanguageManager.getInstance().getLanguageDescriptor(s);
@@ -387,12 +376,12 @@
 							s = ld.getName();
 					}
 					if (s == null || s.equals(EMPTY_STR))
-						s = element.getName();
+						s = ls[i].getName();
 					t.setText(0, s);
-					t.setData(element);
+					t.setData(ls[i]);
 					if (firstItem == null) { 
 						firstItem = t;
-						lang = element;
+						lang = ls[i];
 					}
 				}
 			}
@@ -483,9 +472,8 @@
 				performMulti(ent, old);
 			} else {
 				ICLanguageSettingEntry[] del = null;  
-				if (!ent.getName().equals(old.getName()) || ent.getFlags() != old.getFlags()) {
-					del = new ICLanguageSettingEntry[] { old };
-				}
+				if (! ent.getName().equals(old.getName()))
+					del = new ICLanguageSettingEntry[] {old};
 				changeIt(ent, del);
 			}
 			update();
@@ -523,18 +511,18 @@
 		int ids[] = table.getSelectionIndices();
 		
 		switch (i) {
-		case BUTTON_INDEX_ADD:
+		case 0: // add
 			toAllCfgs = false;
 			toAllLang = false;
 			performAdd(doAdd());
 			break;
-		case BUTTON_INDEX_EDIT:
+		case 1: // edit
 			performEdit(n);
 			break;
-		case BUTTON_INDEX_DELETE:
+		case 2: // delete
 			performDelete(n);
 			break;
-		case BUTTON_INDEX_EXPORT:
+		case 3: // toggle export	
 			if (n == -1) return;
 			for (int x=ids.length-1; x>=0; x--) {
 				old = (ICLanguageSettingEntry)(table.getItem(ids[x]).getData());
@@ -547,12 +535,13 @@
 			updateExport();
 			update();
 			break;
-		case BUTTON_INDEX_MOVEUP:
-		case BUTTON_INDEX_MOVEDOWN:
+		// there is a separator instead of button #4
+		case 5: // move up	
+		case 6: // move down
 			old = (ICLanguageSettingEntry)(table.getItem(n).getData());
 			int x = shownEntries.indexOf(old);
 			if (x < 0) break;
-			if (i == BUTTON_INDEX_MOVEDOWN) x++; // "down" simply means "up underlying item"
+			if (i == 6) x++; // "down" simply means "up underlying item"
 			old = shownEntries.get(x);
 			ICLanguageSettingEntry old2 = shownEntries.get(x - 1);
 			shownEntries.remove(x);
@@ -561,7 +550,7 @@
 			shownEntries.add(x, old2);
 			
 			setSettingEntries(getKind(), shownEntries, false);
-			update(i == BUTTON_INDEX_MOVEUP ? -1 : 1);			
+			update(i == 5 ? -1 : 1);			
 			break;			
 		default:
 			break;
@@ -574,8 +563,8 @@
 		ICConfigurationDescription cfg = getResDesc().getConfiguration();
 		ICExternalSetting[] vals = cfg.getExternalSettings();
 		if (!(vals == null || vals.length == 0)) {
-			for (ICExternalSetting val : vals) {
-				ICSettingEntry[] ents = val.getEntries(getKind());
+			for (int i=0; i<vals.length; i++) {
+				ICSettingEntry[] ents = vals[i].getEntries(getKind());
 				if (ents == null || ents.length == 0) continue;
 				for (int j=0; j<ents.length; j++) {
 					if (ents[j].equalsByName(ent)) {
@@ -583,10 +572,10 @@
 						int index = 0;
 						for (int k=0; k<ents.length; k++) 
 							if (k != j) arr[index++] = ents[k];
-						cfg.removeExternalSetting(val);
-						cfg.createExternalSetting(val.getCompatibleLanguageIds(), 
-								val.getCompatibleContentTypeIds(),
-								val.getCompatibleExtensions(),
+						cfg.removeExternalSetting(vals[i]);
+						cfg.createExternalSetting(vals[i].getCompatibleLanguageIds(), 
+								vals[i].getCompatibleContentTypeIds(),
+								vals[i].getCompatibleExtensions(),
 								arr);
 						return;
 					}
@@ -604,8 +593,8 @@
 		ICConfigurationDescription[] cfgs = page.getCfgsEditable();
 		ICResourceDescription cur_cfg = page.getResDesc();
 		String id = lang.getName(); // getLanguageId() sometimes returns null.
-		for (ICConfigurationDescription cfg : cfgs) {
-			ICResourceDescription rcfg = page.getResDesc(cfg); 
+		for (int i = 0; i < cfgs.length; i++) {
+			ICResourceDescription rcfg = page.getResDesc(cfgs[i]); 
 			if (rcfg == null) 
 				continue;
 			if (!toAllCfgs && !(cur_cfg.equals(rcfg)))
@@ -654,8 +643,8 @@
 	protected void performDefaults() {
 		fHadSomeModification= true;
 		TreeItem[] tis = langTree.getItems();
-		for (TreeItem ti : tis) {
-			Object ob = ti.getData();
+		for (int i=0; i<tis.length; i++) {
+			Object ob = tis[i].getData();
 			if (ob != null && ob instanceof ICLanguageSetting) {
 				((ICLanguageSetting)ob).setSettingEntries(getKind(), (List<ICLanguageSettingEntry>)null);
 			}
@@ -740,10 +729,10 @@
 		lsets = new ICLanguageSetting[fs.length];
 		for (int i=0; i<fs.length; i++) {
 			ArrayList<ICLanguageSetting> list = new ArrayList<ICLanguageSetting>(ls.length);
-			for (ICLanguageSetting[] element : ls) {
-				int x = Arrays.binarySearch(element, fs[i], comp);
+			for (int j=0; j<ls.length; j++) {
+				int x = Arrays.binarySearch(ls[j], fs[i], comp);
 				if (x >= 0)
-					list.add(element[x]);
+					list.add(ls[j][x]);
 			}
 			if (list.size() == 1)
 				lsets[i] = list.get(0);
@@ -759,8 +748,8 @@
 		if (getResDesc() == null) return true;
 		ICLanguageSetting [] ls = getLangSetting(getResDesc());
 		if (ls == null) return false;
-		for (ICLanguageSetting element : ls) {
-			if ((element.getSupportedEntryKinds() & getKind()) != 0)
+		for (int i=0; i<ls.length; i++) {
+			if ((ls[i].getSupportedEntryKinds() & getKind()) != 0)
 				return true;
 		}
 		return false;
@@ -806,19 +795,4 @@
 	protected final boolean hadSomeModification() {
 		return fHadSomeModification;
 	}
-	
-	@Override
-	protected final boolean isIndexerAffected() {
-		switch(getKind()) {
-		case ICSettingEntry.INCLUDE_PATH:
-		case ICSettingEntry.MACRO:
-		case ICSettingEntry.INCLUDE_FILE:
-		case ICSettingEntry.MACRO_FILE:
-			if (hadSomeModification()) {
-				return true;
-			}
-			break;
-		}
-		return false;
-	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractPage.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractPage.java	Wed Aug 05 17:35:39 2009 -0500
@@ -15,6 +15,7 @@
 
 import java.io.File;
 import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
@@ -86,6 +87,7 @@
 import org.eclipse.cdt.core.settings.model.ICMultiItemsHolder;
 import org.eclipse.cdt.core.settings.model.ICProjectDescription;
 import org.eclipse.cdt.core.settings.model.ICResourceDescription;
+import org.eclipse.cdt.core.settings.model.ICSettingEntry;
 import org.eclipse.cdt.core.settings.model.MultiItemsHolder;
 import org.eclipse.cdt.ui.CUIPlugin;
 import org.eclipse.cdt.ui.PreferenceConstants;
@@ -406,7 +408,7 @@
 				boolean enterMultiCfgsDialog = (multiCfgs == null)
 						|| (multiCfgs == cfgDescs) || !areCfgsStillThere(multiCfgs);
 				if (enterMultiCfgsDialog) {
-					ICConfigurationDescription[] mcfgs = ConfigMultiSelectionDialog.select(cfgDescs, parentComposite.getShell());
+					ICConfigurationDescription[] mcfgs = ConfigMultiSelectionDialog.select(cfgDescs);
 					if (mcfgs == null || mcfgs.length == 0) {
 						// return back to previous selection
 						int cfgIndex = -1;
@@ -676,8 +678,36 @@
 			InternalTab tab = it.next();
 			if (tab != null) {
 				ICPropertyTab tabtab = tab.tab;
-				if (tabtab instanceof AbstractCPropertyTab && ((AbstractCPropertyTab)tabtab).isIndexerAffected()) {
-					return true;
+				if (tabtab instanceof AbstractLangsListTab) {
+					final AbstractLangsListTab langListTab = (AbstractLangsListTab) tabtab;
+					switch(langListTab.getKind()) {
+					case ICSettingEntry.INCLUDE_PATH:
+					case ICSettingEntry.MACRO:
+					case ICSettingEntry.INCLUDE_FILE:
+					case ICSettingEntry.MACRO_FILE:
+						if (langListTab.hadSomeModification()) {
+							return true;
+						}
+						break;
+					}
+				} else if (tabtab instanceof AbstractCPropertyTab){
+					// attempt to access API that will be introduced in CDT 6.1 (bug 144085)
+					try {
+						Class<?> clazz= tabtab.getClass();
+						Method meth = clazz.getDeclaredMethod("isIndexerAffected"); //$NON-NLS-1$
+						if (meth != null) {
+							Object result = meth.invoke(tabtab);
+							if (result instanceof Boolean && ((Boolean) result).booleanValue())
+								return true;
+						}
+					} catch (SecurityException e) {
+					} catch (NoSuchMethodException e) {
+					} catch (IllegalArgumentException e) {
+					} catch (IllegalAccessException e) {
+					} catch (InvocationTargetException e) {
+						// the method was called and has thrown an exception.
+						CUIPlugin.log(e);
+					}
 				}
 			}
 		}
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ConfigMultiSelectionDialog.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ConfigMultiSelectionDialog.java	Wed Aug 05 17:35:39 2009 -0500
@@ -45,12 +45,9 @@
 	private Label message;
 	private static ICConfigurationDescription[] result = null;
 	
-	/**
-	 * @since 5.2
-	 */
-	public static ICConfigurationDescription[] select(ICConfigurationDescription[] _cfgds, Shell parentShell) {
+	public static ICConfigurationDescription[] select(ICConfigurationDescription[] _cfgds) {
 		cfgds = _cfgds;
-		ConfigMultiSelectionDialog d = new ConfigMultiSelectionDialog(parentShell);
+		ConfigMultiSelectionDialog d = new ConfigMultiSelectionDialog(CUIPlugin.getActiveWorkbenchShell());
 		if (d.open() == OK)	
 			return result;
 		return null;
@@ -136,22 +133,7 @@
 			}});
 		tv.setInput(cfgds);
 		table.setFocus();
-		return composite;
+    	return composite;
 	}
-
-	/**
-	 * @deprecated (in org.eclipse.cdt.ui 5.2.0)
-	 * 
-	 * This call is deprecated in plugin org.eclipse.cdt.ui 5.2.0 and intended to be removed
-	 * on occasion when the plugin increases major version (Bug 285033).
-	 * Use {@link #select(ICConfigurationDescription[], Shell)} to properly set focus.
-	 */
-	@Deprecated
-	public static ICConfigurationDescription[] select(ICConfigurationDescription[] _cfgds) {
-		cfgds = _cfgds;
-		ConfigMultiSelectionDialog d = new ConfigMultiSelectionDialog(CUIPlugin.getActiveWorkbenchShell());
-		if (d.open() == OK)	
-			return result;
-		return null;
-	}
+	
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ExPatternDialog.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ExPatternDialog.java	Wed Aug 05 17:35:39 2009 -0500
@@ -29,8 +29,6 @@
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
@@ -60,6 +58,21 @@
  */
 public class ExPatternDialog extends StatusDialog {
 	
+	private static class ExPatternLabelProvider extends LabelProvider {
+				
+		@Override
+		public Image getImage(Object element) {
+			ImageDescriptorRegistry registry= CUIPlugin.getImageDescriptorRegistry();
+			return registry.get(CPluginImages.DESC_OBJS_EXCLUSION_FILTER_ATTRIB);
+		}
+
+		@Override
+		public String getText(Object element) {
+			return (String) element;
+		}
+
+	}
+	
 	private ListDialogField<String> fExclusionPatternList;
 	private IProject fCurrProject;
 	private IPath[] pattern;
@@ -70,6 +83,7 @@
 	private static final int IDX_ADD_MULTIPLE= 1;
 	private static final int IDX_EDIT= 2;
 	private static final int IDX_REMOVE= 4;
+	
 		
 	public ExPatternDialog(Shell parent, IPath[] _data, IPath _path, IProject proj) {
 		super(parent);
@@ -78,8 +92,7 @@
 		path = _path;
 		setTitle(CPathEntryMessages.ExclusionPatternDialog_title); 
 
-		String label= NLS.bind(CPathEntryMessages.ExclusionPatternDialog_pattern_label,
-				path.makeRelative().toString()); 
+		String label= NLS.bind(CPathEntryMessages.ExclusionPatternDialog_pattern_label, path.makeRelative().toString()); 
 		
 		String[] buttonLabels= new String[] {
 			CPathEntryMessages.ExclusionPatternDialog_pattern_add, 
@@ -110,16 +123,17 @@
 		fExclusionPatternList.selectFirstElement();
 		fExclusionPatternList.enableButton(IDX_ADD_MULTIPLE, fCurrSourceFolder != null);
 	}
-
+	
+	
 	@Override
 	protected Control createDialogArea(Composite parent) {
-		Composite composite= (Composite) super.createDialogArea(parent);
+		Composite composite= (Composite)super.createDialogArea(parent);
 
 		Composite inner= new Composite(composite, SWT.NONE);
-		inner.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-		GridLayout layout= new GridLayout(2, false);
+		GridLayout layout= new GridLayout();
 		layout.marginHeight= 0;
 		layout.marginWidth= 0;
+		layout.numColumns= 2;
 		inner.setLayout(layout);
 		
 		fExclusionPatternList.doFillIntoGrid(inner, 3);
@@ -173,12 +187,35 @@
 			fExclusionPatternList.addElement(dialog.getExclusionPattern());
 		}
 	}	
+	
+	
 		
+	// -------- ExclusionPatternAdapter --------
+
+	private class ExclusionPatternAdapter implements IListAdapter<String>, IDialogFieldListener {
+		public void customButtonPressed(ListDialogField<String> field, int index) {
+			doCustomButtonPressed(field, index);
+		}
+
+		public void selectionChanged(ListDialogField<String> field) {
+			doSelectionChanged(field);
+		}
+
+		public void doubleClicked(ListDialogField<String> field) {
+			doDoubleClicked(field);
+		}
+
+		public void dialogFieldChanged(DialogField field) {
+		}
+		
+	}
+	
 	protected void doStatusLineUpdate() {
 	}		
 	
 	protected void checkIfPatternValid() {
 	}
+	
 		
 	public IPath[] getExclusionPattern() {
 		IPath[] res= new IPath[fExclusionPatternList.getSize()];
@@ -197,12 +234,7 @@
 		super.configureShell(newShell);
 //		WorkbenchHelp.setHelp(newShell, ICHelpContextIds.EXCLUSION_PATTERN_DIALOG);
 	}
-
-    @Override
-	protected boolean isResizable() {
-    	return true;
-    }
-
+	
 	private void addMultipleEntries() {
 		Class<?>[] acceptedClasses= new Class<?>[] { IFolder.class, IFile.class };
 		ISelectionStatusValidator validator= new TypedElementSelectionValidator(acceptedClasses, true);
@@ -240,34 +272,4 @@
 		}
 	}	
 	
-	private static class ExPatternLabelProvider extends LabelProvider {
-		
-		@Override
-		public Image getImage(Object element) {
-			ImageDescriptorRegistry registry= CUIPlugin.getImageDescriptorRegistry();
-			return registry.get(CPluginImages.DESC_OBJS_EXCLUSION_FILTER_ATTRIB);
-		}
-
-		@Override
-		public String getText(Object element) {
-			return (String) element;
-		}
-	}
-	
-	private class ExclusionPatternAdapter implements IListAdapter<String>, IDialogFieldListener {
-		public void customButtonPressed(ListDialogField<String> field, int index) {
-			doCustomButtonPressed(field, index);
-		}
-
-		public void selectionChanged(ListDialogField<String> field) {
-			doSelectionChanged(field);
-		}
-
-		public void doubleClicked(ListDialogField<String> field) {
-			doDoubleClicked(field);
-		}
-
-		public void dialogFieldChanged(DialogField field) {
-		}
-	}
 }
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/refactoring/actions/ExtractConstantAction.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/refactoring/actions/ExtractConstantAction.java	Wed Aug 05 17:35:39 2009 -0500
@@ -41,7 +41,7 @@
 	public void run(IShellProvider shellProvider, IWorkingCopy wc, ITextSelection selection) {
 		IResource res= wc.getResource();
 		if (res instanceof IFile) {
-			new ExtractConstantRefactoringRunner((IFile) res, selection, shellProvider, wc.getCProject()).run();
+			new ExtractConstantRefactoringRunner((IFile) res, selection, shellProvider).run();
 		}
 	}
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/refactoring/actions/ExtractLocalVariableAction.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/refactoring/actions/ExtractLocalVariableAction.java	Wed Aug 05 17:35:39 2009 -0500
@@ -40,7 +40,7 @@
 	public void run(IShellProvider shellProvider, IWorkingCopy wc, ITextSelection selection) {
 		IResource res= wc.getResource();
 		if (res instanceof IFile) {
-			new ExtractLocalVariableRefactoringRunner((IFile) res, selection, shellProvider, wc.getCProject()).run();
+			new ExtractLocalVariableRefactoringRunner((IFile) res, selection, shellProvider).run();
 		}
 	}
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/refactoring/actions/GettersAndSettersAction.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/refactoring/actions/GettersAndSettersAction.java	Wed Aug 05 17:35:39 2009 -0500
@@ -45,14 +45,14 @@
 
 	@Override
 	public void run(IShellProvider shellProvider, ICElement elem) {
-		new GenerateGettersAndSettersRefactoringRunner(null, null, elem, shellProvider, elem.getCProject()).run();
+		new GenerateGettersAndSettersRefactoringRunner(null, null, elem, shellProvider).run();
 	}
 
 	@Override
 	public void run(IShellProvider shellProvider, IWorkingCopy wc, ITextSelection s) {
 		IResource res= wc.getResource();
 		if (res instanceof IFile) {
-			new GenerateGettersAndSettersRefactoringRunner((IFile) res, s, null, shellProvider, wc.getCProject()).run();
+			new GenerateGettersAndSettersRefactoringRunner((IFile) res, s, null, shellProvider).run();
 		}
 	}
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/refactoring/actions/HideMethodAction.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/refactoring/actions/HideMethodAction.java	Wed Aug 05 17:35:39 2009 -0500
@@ -38,7 +38,7 @@
 	@Override
 	public void run(IShellProvider shellProvider, ICElement elem) {
 		if (elem instanceof ISourceReference) {
-			new HideMethodRefactoringRunner(null, null, elem, shellProvider, elem.getCProject()).run();
+			new HideMethodRefactoringRunner(null, null, elem, shellProvider).run();
 		}
 	}
 
@@ -48,7 +48,7 @@
 		if (res instanceof IFile) {
 			new HideMethodRefactoringRunner((IFile) res, 
 					fEditor.getSelectionProvider().getSelection(), null, 
-					fEditor.getSite().getWorkbenchWindow(), wc.getCProject()).run();
+					fEditor.getSite().getWorkbenchWindow()).run();
 		}
 	}
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/refactoring/actions/ImplementMethodAction.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/refactoring/actions/ImplementMethodAction.java	Wed Aug 05 17:35:39 2009 -0500
@@ -48,14 +48,14 @@
 
 	@Override
 	public void run(IShellProvider shellProvider, ICElement elem) {
-		new ImplementMethodRefactoringRunner(null, null, elem, shellProvider, elem.getCProject()).run();
+		new ImplementMethodRefactoringRunner(null, null, elem, shellProvider).run();
 	}
 
 	@Override
 	public void run(IShellProvider shellProvider, IWorkingCopy wc, ITextSelection selection) {
 		IResource res = wc.getResource();
 		if (res instanceof IFile) {
-			new ImplementMethodRefactoringRunner((IFile) res, selection, null, shellProvider, wc.getCProject()).run();
+			new ImplementMethodRefactoringRunner((IFile) res, selection, null, shellProvider).run();
 		}
 	}
 
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/uitree/uiwidgets/UISelectWidget.java	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/uitree/uiwidgets/UISelectWidget.java	Wed Aug 05 17:35:39 2009 -0500
@@ -142,8 +142,7 @@
 	@Override
 	public boolean isValid() {
 		boolean retVal = true;
-		if(Boolean.parseBoolean(uiAttributes.get(InputUIElement.MANDATORY))
-				&& ! InputUIElement.SELECTTYPE.equals(uiAttributes.get(InputUIElement.TYPE)) ) {
+		if(Boolean.parseBoolean(uiAttributes.get(InputUIElement.MANDATORY))) {
 			retVal= currentValue!= null && currentValue.trim().length()>0;
 		}
 		return retVal;
--- a/cdt/cdt_6_0_x/org.eclipse.cdt/META-INF/MANIFEST.MF	Tue Aug 04 14:00:13 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt/META-INF/MANIFEST.MF	Wed Aug 05 17:35:39 2009 -0500
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.cdt; singleton:=true
-Bundle-Version: 6.1.0.qualifier
+Bundle-Version: 5.1.0.qualifier
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.ui.intro;bundle-version="[3.2.0,4.0.0)",