[Pkg-mono-svn-commits] [mono-tools] 01/09: Imported Upstream version 2.11+git20131009.5b1ef35 (Closes: #577522, #713095)

Jo Shields directhex at alioth.debian.org
Thu Oct 10 09:11:42 UTC 2013


This is an automated email from the git hooks/post-receive script.

directhex pushed a commit to branch master
in repository mono-tools.

commit fa2192491c3e87db7d9739332b992d025916de38
Author: Jo Shields <directhex at apebox.org>
Date:   Thu Oct 10 01:03:13 2013 +0200

    Imported Upstream version 2.11+git20131009.5b1ef35 (Closes: #577522, #713095)
---
 INSTALL                                            |  207 +-
 Makefile.in                                        |  285 +-
 Mono.Profiler/Makefile.in                          |  184 +-
 Mono.Profiler/Mono.Profiler.Widgets/Makefile.am    |    3 +-
 Mono.Profiler/Mono.Profiler.Widgets/Makefile.in    |  158 +-
 Mono.Profiler/heap-snapshot-explorer/Makefile.am   |    3 +-
 Mono.Profiler/heap-snapshot-explorer/Makefile.in   |  158 +-
 Mono.Profiler/heap-snapshot-viewer/Makefile.am     |    3 +-
 Mono.Profiler/heap-snapshot-viewer/Makefile.in     |  313 +-
 Mono.Profiler/mprof-gui/Makefile.am                |    3 +-
 Mono.Profiler/mprof-gui/Makefile.in                |  213 +-
 Mono.Profiler/profiler-decoder-library/Makefile.am |    3 +-
 Mono.Profiler/profiler-decoder-library/Makefile.in |  158 +-
 Mono.Profiler/profiler-file-decoder/Makefile.am    |    3 +-
 Mono.Profiler/profiler-file-decoder/Makefile.in    |  313 +-
 README                                             |    9 +
 aclocal.m4                                         |  440 +-
 asn1view/Makefile.in                               |  184 +-
 asn1view/art/Makefile.in                           |   87 +-
 asn1view/common/Makefile.in                        |   87 +-
 asn1view/gtk/Makefile.in                           |  200 +-
 config.guess                                       |  526 +-
 config.sub                                         |  278 +-
 configure                                          | 5616 ++++++++------------
 configure.in                                       |    4 +-
 create-native-map/Makefile.in                      |  184 +-
 create-native-map/bin/Makefile.in                  |  157 +-
 create-native-map/lib/Makefile.in                  |  184 +-
 .../lib/create-native-map/Makefile.in              |   87 +-
 create-native-map/lib/pkgconfig/Makefile.in        |  135 +-
 create-native-map/man/Makefile.in                  |  207 +-
 create-native-map/src/Makefile.in                  |  135 +-
 docbrowser/Makefile.am                             |    3 +-
 docbrowser/Makefile.in                             |  338 +-
 docbrowser/browser.cs                              |   87 +-
 docbrowser/editing.cs                              |  519 ++
 docbrowser/monodoc.in                              |    2 +-
 docbrowser/theme-icons/Makefile.in                 |   88 +-
 gendarme/AssemblyInfo.cs                           |    2 +-
 gendarme/AssemblyStaticInfo.cs                     |    3 +-
 gendarme/MIT.X11                                   |    2 +-
 gendarme/Makefile.am                               |   16 +-
 gendarme/Makefile.in                               |  299 +-
 gendarme/console/ConsoleRunner.cs                  |  138 +-
 gendarme/console/Helpers.cs                        |    2 +-
 gendarme/console/IgnoreFileList.cs                 |   49 +-
 gendarme/console/Makefile.am                       |    2 +-
 gendarme/console/Makefile.in                       |  160 +-
 gendarme/console/Settings.cs                       |    9 +-
 gendarme/console/XmlResultWriter.cs                |    3 +-
 gendarme/console/gendarme.csproj                   |   56 +-
 .../SuppressMessageEngine.cs                       |   10 +-
 .../framework/Gendarme.Framework.Helpers/Log.cs    |   16 +-
 .../Gendarme.Framework.Helpers/MethodPrinter.cs    |   32 +-
 .../Gendarme.Framework.Helpers/MethodSignature.cs  |    7 +-
 .../Gendarme.Framework.Helpers/MethodSignatures.cs |   17 +-
 .../Gendarme.Framework.Helpers/OpCodeBitmask.cs    |   12 +-
 .../StackEntryAnalysis.cs                          |   40 +-
 .../StackEntryUsageResult.cs                       |    4 +-
 .../Gendarme.Framework.Helpers/StreamLineReader.cs |  122 +
 .../Gendarme.Framework.Rocks/CecilRocks.cs         |   26 +
 .../CustomAttributeRocks.cs                        |   65 +-
 .../Gendarme.Framework.Rocks/FieldRocks.cs         |    7 +-
 .../Gendarme.Framework.Rocks/InstructionRocks.cs   |   11 +-
 .../Gendarme.Framework.Rocks/MethodRocks.cs        |   43 +-
 .../Gendarme.Framework.Rocks/ModuleRocks.cs        |   55 +-
 .../Gendarme.Framework.Rocks/ParameterRocks.cs     |   17 +-
 .../Gendarme.Framework.Rocks/PropertyRocks.cs      |    7 +-
 .../Gendarme.Framework.Rocks/TypeRocks.cs          |  186 +-
 .../VariableDefinitionRocks.cs                     |    5 +-
 gendarme/framework/Gendarme.Framework.csproj       |   41 +-
 gendarme/framework/Gendarme.Framework/Symbols.cs   |   12 +-
 .../Gendarme.Framework/ThreadModelAttribute.cs     |    7 +-
 gendarme/framework/Makefile.am                     |    7 +-
 gendarme/framework/Makefile.in                     |  318 +-
 .../Gendarme.Framework.Rocks/AssemblyRocksTest.cs  |   15 +-
 .../CustomAttributeRocksTest.cs                    |   44 +-
 .../Gendarme.Framework.Rocks/FieldRocksTest.cs     |   15 +-
 .../Gendarme.Framework.Rocks/MethodRocksTest.cs    |   16 +-
 .../Test/Gendarme.Framework.Rocks/RocksTest.cs     |    3 +
 .../Test/Gendarme.Framework.Rocks/TypeRocksTest.cs |  113 +-
 gendarme/framework/Test/Makefile.in                |   87 +-
 gendarme/man/Makefile.in                           |  318 +-
 gendarme/man/gendarme.1.in                         |    8 +-
 gendarme/mono-options.ignore                       |   12 +
 .../AvoidAssemblyVersionMismatchRule.cs            |   30 +-
 .../AvoidCallingProblematicMethodsRule.cs          |   24 +-
 .../AvoidNullCheckWithAsOperatorRule.cs            |  141 +
 .../AvoidVisibleConstantFieldRule.cs               |    9 +-
 .../CheckNewExceptionWithoutThrowingRule.cs        |    2 +-
 .../CheckNewThreadWithoutStartRule.cs              |   12 +-
 .../CloneMethodShouldNotReturnNullRule.cs          |   10 +-
 .../ConstructorShouldNotCallVirtualMethodsRule.cs  |   11 +-
 .../DisableDebuggingCodeRule.cs                    |   17 +-
 .../DoNotDecreaseVisibilityRule.cs                 |  124 +
 .../DoNotForgetNotImplementedMethodsRule.cs        |    2 +-
 .../DoNotUseEnumIsAssignableFromRule.cs            |    7 +-
 ...DoNotUseGetInterfaceToCheckAssignabilityRule.cs |    2 +-
 .../Gendarme.Rules.BadPractice.csproj              |   43 +-
 .../GetEntryAssemblyMayReturnNullRule.cs           |   22 +-
 .../rules/Gendarme.Rules.BadPractice/Makefile.am   |    6 +-
 .../rules/Gendarme.Rules.BadPractice/Makefile.in   |  298 +-
 .../ObsoleteMessagesShouldNotBeEmptyRule.cs        |   10 +-
 .../OnlyUseDisposeForIDisposableTypesRule.cs       |    4 +-
 .../PreferEmptyInstanceOverNullRule.cs             |    9 +-
 .../PreferParamsArrayForVariableArgumentsRule.cs   |    4 +-
 .../PreferSafeHandleRule.cs                        |   13 +-
 .../PreferTryParseRule.cs                          |    4 +-
 .../Test/AvoidNullCheckWithAsOperatorTest.cs       |  142 +
 .../Test/DoNotDecreaseVisibilityTest.cs            |  210 +
 .../Gendarme.Rules.BadPractice/Test/Makefile.in    |   87 +-
 .../Test/Tests.Rules.BadPractice.csproj            |   43 +-
 .../UseFileOpenOnlyWithFileAccessRule.cs           |   30 +-
 .../DecorateThreadsRule.cs                         |   66 +-
 .../DoNotLockOnThisOrTypesRule.cs                  |   16 +-
 .../DoNotLockOnWeakIdentityObjectsRule.cs          |   65 +-
 .../DoNotUseThreadStaticWithInstanceFieldsRule.cs  |    4 +-
 .../DontUseLockedRegionOutsideMethodRule.cs        |   21 +-
 .../DoubleCheckLockingRule.cs                      |    6 +-
 .../Gendarme.Rules.Concurrency.csproj              |   30 +-
 .../Gendarme.Rules.Concurrency/LockAnalyzerRule.cs |   16 +-
 .../rules/Gendarme.Rules.Concurrency/Makefile.in   |  292 +-
 .../ProtectCallToEventDelegatesRule.cs             |    5 +-
 ...viewLockUsedOnlyForOperationsOnVariablesRule.cs |   10 +-
 .../Test/DoNotLockOnThisOrTypesTest.cs             |    9 +
 .../Gendarme.Rules.Concurrency/Test/Makefile.in    |   87 +-
 .../Test/Tests.Rules.Concurrency.csproj            |   30 +-
 .../Gendarme.Rules.Concurrency/ThreadRocks.cs      |    2 +-
 .../WriteStaticFieldFromInstanceMethodRule.cs      |    9 +-
 ...ributeStringLiteralsShouldParseCorrectlyRule.cs |   45 +-
 ...voidCodeWithSideEffectsInConditionalCodeRule.cs |    4 +-
 .../AvoidConstructorsInStaticTypesRule.cs          |    2 +-
 .../AvoidFloatingPointEqualityRule.cs              |    2 +-
 ...dMethodsWithSideEffectsInConditionalCodeRule.cs |   16 +-
 .../BadRecursiveInvocationRule.cs                  |    5 +-
 .../CheckParametersNullityInVisibleMethodsRule.cs  |   16 +-
 .../DeclareEventsExplicitlyRule.cs                 |   96 +
 .../DisposableFieldsShouldBeDisposedRule.cs        |   18 +-
 .../DoNotRoundIntegersRule.cs                      |   22 +-
 .../DontCompareWithNaNRule.cs                      |   17 +-
 .../EnsureLocalDisposalRule.cs                     |  200 +-
 .../FloatComparisonRule.cs                         |    6 +-
 .../Gendarme.Rules.Correctness.csproj              |   33 +-
 .../rules/Gendarme.Rules.Correctness/Makefile.am   |    7 +
 .../rules/Gendarme.Rules.Correctness/Makefile.in   |  299 +-
 .../MethodCanBeMadeStaticRule.cs                   |    4 +-
 ...ovideCorrectArgumentsToFormattingMethodsRule.cs |   28 +-
 .../ProvideCorrectRegexPatternRule.cs              |   36 +-
 .../ProvideValidXPathExpressionRule.cs             |   20 +-
 .../ProvideValidXmlStringRule.cs                   |   18 +-
 .../ReviewDoubleAssignmentRule.cs                  |    7 +-
 .../ReviewInconsistentIdentityRule.cs              |    4 +-
 .../ReviewSelfAssignmentRule.cs                    |   12 +-
 .../ReviewUseOfInt64BitsToDoubleRule.cs            |   23 +-
 .../Test/BadRecursiveInvocationTest.cs             |   19 +
 .../Test/DeclareEventsExplicitlyTest.cs}           |   64 +-
 .../Test/EnsureLocalDisposalTest.cs                |   87 +-
 .../Gendarme.Rules.Correctness/Test/Makefile.in    |   87 +-
 .../Test/Resource.Designer.cs                      |    6 +-
 .../Test/Tests.Rules.Correctness.csproj            |   32 +-
 ...esWithDisposableFieldsShouldBeDisposableTest.cs |  166 +-
 .../TypesWithNativeFieldsShouldBeDisposableTest.cs |  145 +-
 .../TypesShouldBeDisposableBaseRule.cs}            |  104 +-
 ...esWithDisposableFieldsShouldBeDisposableRule.cs |   96 +-
 .../TypesWithNativeFieldsShouldBeDisposableRule.cs |   85 +-
 .../UseNoInliningWithGetCallingAssemblyRule.cs     |   23 +-
 .../UseValueInPropertySetterRule.cs                |    2 +-
 .../AvoidDeclaringCustomDelegatesRule.cs           |   35 +-
 .../AvoidExcessiveParametersOnGenericTypesRule.cs  |   10 +-
 .../AvoidMethodWithUnusedGenericTypeRule.cs        |   46 +-
 .../DoNotDeclareStaticMembersOnGenericTypesRule.cs |   11 +-
 .../DoNotExposeGenericListsRule.cs                 |   14 +-
 .../DoNotExposeNestedGenericSignaturesRule.cs      |   20 +-
 .../Gendarme.Rules.Design.Generic.csproj           |   44 +-
 .../GenericsBaseRule.cs}                           |   33 +-
 .../ImplementGenericCollectionInterfacesRule.cs    |   28 +-
 .../Gendarme.Rules.Design.Generic/Makefile.am      |    1 +
 .../Gendarme.Rules.Design.Generic/Makefile.in      |  293 +-
 .../PreferGenericsOverRefObjectRule.cs             |   22 +-
 .../Gendarme.Rules.Design.Generic/Test/Makefile.in |   87 +-
 .../Test/Tests.Rules.Design.Generic.csproj         |   43 +-
 .../UseGenericEventHandlerRule.cs                  |   26 +-
 .../AvoidExtensionMethodOnSystemObjectRule.cs      |   11 +-
 .../Gendarme.Rules.Design.Linq.csproj              |   43 +-
 .../rules/Gendarme.Rules.Design.Linq/Makefile.in   |  292 +-
 .../Gendarme.Rules.Design.Linq/Test/Makefile.in    |   87 +-
 .../Test/Tests.Rules.Design.Linq.csproj            |   43 +-
 .../AttributeArgumentsShouldHaveAccessorsRule.cs   |   22 +-
 .../AvoidPublicInstanceFieldsRule.cs               |    9 +-
 .../AvoidRefAndOutParametersRule.cs                |    6 +-
 .../AvoidSmallNamespaceRule.cs                     |    4 +-
 .../ConsiderAddingInterfaceRule.cs                 |    6 +-
 .../ConsiderConvertingFieldToNullableRule.cs       |    9 +-
 .../ConsiderConvertingMethodToPropertyRule.cs      |    6 +-
 .../ConsiderUsingStaticTypeRule.cs                 |   56 +-
 .../DeclareEventHandlersCorrectlyRule.cs           |   28 +-
 .../DisposableTypesShouldHaveFinalizerRule.cs      |    2 +-
 ...oNotDeclareSettersOnCollectionPropertiesRule.cs |  124 +
 .../EnsureSymmetryForOverloadedOperatorsRule.cs    |    3 +-
 .../EnumeratorsShouldBeStronglyTypedRule.cs        |   27 +-
 .../EnumsShouldUseInt32Rule.cs                     |   36 +-
 .../Gendarme.Rules.Design.csproj                   |   45 +-
 .../ImplementEqualsAndGetHashCodeInPairRule.cs     |    5 +-
 .../ImplementIComparableCorreclyRule.cs            |    4 +-
 .../ListsAreStronglyTypedRule.cs                   |   31 +-
 gendarme/rules/Gendarme.Rules.Design/Makefile.am   |    6 +-
 gendarme/rules/Gendarme.Rules.Design/Makefile.in   |  298 +-
 .../MarkAssemblyWithAttributeRule.cs               |    3 +-
 .../MarkAssemblyWithCLSCompliantRule.cs            |    6 +-
 .../MarkAssemblyWithComVisibleRule.cs              |    6 +-
 .../MissingAttributeUsageOnCustomAttributeRule.cs  |    4 +-
 .../PreferIntegerOrStringForIndexersRule.cs        |   24 +-
 .../PreferUriOverStringRule.cs                     |   11 +-
 .../PreferXmlAbstractionsRule.cs                   |   16 +-
 ...videAlternativeNamesForOperatorOverloadsRule.cs |    4 +-
 .../StronglyTypeICollectionMembersRule.cs          |   20 +-
 .../Gendarme.Rules.Design/StronglyTypedRule.cs     |   28 +-
 .../AttributeArgumentsShouldHaveAccessorsTest.cs   |   35 +
 .../Test/ConsiderUsingStaticTypeTest.cs            |    6 +-
 ...oNotDeclareSettersOnCollectionPropertiesTest.cs |  137 +
 .../DoNotDeclareVirtualMethodsInSealedTypeTest.cs  |   36 +-
 .../rules/Gendarme.Rules.Design/Test/Makefile.in   |   87 +-
 .../Test/PreferUriOverStringTest.cs                |    6 +
 .../Test/Tests.Rules.Design.csproj                 |   46 +-
 .../UseCorrectDisposeSignaturesRule.cs             |    6 +-
 .../Gendarme.Rules.Design/UseFlagsAttributeRule.cs |    5 +-
 .../UsingCloneWithoutImplementingICloneableRule.cs |    4 +-
 ...AvoidArgumentExceptionDefaultConstructorRule.cs |   31 +-
 .../AvoidThrowingBasicExceptionsRule.cs            |   14 +-
 .../DoNotDestroyStackTraceRule.cs                  |  182 +-
 .../DoNotThrowInNonCatchClausesRule.cs             |  113 +
 .../DoNotThrowInUnexpectedLocationRule.cs          |   82 +-
 .../DoNotThrowReservedExceptionRule.cs             |   23 +-
 ...allowErrorsCatchingNonspecificExceptionsRule.cs |   16 +-
 .../ExceptionShouldBeVisibleRule.cs                |   14 +-
 .../Gendarme.Rules.Exceptions.csproj               |   30 +-
 .../InstantiateArgumentExceptionCorrectlyRule.cs   |   24 +-
 .../rules/Gendarme.Rules.Exceptions/Makefile.am    |    2 +
 .../rules/Gendarme.Rules.Exceptions/Makefile.in    |  294 +-
 .../MissingExceptionConstructorsRule.cs            |   29 +-
 .../Gendarme.Rules.Exceptions/NewExceptionRule.cs  |   24 +-
 .../Test/DoNotThrowInNonCatchClausesTest.cs        |  136 +
 .../InstantiateArgumentExceptionCorrectlyTest.cs   |   44 +
 .../Gendarme.Rules.Exceptions/Test/Makefile.in     |   87 +-
 .../Test/Tests.Rules.Exceptions.csproj             |   30 +-
 .../UseObjectDisposedExceptionRule.cs              |   12 +-
 .../DefectsMustBeReportedRule.cs                   |    8 +-
 .../DoNotThrowExceptionRule.cs                     |    6 +-
 .../Gendarme.Rules.Gendarme.csproj                 |  171 +-
 gendarme/rules/Gendarme.Rules.Gendarme/Makefile.in |  292 +-
 .../MissingEngineDependencyRule.cs                 |   31 +-
 .../ReviewAttributesOnRulesRule.cs                 |   34 +-
 .../rules/Gendarme.Rules.Gendarme/Test/Makefile.in |   87 +-
 .../Test/Tests.Rules.Gendarme.csproj               |  183 +-
 .../UseCorrectSuffixRule.cs                        |    2 +-
 .../AvoidUnusedInternalResourceRule.cs             |   19 +-
 .../Gendarme.Rules.Globalization.csproj            |   43 +-
 .../rules/Gendarme.Rules.Globalization/Makefile.am |    5 +
 .../rules/Gendarme.Rules.Globalization/Makefile.in |  297 +-
 .../PreferIFormatProviderOverrideRule.cs           |  111 +
 .../PreferOverrideBaseRule.cs                      |  170 +
 .../PreferStringComparisonOverrideRule.cs          |   82 +
 .../SatelliteResourceMismatchRule.cs               |   32 +-
 .../Test/InternalResource.Designer.cs              |    6 +-
 .../Gendarme.Rules.Globalization/Test/Makefile.in  |   87 +-
 .../Test/PreferIFormatProviderOverrideTest.cs      |  219 +
 .../Test/PreferStringComparisonOverrideTest.cs     |  366 ++
 .../Test/PublicResource.Designer.cs                |    6 +-
 .../Test/Resource.Designer.cs                      |    6 +-
 .../Test/Tests.Rules.Globalization.csproj          |   43 +-
 .../AutoLayoutTypesShouldNotBeComVisibleRule.cs    |   10 +-
 .../AvoidInt64ArgumentsInComVisibleMethodsRule.cs  |    2 +-
 .../AvoidStaticMembersInComVisibleTypesRule.cs     |    2 +-
 .../ComRocks.cs                                    |    8 +-
 .../ComVisibleShouldInheritFromComVisibleRule.cs   |    7 +-
 .../DoNotUseAutoDualClassInterfaceTypeRule.cs      |    5 +-
 .../Gendarme.Rules.Interoperability.Com.csproj     |  181 +-
 .../Makefile.in                                    |  292 +-
 .../MarkComSourceInterfacesAsIDispatchRule.cs      |   33 +-
 .../ReviewComRegistrationMethodsRule.cs            |    9 +-
 .../AutoLayoutTypesShouldNotBeComVisibleTest.cs    |   18 +
 .../AvoidStaticMembersInComVisibleTypesTest.cs     |    8 +-
 .../ComVisibleShouldInheritFromComVisibleTest.cs   |   15 +-
 .../Test/DoNotUseAutoDualClassInterfaceTypeTest.cs |   12 +-
 .../Test/Makefile.in                               |   87 +-
 .../Test/Tests.Rules.Interoperability.Com.csproj   |  195 +-
 .../CentralizePInvokesIntoNativeMethodsTypeRule.cs |   11 +-
 ...ToNativeCodeMustIncludeExceptionHandlingRule.cs |   25 +-
 .../DoNotCastIntPtrToInt32Rule.cs                  |   24 +-
 .../Gendarme.Rules.Interoperability.csproj         |   43 +-
 ...etLastErrorMustBeCalledRightAfterPInvokeRule.cs |   15 +-
 .../Gendarme.Rules.Interoperability/Makefile.in    |  292 +-
 .../MarshalBooleansInPInvokeDeclarationsRule.cs    |    4 +-
 .../MarshalStringsInPInvokeDeclarationsRule.cs     |   14 +-
 .../Test/Makefile.in                               |   87 +-
 .../Test/Tests.Rules.Interoperability.csproj       |   43 +-
 .../UseManagedAlternativesToPInvokeRule.cs         |    6 +-
 .../AvoidAlwaysNullFieldRule.cs                    |   20 +-
 .../AvoidComplexMethodsRule.cs                     |    4 +-
 .../AvoidDeepInheritanceTreeRule.cs                |   13 +-
 .../AvoidLackOfCohesionOfMethodsRule.cs            |    4 +-
 .../AvoidUnnecessarySpecializationRule.cs          |   16 +-
 .../ConsiderUsingStopwatchRule.cs                  |   23 +-
 .../Gendarme.Rules.Maintainability.csproj          |   43 +-
 .../Gendarme.Rules.Maintainability/Makefile.in     |  292 +-
 .../PreferStringIsNullOrEmptyRule.cs               |   11 +-
 .../RemoveDependenceOnObsoleteCodeRule.cs          |   39 +-
 .../ReviewMisleadingFieldNamesRule.cs              |   23 +-
 .../Test/AvoidAlwaysNullFieldTest.cs               |   51 +-
 .../Test/AvoidUnnecessarySpecializationTest.cs     |   32 +-
 .../Test/Makefile.in                               |   87 +-
 .../Test/Tests.Rules.Maintainability.csproj        |   43 +-
 .../Gendarme.Rules.NUnit.csproj                    |  169 +-
 gendarme/rules/Gendarme.Rules.NUnit/Makefile.in    |  292 +-
 .../ProvideMessageOnAssertCallsRule.cs             |    4 +-
 .../rules/Gendarme.Rules.NUnit/Test/Makefile.in    |   87 +-
 .../Test/Tests.Rules.NUnit.csproj                  |   43 +-
 .../UnitTestsMissingTestFixtureRule.cs             |    2 +-
 .../AvoidDeepNamespaceHierarchyRule.cs             |   12 +-
 .../AvoidRedundancyInMethodNameRule.cs             |   10 +-
 .../AvoidRedundancyInTypeNameRule.cs               |    4 +-
 .../AvoidTypeInterfaceInconsistencyRule.cs         |    6 +-
 .../DetectNonAlphaNumericsInTypeNamesRule.cs       |    7 +-
 .../Gendarme.Rules.Naming.csproj                   |   43 +-
 gendarme/rules/Gendarme.Rules.Naming/Makefile.in   |  292 +-
 ...ParameterNamesShouldMatchOverridenMethodRule.cs |   64 +-
 .../rules/Gendarme.Rules.Naming/Test/Makefile.in   |   87 +-
 ...ParameterNamesShouldMatchOverridenMethodTest.cs |  158 +-
 .../Test/Tests.Rules.Naming.csproj                 |   43 +-
 .../Test/UseCorrectPrefixTest.cs                   |    5 +
 .../Test/UseCorrectSuffixTest.cs                   |   61 +-
 .../Gendarme.Rules.Naming/UseCorrectCasingRule.cs  |   26 +-
 .../Gendarme.Rules.Naming/UseCorrectPrefixRule.cs  |   18 +-
 .../Gendarme.Rules.Naming/UseCorrectSuffixRule.cs  |  132 +-
 .../Gendarme.Rules.Naming/UsePreferredTermsRule.cs |    3 +-
 .../AvoidConcatenatingCharsRule.cs                 |   36 +-
 .../AvoidLargeNumberOfLocalVariablesRule.cs        |    6 +-
 .../AvoidLargeStructureRule.cs                     |   33 +-
 .../AvoidLocalDataStoreSlotRule.cs                 |   21 +-
 .../AvoidMethodWithLargeMaximumStackSizeRule.cs    |    4 +-
 .../AvoidRepetitiveCallsToPropertiesRule.cs        |   27 +-
 .../AvoidRepetitiveCastsRule.cs                    |   10 +-
 .../AvoidTypeGetTypeForConstantStringsRule.cs      |    9 +-
 .../AvoidUncalledPrivateCodeRule.cs                |   30 +-
 .../AvoidUninstantiatedInternalClassesRule.cs      |    4 +-
 .../AvoidUnnecessaryOverridesRule.cs               |    3 +-
 .../AvoidUnneededCallsOnStringRule.cs              |   18 +-
 .../AvoidUnneededUnboxingRule.cs                   |    7 +-
 .../AvoidUnsealedUninheritedInternalClassesRule.cs |    9 +-
 .../AvoidUnusedParametersRule.cs                   |   12 +-
 .../AvoidUnusedPrivateFieldsRule.cs                |   31 +-
 .../CompareWithStringEmptyEfficientlyRule.cs       |   11 +-
 .../DontIgnoreMethodResultRule.cs                  |   15 +-
 .../EmptyDestructorRule.cs                         |    4 +-
 .../Gendarme.Rules.Performance.csproj              |   30 +-
 ...bleWithDestructorWithoutSuppressFinalizeRule.cs |    4 +-
 .../ImplementEqualsTypeRule.cs                     |    7 +-
 .../rules/Gendarme.Rules.Performance/Makefile.in   |  292 +-
 .../MathMinMaxCandidateRule.cs                     |   27 +-
 .../OverrideValueTypeDefaultsRule.cs               |    3 +-
 .../PreferCharOverloadRule.cs                      |   13 +-
 ...tOnGenericParameterForPrimitiveInterfaceRule.cs |   85 +-
 .../PreferLiteralOverInitOnlyFieldsRule.cs         |    2 +-
 .../RemoveUnusedLocalVariablesRule.cs              |    5 +-
 .../ReviewLinqMethodRule.cs                        |   19 +-
 .../Test/AvoidRepetitiveCallsToPropertiesTest.cs   |    4 +-
 .../Test/AvoidUnusedPrivateFieldsTest.cs           |   41 +
 .../Gendarme.Rules.Performance/Test/Makefile.in    |   87 +-
 ...tOnGenericParameterForPrimitiveInterfaceTest.cs |   22 +-
 .../Test/Tests.Rules.Performance.csproj            |   30 +-
 .../UseTypeEmptyTypesRule.cs                       |    4 +-
 .../DoNotHardcodePathsRule.cs                      |   16 +-
 .../ExitCodeIsLimitedOnUnixRule.cs                 |   10 +-
 .../FeatureRequiresRootPrivilegeOnUnixRule.cs      |   17 +-
 .../Gendarme.Rules.Portability.csproj              |   30 +-
 .../rules/Gendarme.Rules.Portability/Makefile.in   |  292 +-
 .../MonoCompatibilityReviewRule.cs                 |   47 +-
 .../NewLineLiteralRule.cs                          |    3 +-
 .../Gendarme.Rules.Portability/Test/Makefile.in    |   87 +-
 .../Test/Tests.Rules.Portability.csproj            |   30 +-
 .../Gendarme.Rules.Security.Cas.csproj             |   43 +-
 .../rules/Gendarme.Rules.Security.Cas/Makefile.in  |  292 +-
 ...ReviewSuppressUnmanagedCodeSecurityUsageRule.cs |   12 +-
 .../SecureGetObjectDataOverridesRule.cs            |    6 +-
 .../SecurityDeclarationRocks.cs                    |    1 +
 .../Gendarme.Rules.Security.Cas/Test/Makefile.in   |   87 +-
 .../Test/Tests.Rules.Security.Cas.csproj           |   43 +-
 .../DoNotShortCircuitCertificateCheckRule.cs       |   25 +-
 .../Gendarme.Rules.Security.csproj                 |   30 +-
 gendarme/rules/Gendarme.Rules.Security/Makefile.in |  292 +-
 .../rules/Gendarme.Rules.Security/Test/Makefile.in |   87 +-
 .../Test/Tests.Rules.Security.csproj               |   30 +-
 .../CallBaseMethodsOnISerializableTypesRule.cs     |    7 +-
 .../DeserializeOptionalFieldRule.cs                |   22 +-
 .../Gendarme.Rules.Serialization.csproj            |   43 +-
 .../ImplementISerializableCorrectlyRule.cs         |    8 +-
 .../rules/Gendarme.Rules.Serialization/Makefile.in |  292 +-
 .../MarkAllNonSerializableFieldsRule.cs            |   15 +-
 ...SerializableAttributeOnISerializableTypeRule.cs |    6 +-
 .../MissingSerializationConstructorRule.cs         |    5 +-
 .../Gendarme.Rules.Serialization/Test/Makefile.in  |   87 +-
 .../Test/Tests.Rules.Serialization.csproj          |   43 +-
 ...eCorrectSignatureForSerializationMethodsRule.cs |   41 +-
 .../Gendarme.Rules.Smells/AvoidLargeClassesRule.cs |    9 +-
 .../Gendarme.Rules.Smells/AvoidLongMethodsRule.cs  |   47 +-
 .../AvoidLongParameterListsRule.cs                 |    6 +-
 .../AvoidMessageChainsRule.cs                      |    6 +-
 .../AvoidSpeculativeGeneralityRule.cs              |    7 +-
 .../Gendarme.Rules.Smells/CodeDuplicatedLocator.cs |    7 +-
 .../Gendarme.Rules.Smells.csproj                   |   43 +-
 .../Gendarme.Rules.Smells/InstructionMatcher.cs    |    4 +-
 gendarme/rules/Gendarme.Rules.Smells/Makefile.in   |  292 +-
 gendarme/rules/Gendarme.Rules.Smells/Pattern.cs    |   26 +-
 .../Test/AvoidCodeDuplicatedInSameClassTest.cs     |   12 +-
 .../rules/Gendarme.Rules.Smells/Test/Makefile.in   |   87 +-
 .../Test/Tests.Rules.Smells.csproj                 |   43 +-
 .../AddMatchingArrangeMeasureOverrideRule.cs       |   11 +-
 .../Gendarme.Rules.Ui/Gendarme.Rules.Ui.csproj     |  246 +-
 gendarme/rules/Gendarme.Rules.Ui/Makefile.in       |  292 +-
 gendarme/rules/Gendarme.Rules.Ui/Test/Makefile.in  |   87 +-
 .../Gendarme.Rules.Ui/Test/Tests.Rules.Ui.csproj   |   31 +-
 .../UseSTAThreadAttributeOnSWFEntryPointsRule.cs   |    7 +-
 gendarme/rules/Makefile.in                         |  187 +-
 gendarme/rules/Test.Rules/Makefile.am              |    6 +-
 gendarme/rules/Test.Rules/Makefile.in              |  193 +-
 gendarme/rules/Test.Rules/Test.Rules.csproj        |   43 +-
 gendarme/rules/common.make                         |    6 +-
 gendarme/self-test.ignore                          |   41 +-
 gendarme/swf-wizard-runner/GuiRunner.cs            |    9 +-
 gendarme/swf-wizard-runner/Makefile.in             |  186 +-
 .../Properties/Resources.Designer.cs               |    6 +-
 .../Properties/Settings.Designer.cs                |    4 +-
 gendarme/swf-wizard-runner/Wizard.Designer.cs      |    2 +-
 gendarme/swf-wizard-runner/Wizard.cs               |   29 +-
 .../swf-wizard-runner/swf-wizard-runner.csproj     |   63 +-
 gendarme/tools/Makefile.in                         |  184 +-
 gendarme/tools/supported/Makefile.am               |    2 +-
 gendarme/tools/supported/Makefile.in               |  186 +-
 gendarme/tools/supported/gd2i/Makefile.am          |    2 +-
 gendarme/tools/supported/gd2i/Makefile.in          |  159 +-
 gendarme/tools/supported/gd2i/gd2i.csproj          |  145 +-
 .../supported/templates/AssemblyRule.cs}           |   35 +-
 .../supported/templates/AssemblyRule.vstemplate    |   24 +
 .../supported/templates/AssemblyTest.cs}           |   42 +-
 .../supported/templates/AssemblyTest.vstemplate    |   27 +
 gendarme/tools/supported/templates/Makefile.am     |  102 +
 .../mapper => supported/templates}/Makefile.in     |  197 +-
 .../supported/templates/MethodRule.cs}             |   35 +-
 .../supported/templates/MethodRule.vstemplate      |   24 +
 .../supported/templates/MethodTest.cs}             |   42 +-
 .../supported/templates/MethodTest.vstemplate      |   27 +
 gendarme/tools/supported/templates/README          |    8 +
 gendarme/tools/supported/templates/README.vsnet    |   12 +
 .../templates/Templates.RuleProject.csproj}        |   51 +-
 .../templates/Templates.RuleProject.vstemplate     |   19 +
 .../templates/Templates.TestProject.csproj}        |   58 +-
 .../templates/Templates.TestProject.vstemplate     |   19 +
 .../supported/templates/TypeRule.cs}               |   33 +-
 .../tools/supported/templates/TypeRule.vstemplate  |   24 +
 .../supported/templates/TypeTest.cs}               |   42 +-
 .../tools/supported/templates/TypeTest.vstemplate  |   27 +
 gendarme/tools/unsupported/Makefile.in             |  184 +-
 .../tools/unsupported/mapper/FxCopMapBuilder.cs    |    3 +-
 gendarme/tools/unsupported/mapper/Makefile.am      |    2 +-
 gendarme/tools/unsupported/mapper/Makefile.in      |   89 +-
 gendarme/tools/unsupported/mapper/fxcop.missing    |    8 -
 gendarme/tools/unsupported/typeref/Makefile.am     |    2 +-
 gendarme/tools/unsupported/typeref/Makefile.in     |   89 +-
 gendarme/tools/unsupported/typeref/typeref.csproj  |   43 +-
 gendarme/tools/unsupported/xmldoc2wiki/Makefile.am |    2 +-
 gendarme/tools/unsupported/xmldoc2wiki/Makefile.in |   89 +-
 gendarme/tools/unsupported/xmldoc2wiki/README      |   15 +-
 .../tools/unsupported/xmldoc2wiki/xmldoc2wiki.cs   |  299 +-
 .../unsupported/xmldoc2wiki/xmldoc2wiki.csproj     |  145 +-
 gendarme/wix/Makefile.in                           |   87 +-
 gendarme/wix/Product.wxs                           |   12 +-
 gendarme/wix/license.rtf                           |    4 +-
 gendarme/wix/wix.wixproj                           |    7 +-
 gsharp/Main.cs                                     |   12 +-
 gsharp/MainWindow.cs                               |    4 +-
 gsharp/Makefile.in                                 |  213 +-
 gsharp/Shell.cs                                    |   32 +-
 gsharp/gtk-gui/Mono.CSharp.Gui.DescribeType.cs     |  194 +-
 gsharp/gtk-gui/Mono.CSharp.Gui.MainWindow.cs       |  415 +-
 gsharp/gtk-gui/Mono.CSharp.Gui.ProcessSelector.cs  |  198 +-
 gsharp/gtk-gui/generated.cs                        |   60 +-
 gui-compare/CecilMetadata.cs                       |  246 +-
 gui-compare/CompareContext.cs                      |  224 +-
 gui-compare/InfoManager.cs                         |  153 +-
 gui-compare/Main.cs                                |    9 +-
 gui-compare/MainWindow.cs                          |   30 +-
 gui-compare/Makefile.am                            |    2 +-
 gui-compare/Makefile.in                            |  188 +-
 gui-compare/MasterMetadata.cs                      |    3 +
 gui-compare/Masterinfo.cs                          |   37 +-
 gui-compare/Metadata.cs                            |   29 +-
 gui-compare/gtk-gui/GuiCompare.CustomCompare.cs    |   20 +-
 gui-compare/gtk-gui/MainWindow.cs                  |   48 +-
 gui-compare/gtk-gui/generated.cs                   |   21 +-
 gui-compare/gtk-gui/gui.stetic                     |    4 +-
 gui-compare/gtk-gui/guicompare.ProviderSelector.cs |    7 +-
 gui-compare/gui-compare.in                         |    2 +
 ilcontrast/Makefile.in                             |  238 +-
 install-sh                                         |   32 +-
 minvoke/Makefile.in                                |  186 +-
 missing                                            |   94 +-
 mkinstalldirs                                      |  161 -
 mono-tools.spec.in                                 |  102 +
 mperfmon/Makefile.in                               |  281 +-
 po/Makefile.in.in                                  |   20 +-
 po/ca.gmo                                          |  Bin 1429 -> 4775 bytes
 po/ca.po                                           |  401 +-
 po/da.gmo                                          |  Bin 455 -> 3793 bytes
 po/da.po                                           |  407 +-
 po/es.gmo                                          |  Bin 468 -> 3791 bytes
 po/es.po                                           |  401 +-
 po/fr.gmo                                          |  Bin 395 -> 2670 bytes
 po/fr.po                                           |  335 +-
 po/mono-tools.pot                                  |  176 +-
 po/pt_BR.gmo                                       |  Bin 5638 -> 5638 bytes
 po/pt_BR.po                                        |  260 +-
 webdoc/App_Code/Plugins/Plugin.cs                  |  144 +
 webdoc/Global.asax                                 |  125 +
 webdoc/Makefile.am                                 |  201 +-
 webdoc/Makefile.in                                 |  335 +-
 webdoc/README.md                                   |   41 +
 webdoc/api.master                                  |   39 +
 webdoc/common.css                                  |  175 -
 webdoc/edit.aspx                                   |   62 -
 webdoc/header.aspx                                 |  117 -
 webdoc/header.html                                 |   65 -
 webdoc/images/link.png                             |  Bin 730 -> 0 bytes
 webdoc/images/print.png                            |  Bin 585 -> 0 bytes
 webdoc/index.aspx                                  |   90 +-
 webdoc/index.html                                  |   10 -
 webdoc/login.aspx                                  |   68 -
 webdoc/logout.aspx                                 |   12 -
 webdoc/mono_logo_g.gif                             |  Bin 1655 -> 0 bytes
 webdoc/monodoc.ashx                                |  319 +-
 webdoc/monodoc.asmx                                |  210 -
 webdoc/monodoc.css                                 |    1 +
 webdoc/oldposts.xml                                |    3 -
 webdoc/plugins.def                                 |   12 +
 webdoc/plugins/iframe-plugin/iframe.js             |    3 +
 .../jquery.iframe-auto-height-plugin.1.9.0.min.js  |    7 +
 .../plugins/search-plugin/fastsearch/fsearch.css   |   45 +
 webdoc/plugins/search-plugin/fastsearch/search.js  |  133 +
 .../plugins/search-plugin/fullsearch/fullsearch.js |   40 +
 webdoc/plugins/search-plugin/fullsearch/search.css |   43 +
 .../plugins/search-plugin/fullsearch/search.html   |   24 +
 webdoc/plugins/search-plugin/images/spinner.gif    |  Bin 0 -> 3208 bytes
 .../dependencies/ptree}/searching.gif              |  Bin 551 -> 551 bytes
 .../sidebar-plugin/dependencies}/ptree/tree.css    |   24 +-
 .../sidebar-plugin/dependencies}/ptree/tree.js     |  109 +-
 .../dependencies}/xtree/images/I.png               |  Bin 148 -> 148 bytes
 .../dependencies}/xtree/images/L.png               |  Bin 153 -> 153 bytes
 .../dependencies}/xtree/images/Lminus.png          |  Bin 219 -> 219 bytes
 .../dependencies}/xtree/images/Lplus.png           |  Bin 224 -> 224 bytes
 .../dependencies}/xtree/images/T.png               |  Bin 152 -> 152 bytes
 .../dependencies}/xtree/images/Tminus.png          |  Bin 207 -> 207 bytes
 .../dependencies}/xtree/images/Tplus.png           |  Bin 222 -> 222 bytes
 .../dependencies}/xtree/images/blank.png           |  Bin 144 -> 144 bytes
 .../dependencies}/xtree/images/clean/I.gif         |  Bin 70 -> 70 bytes
 .../dependencies}/xtree/images/clean/L.gif         |  Bin 62 -> 62 bytes
 .../dependencies}/xtree/images/clean/Lminus.gif    |  Bin 337 -> 337 bytes
 .../dependencies}/xtree/images/clean/Lplus.gif     |  Bin 333 -> 333 bytes
 .../dependencies}/xtree/images/clean/T.gif         |  Bin 62 -> 62 bytes
 .../dependencies}/xtree/images/clean/Tminus.gif    |  Bin 337 -> 337 bytes
 .../dependencies}/xtree/images/clean/Tplus.gif     |  Bin 333 -> 333 bytes
 .../dependencies}/xtree/images/clean/blank.gif     |  Bin 56 -> 56 bytes
 .../dependencies}/xtree/images/file.png            |  Bin 251 -> 251 bytes
 .../dependencies}/xtree/images/foldericon.png      |  Bin 229 -> 229 bytes
 .../dependencies}/xtree/images/msdn/I.gif          |  Bin 77 -> 77 bytes
 .../dependencies}/xtree/images/msdn/L.gif          |  Bin 74 -> 74 bytes
 .../dependencies}/xtree/images/msdn/Lminus.gif     |  Bin 345 -> 345 bytes
 .../dependencies}/xtree/images/msdn/Lplus.gif      |  Bin 342 -> 342 bytes
 .../dependencies}/xtree/images/msdn/T.gif          |  Bin 80 -> 80 bytes
 .../dependencies}/xtree/images/msdn/Tminus.gif     |  Bin 349 -> 349 bytes
 .../dependencies}/xtree/images/msdn/Tplus.gif      |  Bin 346 -> 346 bytes
 .../dependencies}/xtree/images/msdn/blank.gif      |  Bin 56 -> 56 bytes
 .../dependencies}/xtree/images/msdn/menu_bar.gif   |  Bin 77 -> 77 bytes
 .../xtree/images/msdn/menu_corner.gif              |  Bin 74 -> 74 bytes
 .../xtree/images/msdn/menu_corner_minus.gif        |  Bin 345 -> 345 bytes
 .../xtree/images/msdn/menu_corner_plus.gif         |  Bin 342 -> 342 bytes
 .../dependencies}/xtree/images/msdn/menu_tee.gif   |  Bin 80 -> 80 bytes
 .../xtree/images/msdn/menu_tee_minus.gif           |  Bin 349 -> 349 bytes
 .../xtree/images/msdn/menu_tee_plus.gif            |  Bin 346 -> 346 bytes
 .../dependencies}/xtree/images/msdn2/I.gif         |  Bin 97 -> 97 bytes
 .../dependencies}/xtree/images/msdn2/L.gif         |  Bin 74 -> 74 bytes
 .../dependencies/xtree/images/msdn2/Lminus.gif     |  Bin 0 -> 1408 bytes
 .../dependencies/xtree/images/msdn2/Lplus.gif      |  Bin 0 -> 1405 bytes
 .../dependencies}/xtree/images/msdn2/T.gif         |  Bin 80 -> 80 bytes
 .../dependencies/xtree/images/msdn2/Tminus.gif     |  Bin 0 -> 1412 bytes
 .../dependencies/xtree/images/msdn2/Tplus.gif      |  Bin 0 -> 1409 bytes
 .../dependencies}/xtree/images/msdn2/blank.gif     |  Bin 56 -> 56 bytes
 .../dependencies}/xtree/images/openfoldericon.png  |  Bin 232 -> 232 bytes
 .../dependencies}/xtree/images/xp/I.png            |  Bin 148 -> 148 bytes
 .../dependencies}/xtree/images/xp/L.png            |  Bin 153 -> 153 bytes
 .../dependencies}/xtree/images/xp/Lminus.png       |  Bin 340 -> 340 bytes
 .../dependencies}/xtree/images/xp/Lplus.png        |  Bin 348 -> 348 bytes
 .../dependencies}/xtree/images/xp/T.png            |  Bin 152 -> 152 bytes
 .../dependencies}/xtree/images/xp/Tminus.png       |  Bin 341 -> 341 bytes
 .../dependencies}/xtree/images/xp/Tplus.png        |  Bin 348 -> 348 bytes
 .../dependencies}/xtree/images/xp/file.png         |  Bin 377 -> 377 bytes
 .../dependencies}/xtree/images/xp/folder.png       |  Bin 413 -> 413 bytes
 .../dependencies}/xtree/images/xp/openfolder.png   |  Bin 474 -> 474 bytes
 .../dependencies}/xtree/xloadtree.js               |    0
 .../dependencies}/xtree/xmlextras.js               |    0
 .../sidebar-plugin/dependencies}/xtree/xtree.css   |   10 -
 .../sidebar-plugin/dependencies}/xtree/xtree.js    |   36 +-
 webdoc/plugins/sidebar-plugin/make-tree.js         |   35 +
 webdoc/{ => plugins/sidebar-plugin}/sidebar.css    |   18 +-
 webdoc/{ => plugins/sidebar-plugin}/sidebar.js     |    0
 webdoc/plugins/tooltip-plugin/bootstrap.tooltip.js |  276 +
 webdoc/robots.txt                                  |    2 +
 webdoc/server.asmx                                 |    1 -
 webdoc/server.cs                                   |  366 --
 webdoc/skins/mono-external/common-extension.css    |  333 ++
 webdoc/skins/mono-external/footer.html             |    1 +
 webdoc/skins/mono-external/header.html             |   13 +
 webdoc/skins/mono-external/images/link.png         |  Bin 0 -> 1635 bytes
 .../{ => skins/mono-external}/images/mono-logo.png |  Bin 9916 -> 9916 bytes
 .../mono-external}/images/mono_logo_g.gif          |  Bin 1655 -> 1655 bytes
 .../mono-external/images/native-browser-icon.png   |  Bin 0 -> 1736 bytes
 webdoc/skins/mono-external/images/print.png        |  Bin 0 -> 2539 bytes
 webdoc/skins/mono-external/images/slide-toggle.png |  Bin 0 -> 3034 bytes
 webdoc/skins/mono-external/images/spinner.gif      |  Bin 0 -> 3208 bytes
 webdoc/tables.sql                                  |   21 -
 webdoc/views/common.css                            |   38 +
 webdoc/views/common.js                             |   46 +
 webdoc/views/images/favicon.ico                    |  Bin 0 -> 1406 bytes
 webdoc/views/images/native-browser-icon.png        |  Bin 0 -> 1736 bytes
 webdoc/views/reset.css                             |   49 +
 webdoc/web.config                                  |   19 +-
 webdoc/wiki2ecmahelper.xsl                         |   70 -
 webdoc/xtree/images/msdn2/Lminus.gif               |  Bin 345 -> 0 bytes
 webdoc/xtree/images/msdn2/Lplus.gif                |  Bin 342 -> 0 bytes
 webdoc/xtree/images/msdn2/Tminus.gif               |  Bin 349 -> 0 bytes
 webdoc/xtree/images/msdn2/Tplus.gif                |  Bin 346 -> 0 bytes
 639 files changed, 29517 insertions(+), 14636 deletions(-)

diff --git a/INSTALL b/INSTALL
index d3c5b40..a1e89e1 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,19 +1,25 @@
 Installation Instructions
 *************************
 
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
-2006, 2007 Free Software Foundation, Inc.
+Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation,
+Inc.
 
-This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
+   Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.  This file is offered as-is,
+without warranty of any kind.
 
 Basic Installation
 ==================
 
-Briefly, the shell commands `./configure; make; make install' should
+   Briefly, the shell commands `./configure; make; make install' should
 configure, build, and install this package.  The following
 more-detailed instructions are generic; see the `README' file for
-instructions specific to this package.
+instructions specific to this package.  Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below.  The lack of an optional feature in a given package is not
+necessarily a bug.  More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
 
    The `configure' shell script attempts to guess correct values for
 various system-dependent variables used during compilation.  It uses
@@ -42,7 +48,7 @@ may remove or edit it.
 you want to change it or regenerate `configure' using a newer version
 of `autoconf'.
 
-The simplest way to compile this package is:
+   The simplest way to compile this package is:
 
   1. `cd' to the directory containing the package's source code and type
      `./configure' to configure the package for your system.
@@ -53,12 +59,22 @@ The simplest way to compile this package is:
   2. Type `make' to compile the package.
 
   3. Optionally, type `make check' to run any self-tests that come with
-     the package.
+     the package, generally using the just-built uninstalled binaries.
 
   4. Type `make install' to install the programs and any data files and
-     documentation.
-
-  5. You can remove the program binaries and object files from the
+     documentation.  When installing into a prefix owned by root, it is
+     recommended that the package be configured and built as a regular
+     user, and only the `make install' phase executed with root
+     privileges.
+
+  5. Optionally, type `make installcheck' to repeat any self-tests, but
+     this time using the binaries in their final installed location.
+     This target does not install anything.  Running this target as a
+     regular user, particularly if the prior `make install' required
+     root privileges, verifies that the installation completed
+     correctly.
+
+  6. You can remove the program binaries and object files from the
      source code directory by typing `make clean'.  To also remove the
      files that `configure' created (so you can compile the package for
      a different kind of computer), type `make distclean'.  There is
@@ -67,15 +83,22 @@ The simplest way to compile this package is:
      all sorts of other programs in order to regenerate files that came
      with the distribution.
 
-  6. Often, you can also type `make uninstall' to remove the installed
-     files again.
+  7. Often, you can also type `make uninstall' to remove the installed
+     files again.  In practice, not all packages have tested that
+     uninstallation works correctly, even though it is required by the
+     GNU Coding Standards.
+
+  8. Some packages, particularly those that use Automake, provide `make
+     distcheck', which can by used by developers to test that all other
+     targets like `make install' and `make uninstall' work correctly.
+     This target is generally not run by end users.
 
 Compilers and Options
 =====================
 
-Some systems require unusual options for compilation or linking that the
-`configure' script does not know about.  Run `./configure --help' for
-details on some of the pertinent environment variables.
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
 
    You can give `configure' initial values for configuration parameters
 by setting variables in the command line or in the environment.  Here
@@ -88,25 +111,41 @@ is an example:
 Compiling For Multiple Architectures
 ====================================
 
-You can compile the package for more than one kind of computer at the
+   You can compile the package for more than one kind of computer at the
 same time, by placing the object files for each architecture in their
 own directory.  To do this, you can use GNU `make'.  `cd' to the
 directory where you want the object files and executables to go and run
 the `configure' script.  `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
+source code in the directory that `configure' is in and in `..'.  This
+is known as a "VPATH" build.
 
    With a non-GNU `make', it is safer to compile the package for one
 architecture at a time in the source code directory.  After you have
 installed the package for one architecture, use `make distclean' before
 reconfiguring for another architecture.
 
+   On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor.  Like
+this:
+
+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CPP="gcc -E" CXXCPP="g++ -E"
+
+   This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
 Installation Names
 ==================
 
-By default, `make install' installs the package's commands under
+   By default, `make install' installs the package's commands under
 `/usr/local/bin', include files under `/usr/local/include', etc.  You
 can specify an installation prefix other than `/usr/local' by giving
-`configure' the option `--prefix=PREFIX'.
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
 
    You can specify separate installation prefixes for
 architecture-specific files and architecture-independent files.  If you
@@ -117,16 +156,47 @@ Documentation and other data files still use the regular prefix.
    In addition, if you use an unusual directory layout you can give
 options like `--bindir=DIR' to specify different values for particular
 kinds of files.  Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
+you can set and what kinds of files go in them.  In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+   The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+   The first method involves providing an override variable for each
+affected directory.  For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'.  Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated.  The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+   The second method involves providing the `DESTDIR' variable.  For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names.  The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters.  On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
 
    If the package supports it, you can cause programs to be installed
 with an extra prefix or suffix on their names by giving `configure' the
 option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
 
-Optional Features
-=================
-
-Some packages pay attention to `--enable-FEATURE' options to
+   Some packages pay attention to `--enable-FEATURE' options to
 `configure', where FEATURE indicates an optional part of the package.
 They may also pay attention to `--with-PACKAGE' options, where PACKAGE
 is something like `gnu-as' or `x' (for the X Window System).  The
@@ -138,14 +208,58 @@ find the X include and library files automatically, but if it doesn't,
 you can use the `configure' options `--x-includes=DIR' and
 `--x-libraries=DIR' to specify their locations.
 
+   Some packages offer the ability to configure how verbose the
+execution of `make' will be.  For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+   HP-UX `make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as `configure' are involved.  Use GNU `make'
+instead.
+
+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
+a workaround.  If GNU CC is not installed, it is therefore recommended
+to try
+
+     ./configure CC="cc"
+
+and if that doesn't work, try
+
+     ./configure CC="cc -nodtk"
+
+   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+   On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'.  It is recommended to use the following options:
+
+     ./configure --prefix=/boot/common
+
 Specifying the System Type
 ==========================
 
-There may be some features `configure' cannot figure out automatically,
-but needs to determine by the type of machine the package will run on.
-Usually, assuming the package is built to be run on the _same_
-architectures, `configure' can figure that out, but if it prints a
-message saying it cannot guess the machine type, give it the
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
 `--build=TYPE' option.  TYPE can either be a short name for the system
 type, such as `sun4', or a canonical name which has the form:
 
@@ -153,7 +267,8 @@ type, such as `sun4', or a canonical name which has the form:
 
 where SYSTEM can have one of these forms:
 
-     OS KERNEL-OS
+     OS
+     KERNEL-OS
 
    See the file `config.sub' for the possible values of each field.  If
 `config.sub' isn't included in this package, then this package doesn't
@@ -171,9 +286,9 @@ eventually be run) with `--host=TYPE'.
 Sharing Defaults
 ================
 
-If you want to set default values for `configure' scripts to share, you
-can create a site shell script called `config.site' that gives default
-values for variables like `CC', `cache_file', and `prefix'.
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
 `configure' looks for `PREFIX/share/config.site' if it exists, then
 `PREFIX/etc/config.site' if it exists.  Or, you can set the
 `CONFIG_SITE' environment variable to the location of the site script.
@@ -182,7 +297,7 @@ A warning: not all `configure' scripts look for a site script.
 Defining Variables
 ==================
 
-Variables not defined in a site shell script can be set in the
+   Variables not defined in a site shell script can be set in the
 environment passed to `configure'.  However, some packages may run
 configure again during the build, and the customized values of these
 variables may be lost.  In order to avoid this problem, you should set
@@ -201,11 +316,19 @@ an Autoconf bug.  Until the bug is fixed you can use this workaround:
 `configure' Invocation
 ======================
 
-`configure' recognizes the following options to control how it operates.
+   `configure' recognizes the following options to control how it
+operates.
 
 `--help'
 `-h'
-     Print a summary of the options to `configure', and exit.
+     Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+     Print a summary of the options unique to this package's
+     `configure', and exit.  The `short' variant lists options used
+     only in the top level, while the `recursive' variant lists options
+     also present in any nested packages.
 
 `--version'
 `-V'
@@ -232,6 +355,16 @@ an Autoconf bug.  Until the bug is fixed you can use this workaround:
      Look for the package's source code in directory DIR.  Usually
      `configure' can determine that directory automatically.
 
+`--prefix=DIR'
+     Use DIR as the installation prefix.  *note Installation Names::
+     for more details, including other options available for fine-tuning
+     the installation locations.
+
+`--no-create'
+`-n'
+     Run the configure checks, but stop before creating any output
+     files.
+
 `configure' also accepts some other, not widely useful, options.  Run
 `configure --help' for more details.
 
diff --git a/Makefile.in b/Makefile.in
index ad2b296..e295a62 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -34,17 +53,18 @@ host_triplet = @host@
 target_triplet = @target@
 subdir = .
 DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(top_srcdir)/configure AUTHORS COPYING \
-	COPYING.LIB ChangeLog INSTALL NEWS config.guess config.sub \
-	install-sh missing mkinstalldirs
+	$(srcdir)/Makefile.in $(srcdir)/mono-tools.spec.in \
+	$(top_srcdir)/configure AUTHORS COPYING COPYING.LIB ChangeLog \
+	INSTALL NEWS config.guess config.sub install-sh missing
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
  configure.lineno config.status.lineno
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_CLEAN_FILES =
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES = mono-tools.spec
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -54,8 +74,16 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir dist dist-all distcheck
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
@@ -63,12 +91,41 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
 am__remove_distdir = \
-  { test ! -d $(distdir) \
-    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
-         && rm -fr $(distdir); }; }
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 DIST_ARCHIVES = $(distdir).tar.gz
 GZIP_ENV = --best
 distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
 distcleancheck_listfiles = find . -type f -print
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -130,6 +187,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +201,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -224,21 +285,21 @@ ACLOCAL_AMFLAGS = $(ACLOCAL_FLAGS)
 all: all-recursive
 
 .SUFFIXES:
-am--refresh:
+am--refresh: Makefile
 	@:
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
-	      cd $(srcdir) && $(AUTOMAKE) --gnu  \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+	      $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
 		&& exit 0; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -254,9 +315,12 @@ $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENC
 	$(SHELL) ./config.status --recheck
 
 $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(srcdir) && $(AUTOCONF)
+	$(am__cd) $(srcdir) && $(AUTOCONF)
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+mono-tools.spec: $(top_builddir)/config.status $(srcdir)/mono-tools.spec.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -265,7 +329,7 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -282,7 +346,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -290,7 +354,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -316,16 +380,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -333,14 +397,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -352,7 +416,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -361,36 +425,41 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
 	$(am__remove_distdir)
-	test -d $(distdir) || mkdir $(distdir)
+	test -d "$(distdir)" || mkdir "$(distdir)"
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -406,50 +475,72 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
 	done
-	-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+	-test -n "$(am__skip_mode_fix)" \
+	|| find "$(distdir)" -type d ! -perm -755 \
+		-exec chmod u+rwx,go+rx {} \; -o \
 	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
 	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
 	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
-	|| chmod -R a+r $(distdir)
+	|| chmod -R a+r "$(distdir)"
 dist-gzip: distdir
 	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
 	$(am__remove_distdir)
 
 dist-bzip2: distdir
-	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+	$(am__remove_distdir)
+
+dist-lzip: distdir
+	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
 	$(am__remove_distdir)
 
 dist-lzma: distdir
 	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
 	$(am__remove_distdir)
 
+dist-xz: distdir
+	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+	$(am__remove_distdir)
+
 dist-tarZ: distdir
 	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
 	$(am__remove_distdir)
@@ -473,26 +564,33 @@ dist dist-all: distdir
 distcheck: dist
 	case '$(DIST_ARCHIVES)' in \
 	*.tar.gz*) \
-	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
 	*.tar.bz2*) \
-	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
 	*.tar.lzma*) \
-	  unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
+	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+	*.tar.lz*) \
+	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+	*.tar.xz*) \
+	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
 	*.tar.Z*) \
 	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
 	*.shar.gz*) \
-	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
 	*.zip*) \
 	  unzip $(distdir).zip ;;\
 	esac
-	chmod -R a-w $(distdir); chmod a+w $(distdir)
+	chmod -R a-w $(distdir); chmod u+w $(distdir)
 	mkdir $(distdir)/_build
 	mkdir $(distdir)/_inst
 	chmod a-w $(distdir)
+	test -d $(distdir)/_build || exit 0; \
 	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
 	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
-	  && cd $(distdir)/_build \
+	  && am__cwd=`pwd` \
+	  && $(am__cd) $(distdir)/_build \
 	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
 	    $(DISTCHECK_CONFIGURE_FLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
@@ -513,14 +611,24 @@ distcheck: dist
 	  && rm -rf "$$dc_destdir" \
 	  && $(MAKE) $(AM_MAKEFLAGS) dist \
 	  && rm -rf $(DIST_ARCHIVES) \
-	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+	  && cd "$$am__cwd" \
+	  || exit 1
 	$(am__remove_distdir)
 	@(echo "$(distdir) archives ready for distribution: "; \
 	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
 	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
 distuninstallcheck:
-	@cd $(distuninstallcheck_dir) \
-	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+	@test -n '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: trying to run $@ with an empty' \
+	       '$$(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	$(am__cd) '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
 	   || { echo "ERROR: files left after uninstall:" ; \
 	        if test -n "$(DESTDIR)"; then \
 	          echo "  (check DESTDIR support)"; \
@@ -551,16 +659,22 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -580,6 +694,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -588,18 +704,28 @@ install-data-am:
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -622,23 +748,24 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am am--refresh check check-am clean clean-generic \
 	ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
-	dist-lzma dist-shar dist-tarZ dist-zip distcheck distclean \
-	distclean-generic distclean-tags distcleancheck distdir \
-	distuninstallcheck dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	installdirs-am maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
-	tags-recursive uninstall uninstall-am
+	dist-lzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
+	distcheck distclean distclean-generic distclean-tags \
+	distcleancheck distdir distuninstallcheck dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+	pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/Mono.Profiler/Makefile.in b/Mono.Profiler/Makefile.in
index 98f767d..a670e1e 100644
--- a/Mono.Profiler/Makefile.in
+++ b/Mono.Profiler/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,8 +57,9 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -49,12 +69,45 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -115,6 +168,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -128,9 +182,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -209,14 +266,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Mono.Profiler/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  Mono.Profiler/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Mono.Profiler/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu Mono.Profiler/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -234,6 +291,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -242,7 +300,7 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -259,7 +317,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -267,7 +325,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -293,16 +351,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -310,14 +368,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -329,7 +387,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -338,29 +396,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -381,29 +444,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -423,16 +498,22 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -451,6 +532,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -459,18 +542,28 @@ install-data-am:
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -491,8 +584,8 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic ctags \
@@ -507,6 +600,7 @@ uninstall-am:
 	mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
 	tags-recursive uninstall uninstall-am
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/Mono.Profiler/Mono.Profiler.Widgets/Makefile.am b/Mono.Profiler/Mono.Profiler.Widgets/Makefile.am
index 7b91e6b..f0bf1ec 100644
--- a/Mono.Profiler/Mono.Profiler.Widgets/Makefile.am
+++ b/Mono.Profiler/Mono.Profiler.Widgets/Makefile.am
@@ -9,7 +9,8 @@ CSFLAGS =  -noconfig -codepage:utf8 -warn:4
 ASSEMBLY_MDB = 
 endif
 
-pkglib_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
+programfilesdir = $(pkglibdir)
+programfiles_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
 
 CLEANFILES = $(ASSEMBLY) $(ASSEMBLY_MDB)
 
diff --git a/Mono.Profiler/Mono.Profiler.Widgets/Makefile.in b/Mono.Profiler/Mono.Profiler.Widgets/Makefile.in
index 3e1d0c7..4be09f3 100644
--- a/Mono.Profiler/Mono.Profiler.Widgets/Makefile.in
+++ b/Mono.Profiler/Mono.Profiler.Widgets/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,9 +16,27 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -39,19 +58,45 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(pkglibdir)"
-pkglibDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(pkglib_DATA)
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(programfilesdir)"
+DATA = $(programfiles_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -113,6 +158,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -126,9 +172,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -204,7 +253,8 @@ ASSEMBLY = $(BUILDDIR)/Mono.Profiler.Widgets.dll
 @ENABLE_DEBUG_TRUE at CSFLAGS = -noconfig -codepage:utf8 -warn:4 -debug -define:DEBUG
 @ENABLE_DEBUG_FALSE at ASSEMBLY_MDB = 
 @ENABLE_DEBUG_TRUE at ASSEMBLY_MDB = $(ASSEMBLY).mdb
-pkglib_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
+programfilesdir = $(pkglibdir)
+programfiles_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
 CLEANFILES = $(ASSEMBLY) $(ASSEMBLY_MDB)
 FILES = \
 	AllocationsStore.cs \
@@ -250,14 +300,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Mono.Profiler/Mono.Profiler.Widgets/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  Mono.Profiler/Mono.Profiler.Widgets/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Mono.Profiler/Mono.Profiler.Widgets/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu Mono.Profiler/Mono.Profiler.Widgets/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -275,23 +325,28 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-install-pkglibDATA: $(pkglib_DATA)
+$(am__aclocal_m4_deps):
+install-programfilesDATA: $(programfiles_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
-	@list='$(pkglib_DATA)'; for p in $$list; do \
+	@list='$(programfiles_DATA)'; test -n "$(programfilesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(programfilesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(programfilesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(pkglibDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkglibdir)/$$f'"; \
-	  $(pkglibDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkglibdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(programfilesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(programfilesdir)" || exit $$?; \
 	done
 
-uninstall-pkglibDATA:
+uninstall-programfilesDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(pkglib_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
-	done
+	@list='$(programfiles_DATA)'; test -n "$(programfilesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(programfilesdir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -315,13 +370,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -329,7 +388,7 @@ check-am: all-am
 check: check-am
 all-am: Makefile $(DATA)
 installdirs:
-	for dir in "$(DESTDIR)$(pkglibdir)"; do \
+	for dir in "$(DESTDIR)$(programfilesdir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-am
@@ -342,10 +401,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -353,6 +417,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -371,26 +436,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
-install-data-am:
+install-data-am: install-programfilesDATA
 
 install-dvi: install-dvi-am
 
-install-exec-am: install-pkglibDATA
+install-dvi-am:
+
+install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -409,7 +486,7 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-pkglibDATA
+uninstall-am: uninstall-programfilesDATA
 
 .MAKE: install-am install-strip
 
@@ -418,16 +495,17 @@ uninstall-am: uninstall-pkglibDATA
 	install install-am install-data install-data-am install-dvi \
 	install-dvi-am install-exec install-exec-am install-html \
 	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-pkglibDATA install-ps \
+	install-pdf install-pdf-am install-programfilesDATA install-ps \
 	install-ps-am install-strip installcheck installcheck-am \
 	installdirs maintainer-clean maintainer-clean-generic \
 	mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
-	uninstall-am uninstall-pkglibDATA
+	uninstall-am uninstall-programfilesDATA
 
 
 $(ASSEMBLY) $(ASSEMBLY_MDB): $(build_sources) $(build_resources)
 	mkdir -p $(BUILDDIR)
 	$(GMCS) $(CSFLAGS) -out:$(ASSEMBLY) -target:library $(build_sources) $(build_resources_args) $(build_references)
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/Mono.Profiler/heap-snapshot-explorer/Makefile.am b/Mono.Profiler/heap-snapshot-explorer/Makefile.am
index 2bb2401..a9f34a3 100644
--- a/Mono.Profiler/heap-snapshot-explorer/Makefile.am
+++ b/Mono.Profiler/heap-snapshot-explorer/Makefile.am
@@ -9,7 +9,8 @@ CSFLAGS =  -noconfig -codepage:utf8 -warn:4 -optimize+
 ASSEMBLY_MDB = 
 endif
 
-pkglib_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
+programfilesdir = $(pkglibdir)
+programfiles_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
 
 CLEANFILES = $(ASSEMBLY) $(ASSEMBLY_MDB)
 
diff --git a/Mono.Profiler/heap-snapshot-explorer/Makefile.in b/Mono.Profiler/heap-snapshot-explorer/Makefile.in
index 0aa0f9d..cdfbfd5 100644
--- a/Mono.Profiler/heap-snapshot-explorer/Makefile.in
+++ b/Mono.Profiler/heap-snapshot-explorer/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,9 +16,27 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -39,19 +58,45 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(pkglibdir)"
-pkglibDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(pkglib_DATA)
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(programfilesdir)"
+DATA = $(programfiles_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -113,6 +158,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -126,9 +172,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -204,7 +253,8 @@ ASSEMBLY = $(BUILDDIR)/mprof-heap-snapshot-explorer.dll
 @ENABLE_DEBUG_TRUE at CSFLAGS = -noconfig -codepage:utf8 -warn:4 -optimize+ -debug "-define:DEBUG"
 @ENABLE_DEBUG_FALSE at ASSEMBLY_MDB = 
 @ENABLE_DEBUG_TRUE at ASSEMBLY_MDB = $(ASSEMBLY).mdb
-pkglib_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
+programfilesdir = $(pkglibdir)
+programfiles_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
 CLEANFILES = $(ASSEMBLY) $(ASSEMBLY_MDB)
 FILES = \
 	AssemblyInfo.cs \
@@ -242,14 +292,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Mono.Profiler/heap-snapshot-explorer/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  Mono.Profiler/heap-snapshot-explorer/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Mono.Profiler/heap-snapshot-explorer/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu Mono.Profiler/heap-snapshot-explorer/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -267,23 +317,28 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-install-pkglibDATA: $(pkglib_DATA)
+$(am__aclocal_m4_deps):
+install-programfilesDATA: $(programfiles_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
-	@list='$(pkglib_DATA)'; for p in $$list; do \
+	@list='$(programfiles_DATA)'; test -n "$(programfilesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(programfilesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(programfilesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(pkglibDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkglibdir)/$$f'"; \
-	  $(pkglibDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkglibdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(programfilesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(programfilesdir)" || exit $$?; \
 	done
 
-uninstall-pkglibDATA:
+uninstall-programfilesDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(pkglib_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
-	done
+	@list='$(programfiles_DATA)'; test -n "$(programfilesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(programfilesdir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -307,13 +362,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -321,7 +380,7 @@ check-am: all-am
 check: check-am
 all-am: Makefile $(DATA)
 installdirs:
-	for dir in "$(DESTDIR)$(pkglibdir)"; do \
+	for dir in "$(DESTDIR)$(programfilesdir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-am
@@ -334,10 +393,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -345,6 +409,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -363,26 +428,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
-install-data-am:
+install-data-am: install-programfilesDATA
 
 install-dvi: install-dvi-am
 
-install-exec-am: install-pkglibDATA
+install-dvi-am:
+
+install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -401,7 +478,7 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-pkglibDATA
+uninstall-am: uninstall-programfilesDATA
 
 .MAKE: install-am install-strip
 
@@ -410,16 +487,17 @@ uninstall-am: uninstall-pkglibDATA
 	install install-am install-data install-data-am install-dvi \
 	install-dvi-am install-exec install-exec-am install-html \
 	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-pkglibDATA install-ps \
+	install-pdf install-pdf-am install-programfilesDATA install-ps \
 	install-ps-am install-strip installcheck installcheck-am \
 	installdirs maintainer-clean maintainer-clean-generic \
 	mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
-	uninstall-am uninstall-pkglibDATA
+	uninstall-am uninstall-programfilesDATA
 
 
 $(ASSEMBLY) $(ASSEMBLY_MDB): $(build_sources) $(build_resources) $(PROJECT_REFERENCES)
 	mkdir -p $(BUILDDIR)
 	$(GMCS) $(CSFLAGS) -out:$(ASSEMBLY) -target:library $(build_sources) $(build_resources_args) $(build_references)
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/Mono.Profiler/heap-snapshot-viewer/Makefile.am b/Mono.Profiler/heap-snapshot-viewer/Makefile.am
index 3b488be..f7b0888 100644
--- a/Mono.Profiler/heap-snapshot-viewer/Makefile.am
+++ b/Mono.Profiler/heap-snapshot-viewer/Makefile.am
@@ -8,7 +8,8 @@ CSFLAGS =  -noconfig -codepage:utf8 -warn:4 -optimize+
 ASSEMBLY_MDB = 
 endif
 
-pkglib_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
+programfilesdir = $(pkglibdir)
+programfiles_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
 bin_SCRIPTS = mprof-heap-viewer
 man_MANS=man/man1/mprof-heap-viewer.1
 
diff --git a/Mono.Profiler/heap-snapshot-viewer/Makefile.in b/Mono.Profiler/heap-snapshot-viewer/Makefile.in
index 654181b..9b351c3 100644
--- a/Mono.Profiler/heap-snapshot-viewer/Makefile.in
+++ b/Mono.Profiler/heap-snapshot-viewer/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,25 +60,50 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES = mprof-heap-viewer
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \
-	"$(DESTDIR)$(pkglibdir)"
-binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
+	"$(DESTDIR)$(programfilesdir)"
 SCRIPTS = $(bin_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 man1dir = $(mandir)/man1
 NROFF = nroff
 MANS = $(man_MANS)
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-pkglibDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(pkglib_DATA)
+DATA = $(programfiles_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -121,6 +165,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -134,9 +179,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -211,7 +259,8 @@ ASSEMBLY = $(top_builddir)/Mono.Profiler/lib/mprof-heap-viewer.exe
 @ENABLE_DEBUG_TRUE at CSFLAGS = -noconfig -codepage:utf8 -warn:4 -optimize+ -debug "-define:DEBUG"
 @ENABLE_DEBUG_FALSE at ASSEMBLY_MDB = 
 @ENABLE_DEBUG_TRUE at ASSEMBLY_MDB = $(ASSEMBLY).mdb
-pkglib_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
+programfilesdir = $(pkglibdir)
+programfiles_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
 bin_SCRIPTS = mprof-heap-viewer
 man_MANS = man/man1/mprof-heap-viewer.1
 CLEANFILES = $(ASSEMBLY) $(ASSEMBLY_MDB)
@@ -250,14 +299,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Mono.Profiler/heap-snapshot-viewer/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  Mono.Profiler/heap-snapshot-viewer/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Mono.Profiler/heap-snapshot-viewer/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu Mono.Profiler/heap-snapshot-viewer/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -275,89 +324,108 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 mprof-heap-viewer: $(top_builddir)/config.status $(srcdir)/mprof-heap-viewer.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-binSCRIPTS: $(bin_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-	    $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-binSCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
-	done
-install-man1: $(man1_MANS) $(man_MANS)
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
+install-man1: $(man_MANS)
 	@$(NORMAL_INSTALL)
-	test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
-	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-	for i in $$l2; do \
-	  case "$$i" in \
-	    *.1*) list="$$list $$i" ;; \
-	  esac; \
+	@list1=''; \
+	list2='$(man_MANS)'; \
+	test -n "$(man1dir)" \
+	  && test -n "`echo $$list1$$list2`" \
+	  || exit 0; \
+	echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+	$(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+	{ for i in $$list1; do echo "$$i"; done;  \
+	if test -n "$$list2"; then \
+	  for i in $$list2; do echo "$$i"; done \
+	    | sed -n '/\.1[a-z]*$$/p'; \
+	fi; \
+	} | while read p; do \
+	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; echo "$$p"; \
+	done | \
+	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+	sed 'N;N;s,\n, ,g' | { \
+	list=; while read file base inst; do \
+	  if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+	    echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+	    $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+	  fi; \
 	done; \
-	for i in $$list; do \
-	  if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
-	  else file=$$i; fi; \
-	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-	  case "$$ext" in \
-	    1*) ;; \
-	    *) ext='1' ;; \
-	  esac; \
-	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
-	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-	  echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
-	  $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
-	done
+	for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+	while read files; do \
+	  test -z "$$files" || { \
+	    echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+	    $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+	done; }
+
 uninstall-man1:
 	@$(NORMAL_UNINSTALL)
-	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-	for i in $$l2; do \
-	  case "$$i" in \
-	    *.1*) list="$$list $$i" ;; \
-	  esac; \
-	done; \
-	for i in $$list; do \
-	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-	  case "$$ext" in \
-	    1*) ;; \
-	    *) ext='1' ;; \
-	  esac; \
-	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
-	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-	  echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
-	  rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
-	done
-install-pkglibDATA: $(pkglib_DATA)
+	@list=''; test -n "$(man1dir)" || exit 0; \
+	files=`{ for i in $$list; do echo "$$i"; done; \
+	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+	  sed -n '/\.1[a-z]*$$/p'; \
+	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+	dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+install-programfilesDATA: $(programfiles_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
-	@list='$(pkglib_DATA)'; for p in $$list; do \
+	@list='$(programfiles_DATA)'; test -n "$(programfilesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(programfilesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(programfilesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(pkglibDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkglibdir)/$$f'"; \
-	  $(pkglibDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkglibdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(programfilesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(programfilesdir)" || exit $$?; \
 	done
 
-uninstall-pkglibDATA:
+uninstall-programfilesDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(pkglib_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
-	done
+	@list='$(programfiles_DATA)'; test -n "$(programfilesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(programfilesdir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -366,6 +434,19 @@ CTAGS:
 
 
 distdir: $(DISTFILES)
+	@list='$(MANS)'; if test -n "$$list"; then \
+	  list=`for p in $$list; do \
+	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+	  if test -n "$$list" && \
+	    grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+	    echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
+	    echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
+	    exit 1; \
+	  else :; fi; \
+	else :; fi
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -381,13 +462,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -395,7 +480,7 @@ check-am: all-am
 check: check-am
 all-am: Makefile $(SCRIPTS) $(MANS) $(DATA)
 installdirs:
-	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(pkglibdir)"; do \
+	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(programfilesdir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-am
@@ -408,10 +493,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -419,6 +509,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -437,26 +528,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
-install-data-am: install-man
+install-data-am: install-man install-programfilesDATA
 
 install-dvi: install-dvi-am
 
-install-exec-am: install-binSCRIPTS install-pkglibDATA
+install-dvi-am:
+
+install-exec-am: install-binSCRIPTS
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man: install-man1
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -475,7 +578,8 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-binSCRIPTS uninstall-man uninstall-pkglibDATA
+uninstall-am: uninstall-binSCRIPTS uninstall-man \
+	uninstall-programfilesDATA
 
 uninstall-man: uninstall-man1
 
@@ -487,17 +591,18 @@ uninstall-man: uninstall-man1
 	install-data-am install-dvi install-dvi-am install-exec \
 	install-exec-am install-html install-html-am install-info \
 	install-info-am install-man install-man1 install-pdf \
-	install-pdf-am install-pkglibDATA install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \
-	uninstall-binSCRIPTS uninstall-man uninstall-man1 \
-	uninstall-pkglibDATA
+	install-pdf-am install-programfilesDATA install-ps \
+	install-ps-am install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+	uninstall-am uninstall-binSCRIPTS uninstall-man uninstall-man1 \
+	uninstall-programfilesDATA
 
 
 $(ASSEMBLY) $(ASSEMBLY_MDB): $(build_sources) $(build_resources) $(PROJECT_REFERENCES)
 	mkdir -p $(shell dirname $(ASSEMBLY))
 	$(GMCS) $(CSFLAGS) -out:$(ASSEMBLY) -target:exe $(build_sources) $(build_resources_args) $(build_references)
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/Mono.Profiler/mprof-gui/Makefile.am b/Mono.Profiler/mprof-gui/Makefile.am
index 5b00ea9..0369c2c 100644
--- a/Mono.Profiler/mprof-gui/Makefile.am
+++ b/Mono.Profiler/mprof-gui/Makefile.am
@@ -8,7 +8,8 @@ CSFLAGS =  -noconfig -codepage:utf8 -warn:4
 ASSEMBLY_MDB = 
 endif
 
-pkglib_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
+programfilesdir = $(pkglibdir)
+programfiles_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
 bin_SCRIPTS = emveepee
 
 CLEANFILES = $(ASSEMBLY) $(ASSEMBLY_MDB)
diff --git a/Mono.Profiler/mprof-gui/Makefile.in b/Mono.Profiler/mprof-gui/Makefile.in
index 6339d99..9fdc3d5 100644
--- a/Mono.Profiler/mprof-gui/Makefile.in
+++ b/Mono.Profiler/mprof-gui/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,21 +60,46 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES = emveepee
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkglibdir)"
-binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
-SCRIPTS = $(bin_SCRIPTS)
-SOURCES =
-DIST_SOURCES =
+CONFIG_CLEAN_VPATH_FILES =
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-pkglibDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(pkglib_DATA)
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(programfilesdir)"
+SCRIPTS = $(bin_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+DATA = $(programfiles_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -117,6 +161,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -130,9 +175,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -207,7 +255,8 @@ ASSEMBLY = $(top_builddir)/Mono.Profiler/lib/emveepee.exe
 @ENABLE_DEBUG_TRUE at CSFLAGS = -noconfig -codepage:utf8 -warn:4 -debug "-define:DEBUG"
 @ENABLE_DEBUG_FALSE at ASSEMBLY_MDB = 
 @ENABLE_DEBUG_TRUE at ASSEMBLY_MDB = $(ASSEMBLY).mdb
-pkglib_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
+programfilesdir = $(pkglibdir)
+programfiles_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
 bin_SCRIPTS = emveepee
 CLEANFILES = $(ASSEMBLY) $(ASSEMBLY_MDB)
 FILES = \
@@ -238,14 +287,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Mono.Profiler/mprof-gui/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  Mono.Profiler/mprof-gui/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Mono.Profiler/mprof-gui/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu Mono.Profiler/mprof-gui/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -263,44 +312,65 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 emveepee: $(top_builddir)/config.status $(srcdir)/emveepee.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-binSCRIPTS: $(bin_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-	    $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-binSCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
-	done
-install-pkglibDATA: $(pkglib_DATA)
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
+install-programfilesDATA: $(programfiles_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
-	@list='$(pkglib_DATA)'; for p in $$list; do \
+	@list='$(programfiles_DATA)'; test -n "$(programfilesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(programfilesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(programfilesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(pkglibDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkglibdir)/$$f'"; \
-	  $(pkglibDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkglibdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(programfilesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(programfilesdir)" || exit $$?; \
 	done
 
-uninstall-pkglibDATA:
+uninstall-programfilesDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(pkglib_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
-	done
+	@list='$(programfiles_DATA)'; test -n "$(programfilesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(programfilesdir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -324,13 +394,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -338,7 +412,7 @@ check-am: all-am
 check: check-am
 all-am: Makefile $(SCRIPTS) $(DATA)
 installdirs:
-	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkglibdir)"; do \
+	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(programfilesdir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-am
@@ -351,10 +425,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -362,6 +441,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -380,26 +460,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
-install-data-am:
+install-data-am: install-programfilesDATA
 
 install-dvi: install-dvi-am
 
-install-exec-am: install-binSCRIPTS install-pkglibDATA
+install-dvi-am:
+
+install-exec-am: install-binSCRIPTS
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -418,7 +510,7 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-binSCRIPTS uninstall-pkglibDATA
+uninstall-am: uninstall-binSCRIPTS uninstall-programfilesDATA
 
 .MAKE: install-am install-strip
 
@@ -428,16 +520,17 @@ uninstall-am: uninstall-binSCRIPTS uninstall-pkglibDATA
 	install-data-am install-dvi install-dvi-am install-exec \
 	install-exec-am install-html install-html-am install-info \
 	install-info-am install-man install-pdf install-pdf-am \
-	install-pkglibDATA install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
-	pdf-am ps ps-am uninstall uninstall-am uninstall-binSCRIPTS \
-	uninstall-pkglibDATA
+	install-programfilesDATA install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \
+	uninstall-binSCRIPTS uninstall-programfilesDATA
 
 
 $(ASSEMBLY) $(ASSEMBLY_MDB): $(build_sources) $(build_resources) $(PROJECT_REFERENCES)
 	mkdir -p $(shell dirname $(ASSEMBLY))
 	$(GMCS) $(CSFLAGS) -out:$(ASSEMBLY) -target:exe $(build_sources) $(build_resources_args) $(build_references)
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/Mono.Profiler/profiler-decoder-library/Makefile.am b/Mono.Profiler/profiler-decoder-library/Makefile.am
index 115f1a7..71d49ac 100644
--- a/Mono.Profiler/profiler-decoder-library/Makefile.am
+++ b/Mono.Profiler/profiler-decoder-library/Makefile.am
@@ -9,7 +9,8 @@ CSFLAGS =  -noconfig -codepage:utf8 -warn:4 -optimize+
 ASSEMBLY_MDB = 
 endif
 
-pkglib_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
+programfilesdir = $(pkglibdir)
+programfiles_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
 
 CLEANFILES = $(ASSEMBLY) $(ASSEMBLY_MDB)
 
diff --git a/Mono.Profiler/profiler-decoder-library/Makefile.in b/Mono.Profiler/profiler-decoder-library/Makefile.in
index fb85e9a..f1be68a 100644
--- a/Mono.Profiler/profiler-decoder-library/Makefile.in
+++ b/Mono.Profiler/profiler-decoder-library/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,9 +16,27 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -39,19 +58,45 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(pkglibdir)"
-pkglibDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(pkglib_DATA)
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(programfilesdir)"
+DATA = $(programfiles_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -113,6 +158,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -126,9 +172,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -204,7 +253,8 @@ ASSEMBLY = $(BUILDDIR)/mprof-decoder-library.dll
 @ENABLE_DEBUG_TRUE at CSFLAGS = -noconfig -codepage:utf8 -warn:4 -optimize+ -debug -define:DEBUG
 @ENABLE_DEBUG_FALSE at ASSEMBLY_MDB = 
 @ENABLE_DEBUG_TRUE at ASSEMBLY_MDB = $(ASSEMBLY).mdb
-pkglib_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
+programfilesdir = $(pkglibdir)
+programfiles_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
 CLEANFILES = $(ASSEMBLY) $(ASSEMBLY_MDB)
 FILES = \
 	AssemblyInfo.cs \
@@ -227,14 +277,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Mono.Profiler/profiler-decoder-library/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  Mono.Profiler/profiler-decoder-library/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Mono.Profiler/profiler-decoder-library/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu Mono.Profiler/profiler-decoder-library/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -252,23 +302,28 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-install-pkglibDATA: $(pkglib_DATA)
+$(am__aclocal_m4_deps):
+install-programfilesDATA: $(programfiles_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
-	@list='$(pkglib_DATA)'; for p in $$list; do \
+	@list='$(programfiles_DATA)'; test -n "$(programfilesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(programfilesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(programfilesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(pkglibDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkglibdir)/$$f'"; \
-	  $(pkglibDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkglibdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(programfilesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(programfilesdir)" || exit $$?; \
 	done
 
-uninstall-pkglibDATA:
+uninstall-programfilesDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(pkglib_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
-	done
+	@list='$(programfiles_DATA)'; test -n "$(programfilesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(programfilesdir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -292,13 +347,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -306,7 +365,7 @@ check-am: all-am
 check: check-am
 all-am: Makefile $(DATA)
 installdirs:
-	for dir in "$(DESTDIR)$(pkglibdir)"; do \
+	for dir in "$(DESTDIR)$(programfilesdir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-am
@@ -319,10 +378,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -330,6 +394,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -348,26 +413,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
-install-data-am:
+install-data-am: install-programfilesDATA
 
 install-dvi: install-dvi-am
 
-install-exec-am: install-pkglibDATA
+install-dvi-am:
+
+install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -386,7 +463,7 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-pkglibDATA
+uninstall-am: uninstall-programfilesDATA
 
 .MAKE: install-am install-strip
 
@@ -395,16 +472,17 @@ uninstall-am: uninstall-pkglibDATA
 	install install-am install-data install-data-am install-dvi \
 	install-dvi-am install-exec install-exec-am install-html \
 	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-pkglibDATA install-ps \
+	install-pdf install-pdf-am install-programfilesDATA install-ps \
 	install-ps-am install-strip installcheck installcheck-am \
 	installdirs maintainer-clean maintainer-clean-generic \
 	mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
-	uninstall-am uninstall-pkglibDATA
+	uninstall-am uninstall-programfilesDATA
 
 
 $(ASSEMBLY) $(ASSEMBLY_MDB): $(build_sources) 
 	mkdir -p $(BUILDDIR)
 	$(GMCS) $(CSFLAGS) -out:$(ASSEMBLY) -target:library $(build_sources) $(build_references)
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/Mono.Profiler/profiler-file-decoder/Makefile.am b/Mono.Profiler/profiler-file-decoder/Makefile.am
index 285267f..2365dc7 100644
--- a/Mono.Profiler/profiler-file-decoder/Makefile.am
+++ b/Mono.Profiler/profiler-file-decoder/Makefile.am
@@ -9,7 +9,8 @@ CSFLAGS = -noconfig -codepage:utf8 -warn:4 -optimize+
 ASSEMBLY_MDB = 
 endif
 
-pkglib_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
+programfilesdir = $(pkglibdir)
+programfiles_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
 bin_SCRIPTS = mprof-decoder
 man_MANS = man/man1/mprof-decoder.1 
 
diff --git a/Mono.Profiler/profiler-file-decoder/Makefile.in b/Mono.Profiler/profiler-file-decoder/Makefile.in
index ecabd83..9728818 100644
--- a/Mono.Profiler/profiler-file-decoder/Makefile.in
+++ b/Mono.Profiler/profiler-file-decoder/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,25 +60,50 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES = mprof-decoder
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \
-	"$(DESTDIR)$(pkglibdir)"
-binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
+	"$(DESTDIR)$(programfilesdir)"
 SCRIPTS = $(bin_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 man1dir = $(mandir)/man1
 NROFF = nroff
 MANS = $(man_MANS)
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-pkglibDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(pkglib_DATA)
+DATA = $(programfiles_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -121,6 +165,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -134,9 +179,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -212,7 +260,8 @@ ASSEMBLY = $(BUILDDIR)/mprof-decoder.exe
 @ENABLE_DEBUG_TRUE at CSFLAGS = -noconfig -codepage:utf8 -warn:4 -optimize+ -debug -define:DEBUG
 @ENABLE_DEBUG_FALSE at ASSEMBLY_MDB = 
 @ENABLE_DEBUG_TRUE at ASSEMBLY_MDB = $(ASSEMBLY).mdb
-pkglib_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
+programfilesdir = $(pkglibdir)
+programfiles_DATA = $(ASSEMBLY) $(ASSEMBLY_MDB)
 bin_SCRIPTS = mprof-decoder
 man_MANS = man/man1/mprof-decoder.1 
 CLEANFILES = $(ASSEMBLY) $(ASSEMBLY_MDB)
@@ -231,14 +280,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Mono.Profiler/profiler-file-decoder/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  Mono.Profiler/profiler-file-decoder/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Mono.Profiler/profiler-file-decoder/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu Mono.Profiler/profiler-file-decoder/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -256,89 +305,108 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 mprof-decoder: $(top_builddir)/config.status $(srcdir)/mprof-decoder.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-binSCRIPTS: $(bin_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-	    $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-binSCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
-	done
-install-man1: $(man1_MANS) $(man_MANS)
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
+install-man1: $(man_MANS)
 	@$(NORMAL_INSTALL)
-	test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
-	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-	for i in $$l2; do \
-	  case "$$i" in \
-	    *.1*) list="$$list $$i" ;; \
-	  esac; \
+	@list1=''; \
+	list2='$(man_MANS)'; \
+	test -n "$(man1dir)" \
+	  && test -n "`echo $$list1$$list2`" \
+	  || exit 0; \
+	echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+	$(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+	{ for i in $$list1; do echo "$$i"; done;  \
+	if test -n "$$list2"; then \
+	  for i in $$list2; do echo "$$i"; done \
+	    | sed -n '/\.1[a-z]*$$/p'; \
+	fi; \
+	} | while read p; do \
+	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; echo "$$p"; \
+	done | \
+	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+	sed 'N;N;s,\n, ,g' | { \
+	list=; while read file base inst; do \
+	  if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+	    echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+	    $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+	  fi; \
 	done; \
-	for i in $$list; do \
-	  if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
-	  else file=$$i; fi; \
-	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-	  case "$$ext" in \
-	    1*) ;; \
-	    *) ext='1' ;; \
-	  esac; \
-	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
-	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-	  echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
-	  $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
-	done
+	for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+	while read files; do \
+	  test -z "$$files" || { \
+	    echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+	    $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+	done; }
+
 uninstall-man1:
 	@$(NORMAL_UNINSTALL)
-	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-	for i in $$l2; do \
-	  case "$$i" in \
-	    *.1*) list="$$list $$i" ;; \
-	  esac; \
-	done; \
-	for i in $$list; do \
-	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-	  case "$$ext" in \
-	    1*) ;; \
-	    *) ext='1' ;; \
-	  esac; \
-	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
-	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-	  echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
-	  rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
-	done
-install-pkglibDATA: $(pkglib_DATA)
+	@list=''; test -n "$(man1dir)" || exit 0; \
+	files=`{ for i in $$list; do echo "$$i"; done; \
+	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+	  sed -n '/\.1[a-z]*$$/p'; \
+	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+	dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+install-programfilesDATA: $(programfiles_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
-	@list='$(pkglib_DATA)'; for p in $$list; do \
+	@list='$(programfiles_DATA)'; test -n "$(programfilesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(programfilesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(programfilesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(pkglibDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkglibdir)/$$f'"; \
-	  $(pkglibDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkglibdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(programfilesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(programfilesdir)" || exit $$?; \
 	done
 
-uninstall-pkglibDATA:
+uninstall-programfilesDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(pkglib_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
-	done
+	@list='$(programfiles_DATA)'; test -n "$(programfilesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(programfilesdir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -347,6 +415,19 @@ CTAGS:
 
 
 distdir: $(DISTFILES)
+	@list='$(MANS)'; if test -n "$$list"; then \
+	  list=`for p in $$list; do \
+	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+	  if test -n "$$list" && \
+	    grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+	    echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
+	    echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
+	    exit 1; \
+	  else :; fi; \
+	else :; fi
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -362,13 +443,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -376,7 +461,7 @@ check-am: all-am
 check: check-am
 all-am: Makefile $(SCRIPTS) $(MANS) $(DATA)
 installdirs:
-	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(pkglibdir)"; do \
+	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(programfilesdir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-am
@@ -389,10 +474,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -400,6 +490,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -418,26 +509,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
-install-data-am: install-man
+install-data-am: install-man install-programfilesDATA
 
 install-dvi: install-dvi-am
 
-install-exec-am: install-binSCRIPTS install-pkglibDATA
+install-dvi-am:
+
+install-exec-am: install-binSCRIPTS
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man: install-man1
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -456,7 +559,8 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-binSCRIPTS uninstall-man uninstall-pkglibDATA
+uninstall-am: uninstall-binSCRIPTS uninstall-man \
+	uninstall-programfilesDATA
 
 uninstall-man: uninstall-man1
 
@@ -468,17 +572,18 @@ uninstall-man: uninstall-man1
 	install-data-am install-dvi install-dvi-am install-exec \
 	install-exec-am install-html install-html-am install-info \
 	install-info-am install-man install-man1 install-pdf \
-	install-pdf-am install-pkglibDATA install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \
-	uninstall-binSCRIPTS uninstall-man uninstall-man1 \
-	uninstall-pkglibDATA
+	install-pdf-am install-programfilesDATA install-ps \
+	install-ps-am install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+	uninstall-am uninstall-binSCRIPTS uninstall-man uninstall-man1 \
+	uninstall-programfilesDATA
 
 
 $(ASSEMBLY) $(ASSEMBLY_MDB): $(build_sources) $(DLL_REFERENCES) $(PROJECT_REFERENCES)
 	mkdir -p $(shell dirname $(ASSEMBLY))
 	$(GMCS) $(CSFLAGS) -out:$(ASSEMBLY) -target:exe $(build_sources) $(build_references)
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/README b/README
index 3ad3752..a01a518 100644
--- a/README
+++ b/README
@@ -23,3 +23,12 @@ automatically executed):
     make
     make install
 
+Building on OSX with homebrew:
+------------------------------
+
+Have the following packages installed:
+autoconf pkg-config	readline automake gettext glib intltool libtool
+
+Run autogen like this:
+PKG_CONFIG_PATH=/Library/Frameworks/Mono.framework/Versions/Current/lib/pkgconfig/ ./autogen.sh 
+
diff --git a/aclocal.m4 b/aclocal.m4
index 63befff..0c6c8e8 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,7 +1,8 @@
-# generated automatically by aclocal 1.10.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.11.6 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
+# Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -13,8 +14,8 @@
 
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(AC_AUTOCONF_VERSION, [2.63],,
-[m4_warning([this file was generated for autoconf 2.63.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
 You have another version of autoconf.  It may work, but is not guaranteed to.
 If you have problems, you may need to regenerate the build system entirely.
 To do so, use the procedure documented by the package, typically `autoreconf'.])])
@@ -260,6 +261,10 @@ msgstr ""
 	      [CATOBJEXT=.mo
                DATADIRNAME=lib])
 	    ;;
+	    *-*-openbsd*)
+	    CATOBJEXT=.mo
+            DATADIRNAME=share
+	    ;;
 	    *)
 	    CATOBJEXT=.mo
             DATADIRNAME=lib
@@ -301,7 +306,7 @@ msgstr ""
 
     dnl These rules are solely for the distribution goal.  While doing this
     dnl we only have to keep exactly one list of the available catalogs
-    dnl in configure.in.
+    dnl in configure.ac.
     for lang in $ALL_LINGUAS; do
       GMOFILES="$GMOFILES $lang.gmo"
       POFILES="$POFILES $lang.po"
@@ -374,6 +379,18 @@ glib_DEFUN([GLIB_GNU_GETTEXT],
      fi
    fi
 
+   dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
+   dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
+   dnl Try to locate is.
+   MKINSTALLDIRS=
+   if test -n "$ac_aux_dir"; then
+     MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+   fi
+   if test -z "$MKINSTALLDIRS"; then
+     MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+   fi
+   AC_SUBST(MKINSTALLDIRS)
+
    dnl Generate list of files to be processed by xgettext which will
    dnl be included in po/Makefile.
    test -d po || mkdir po
@@ -418,7 +435,7 @@ AC_DEFINE_UNQUOTED($1, "$localedir",
 dnl
 dnl Now the definitions that aclocal will find
 dnl
-ifdef(glib_configure_in,[],[
+ifdef(glib_configure_ac,[],[
 AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)])
 AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)])
 ])dnl
@@ -441,6 +458,7 @@ fi])
 
 
 # pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
+# serial 1 (pkg-config-0.24)
 # 
 # Copyright © 2004 Scott James Remnant <scott at netsplit.com>.
 #
@@ -467,8 +485,12 @@ fi])
 # ----------------------------------
 AC_DEFUN([PKG_PROG_PKG_CONFIG],
 [m4_pattern_forbid([^_?PKG_[A-Z_]+$])
-m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
-AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
+m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
+AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
+AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
+
 if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
 	AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
 fi
@@ -481,7 +503,6 @@ if test -n "$PKG_CONFIG"; then
 		AC_MSG_RESULT([no])
 		PKG_CONFIG=""
 	fi
-		
 fi[]dnl
 ])# PKG_PROG_PKG_CONFIG
 
@@ -490,21 +511,20 @@ fi[]dnl
 # Check to see whether a particular set of modules exists.  Similar
 # to PKG_CHECK_MODULES(), but does not set variables or print errors.
 #
-#
-# Similar to PKG_CHECK_MODULES, make sure that the first instance of
-# this or PKG_CHECK_MODULES is called, or make sure to call
-# PKG_CHECK_EXISTS manually
+# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+# only at the first occurence in configure.ac, so if the first place
+# it's called might be skipped (such as if it is within an "if", you
+# have to call PKG_CHECK_EXISTS manually
 # --------------------------------------------------------------
 AC_DEFUN([PKG_CHECK_EXISTS],
 [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
 if test -n "$PKG_CONFIG" && \
     AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
-  m4_ifval([$2], [$2], [:])
+  m4_default([$2], [:])
 m4_ifvaln([$3], [else
   $3])dnl
 fi])
 
-
 # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
 # ---------------------------------------------
 m4_define([_PKG_CONFIG],
@@ -512,7 +532,8 @@ m4_define([_PKG_CONFIG],
     pkg_cv_[]$1="$$1"
  elif test -n "$PKG_CONFIG"; then
     PKG_CHECK_EXISTS([$3],
-                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes ],
 		     [pkg_failed=yes])
  else
     pkg_failed=untried
@@ -557,16 +578,17 @@ and $1[]_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.])
 
 if test $pkg_failed = yes; then
+   	AC_MSG_RESULT([no])
         _PKG_SHORT_ERRORS_SUPPORTED
         if test $_pkg_short_errors_supported = yes; then
-	        $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1`
+	        $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
         else 
-	        $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1`
+	        $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
         fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
 
-	ifelse([$4], , [AC_MSG_ERROR(dnl
+	m4_default([$4], [AC_MSG_ERROR(
 [Package requirements ($2) were not met:
 
 $$1_PKG_ERRORS
@@ -574,44 +596,46 @@ $$1_PKG_ERRORS
 Consider adjusting the PKG_CONFIG_PATH environment variable if you
 installed software in a non-standard prefix.
 
-_PKG_TEXT
-])],
-		[AC_MSG_RESULT([no])
-                $4])
+_PKG_TEXT])[]dnl
+        ])
 elif test $pkg_failed = untried; then
-	ifelse([$4], , [AC_MSG_FAILURE(dnl
+     	AC_MSG_RESULT([no])
+	m4_default([$4], [AC_MSG_FAILURE(
 [The pkg-config script could not be found or is too old.  Make sure it
 is in your PATH or set the PKG_CONFIG environment variable to the full
 path to pkg-config.
 
 _PKG_TEXT
 
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.])],
-		[$4])
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
+        ])
 else
 	$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
 	$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
         AC_MSG_RESULT([yes])
-	ifelse([$3], , :, [$3])
+	$3
 fi[]dnl
 ])# PKG_CHECK_MODULES
 
-# Copyright (C) 2002, 2003, 2005, 2006, 2007  Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software
+# Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 1
+
 # AM_AUTOMAKE_VERSION(VERSION)
 # ----------------------------
 # Automake X.Y traces this macro to ensure aclocal.m4 has been
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.10'
+[am__api_version='1.11'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.10.1], [],
+m4_if([$1], [1.11.6], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -625,21 +649,23 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # AM_SET_CURRENT_AUTOMAKE_VERSION
 # -------------------------------
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
-# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.10.1])dnl
+[AM_AUTOMAKE_VERSION([1.11.6])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)])
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 1
+
 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
 # $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
 # `$srcdir', `$srcdir/..', or `$srcdir/../..'.
@@ -687,14 +713,14 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
 # Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 8
+# serial 9
 
 # AM_CONDITIONAL(NAME, SHELL-CONDITION)
 # -------------------------------------
@@ -707,6 +733,7 @@ AC_SUBST([$1_TRUE])dnl
 AC_SUBST([$1_FALSE])dnl
 _AM_SUBST_NOTMAKE([$1_TRUE])dnl
 _AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
 if $2; then
   $1_TRUE=
   $1_FALSE='#'
@@ -720,14 +747,14 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-# Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
+# 2010, 2011 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 9
+# serial 12
 
 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
 # written in clear, in which case automake, when reading aclocal.m4,
@@ -767,6 +794,7 @@ AC_CACHE_CHECK([dependency style of $depcc],
   # instance it was reported that on HP-UX the gcc test will end up
   # making a dummy file named `D' -- because `-MD' means `put the output
   # in D'.
+  rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
   # using a relative directory.
@@ -784,6 +812,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
   if test "$am_compiler_list" = ""; then
      am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
   fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
   for depmode in $am_compiler_list; do
     # Setup a source with many dependencies, because some compilers
     # like to wrap large dependency lists on column 80 (with \), and
@@ -801,7 +839,17 @@ AC_CACHE_CHECK([dependency style of $depcc],
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
     case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
     nosideeffect)
       # after this tag, mechanisms are not by side-effect, so they'll
       # only be used when explicitly requested
@@ -811,19 +859,23 @@ AC_CACHE_CHECK([dependency style of $depcc],
 	break
       fi
       ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
     none) break ;;
     esac
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.
     if depmode=$depmode \
-       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       source=sub/conftest.c object=$am__obj \
        depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
          >/dev/null 2>conftest.err &&
        grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
        grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
       # icc doesn't choke on unknown options, it will just issue warnings
       # or remarks (even with -Werror).  So we grep stderr for any message
@@ -872,65 +924,79 @@ AC_DEFUN([AM_DEP_TRACK],
 if test "x$enable_dependency_tracking" != xno; then
   am_depcomp="$ac_aux_dir/depcomp"
   AMDEPBACKSLASH='\'
+  am__nodep='_no'
 fi
 AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
 AC_SUBST([AMDEPBACKSLASH])dnl
 _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
 ])
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
 # Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-#serial 3
+#serial 5
 
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
 # ------------------------------
 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[for mf in $CONFIG_FILES; do
-  # Strip MF so we end up with the name of the file.
-  mf=`echo "$mf" | sed -e 's/:.*$//'`
-  # Check whether this is an Automake generated Makefile or not.
-  # We used to match only the files named `Makefile.in', but
-  # some people rename them; so instead we look at the file content.
-  # Grep'ing the first line is not enough: some people post-process
-  # each Makefile.in and add a new line on top of each file to say so.
-  # Grep'ing the whole file is not good either: AIX grep has a line
-  # limit of 2048, but all sed's we know have understand at least 4000.
-  if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-    dirpart=`AS_DIRNAME("$mf")`
-  else
-    continue
-  fi
-  # Extract the definition of DEPDIR, am__include, and am__quote
-  # from the Makefile without running `make'.
-  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-  test -z "$DEPDIR" && continue
-  am__include=`sed -n 's/^am__include = //p' < "$mf"`
-  test -z "am__include" && continue
-  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-  # When using ansi2knr, U may be empty or an underscore; expand it
-  U=`sed -n 's/^U = //p' < "$mf"`
-  # Find all dependency output files, they are included files with
-  # $(DEPDIR) in their names.  We invoke sed twice because it is the
-  # simplest approach to changing $(DEPDIR) to its actual value in the
-  # expansion.
-  for file in `sed -n "
-    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
-    # Make sure the directory exists.
-    test -f "$dirpart/$file" && continue
-    fdir=`AS_DIRNAME(["$file"])`
-    AS_MKDIR_P([$dirpart/$fdir])
-    # echo "creating $dirpart/$file"
-    echo '# dummy' > "$dirpart/$file"
+[{
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
   done
-done
+}
 ])# _AM_OUTPUT_DEPENDENCY_COMMANDS
 
 
@@ -950,13 +1016,13 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 # Do all the work for Automake.                             -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008 Free Software Foundation, Inc.
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 13
+# serial 16
 
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
@@ -973,7 +1039,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 # arguments mandatory, and then we can depend on a new Autoconf
 # release and drop the old call support.
 AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.60])dnl
+[AC_PREREQ([2.62])dnl
 dnl Autoconf wants to disallow AM_ names.  We explicitly allow
 dnl the ones we care about.
 m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
@@ -1024,8 +1090,8 @@ AM_MISSING_PROG(AUTOCONF, autoconf)
 AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
 AM_MISSING_PROG(AUTOHEADER, autoheader)
 AM_MISSING_PROG(MAKEINFO, makeinfo)
-AM_PROG_INSTALL_SH
-AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
 AC_REQUIRE([AM_PROG_MKDIR_P])dnl
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
@@ -1033,24 +1099,37 @@ AC_REQUIRE([AC_PROG_AWK])dnl
 AC_REQUIRE([AC_PROG_MAKE_SET])dnl
 AC_REQUIRE([AM_SET_LEADING_DOT])dnl
 _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
-              [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
-	      		     [_AM_PROG_TAR([v7])])])
+	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
 _AM_IF_OPTION([no-dependencies],,
 [AC_PROVIDE_IFELSE([AC_PROG_CC],
-                  [_AM_DEPENDENCIES(CC)],
-                  [define([AC_PROG_CC],
-                          defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+		  [_AM_DEPENDENCIES(CC)],
+		  [define([AC_PROG_CC],
+			  defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_CXX],
-                  [_AM_DEPENDENCIES(CXX)],
-                  [define([AC_PROG_CXX],
-                          defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+		  [_AM_DEPENDENCIES(CXX)],
+		  [define([AC_PROG_CXX],
+			  defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-                  [_AM_DEPENDENCIES(OBJC)],
-                  [define([AC_PROG_OBJC],
-                          defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+		  [_AM_DEPENDENCIES(OBJC)],
+		  [define([AC_PROG_OBJC],
+			  defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
 ])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
 ])
 
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
 
 # When config.status generates a header, we must update the stamp-h file.
 # This file resides in the same directory as the config header
@@ -1073,18 +1152,28 @@ for _am_header in $config_headers :; do
 done
 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation,
+# Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 1
+
 # AM_PROG_INSTALL_SH
 # ------------------
 # Define $install_sh.
 AC_DEFUN([AM_PROG_INSTALL_SH],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
 AC_SUBST(install_sh)])
 
 # Copyright (C) 2003, 2005  Free Software Foundation, Inc.
@@ -1111,27 +1200,38 @@ AC_SUBST([am__leading_dot])])
 # Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
 # From Jim Meyering
 
-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008,
+# 2011 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 4
+# serial 5
 
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless `enable' is passed literally.
+# For symmetry, `disable' may be passed as well.  Anyway, the user
+# can override the default with the --enable/--disable switch.
 AC_DEFUN([AM_MAINTAINER_MODE],
-[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
-  dnl maintainer-mode is disabled by default
-  AC_ARG_ENABLE(maintainer-mode,
-[  --enable-maintainer-mode  enable make rules and dependencies not useful
+[m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t at _MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+[  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
 			  (and sometimes confusing) to the casual installer],
-      USE_MAINTAINER_MODE=$enableval,
-      USE_MAINTAINER_MODE=no)
+      [USE_MAINTAINER_MODE=$enableval],
+      [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
   AC_MSG_RESULT([$USE_MAINTAINER_MODE])
-  AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
   MAINT=$MAINTAINER_MODE_TRUE
-  AC_SUBST(MAINT)dnl
+  AC_SUBST([MAINT])dnl
 ]
 )
 
@@ -1139,13 +1239,13 @@ AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
 
 # Check to see how 'make' treats includes.	            -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 3
+# serial 4
 
 # AM_MAKE_INCLUDE()
 # -----------------
@@ -1154,7 +1254,7 @@ AC_DEFUN([AM_MAKE_INCLUDE],
 [am_make=${MAKE-make}
 cat > confinc << 'END'
 am__doit:
-	@echo done
+	@echo this is the am__doit target
 .PHONY: am__doit
 END
 # If we don't find an include directive, just comment out the code.
@@ -1164,24 +1264,24 @@ am__quote=
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# We grep out `Entering directory' and `Leaving directory'
-# messages which can occur if `w' ends up in MAKEFLAGS.
-# In particular we don't look at `^make:' because GNU make might
-# be invoked under some other name (usually "gmake"), in which
-# case it prints its new name instead of `make'.
-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
-   am__include=include
-   am__quote=
-   _am_result=GNU
-fi
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
 # Now try BSD make style include.
 if test "$am__include" = "#"; then
    echo '.include "confinc"' > confmf
-   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
-      am__include=.include
-      am__quote="\""
-      _am_result=BSD
-   fi
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
 fi
 AC_SUBST([am__include])
 AC_SUBST([am__quote])
@@ -1191,14 +1291,14 @@ rm -f confinc confmf
 
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
 # Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 5
+# serial 6
 
 # AM_MISSING_PROG(NAME, PROGRAM)
 # ------------------------------
@@ -1215,7 +1315,14 @@ AC_SUBST($1)])
 AC_DEFUN([AM_MISSING_HAS_RUN],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
 AC_REQUIRE_AUX_FILE([missing])dnl
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
 # Use eval to expand $SHELL
 if eval "$MISSING --run true"; then
   am_missing_run="$MISSING --run "
@@ -1225,12 +1332,15 @@ else
 fi
 ])
 
-# Copyright (C) 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
+# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation,
+# Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 1
+
 # AM_PROG_MKDIR_P
 # ---------------
 # Check for `mkdir -p'.
@@ -1253,13 +1363,14 @@ esac
 
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software
+# Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 3
+# serial 5
 
 # _AM_MANGLE_OPTION(NAME)
 # -----------------------
@@ -1267,16 +1378,16 @@ AC_DEFUN([_AM_MANGLE_OPTION],
 [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
 
 # _AM_SET_OPTION(NAME)
-# ------------------------------
+# --------------------
 # Set option NAME.  Presently that only means defining a flag for this option.
 AC_DEFUN([_AM_SET_OPTION],
 [m4_define(_AM_MANGLE_OPTION([$1]), 1)])
 
 # _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
+# ------------------------
 # OPTIONS is a space-separated list of Automake options.
 AC_DEFUN([_AM_SET_OPTIONS],
-[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
 
 # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
 # -------------------------------------------
@@ -1284,12 +1395,14 @@ AC_DEFUN([_AM_SET_OPTIONS],
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 1
+
 # AM_RUN_LOG(COMMAND)
 # -------------------
 # Run COMMAND, save the exit status in ac_status, and log it.
@@ -1303,14 +1416,14 @@ AC_DEFUN([AM_RUN_LOG],
 
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
 # Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 4
+# serial 5
 
 # AM_SANITY_CHECK
 # ---------------
@@ -1319,16 +1432,29 @@ AC_DEFUN([AM_SANITY_CHECK],
 # Just in case
 sleep 1
 echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
+    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
 # Do `set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
    if test "$[*]" = "X"; then
       # -L didn't work.
-      set X `ls -t $srcdir/configure conftest.file`
+      set X `ls -t "$srcdir/configure" conftest.file`
    fi
    rm -f conftest.file
    if test "$[*]" != "X $srcdir/configure conftest.file" \
@@ -1353,12 +1479,14 @@ Check your system clock])
 fi
 AC_MSG_RESULT(yes)])
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 1
+
 # AM_PROG_INSTALL_STRIP
 # ---------------------
 # One issue with vendor `install' (even GNU) is that you can't
@@ -1381,21 +1509,28 @@ fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006  Free Software Foundation, Inc.
+# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 3
+
 # _AM_SUBST_NOTMAKE(VARIABLE)
 # ---------------------------
 # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
 # This macro is traced by Automake.
 AC_DEFUN([_AM_SUBST_NOTMAKE])
 
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1417,10 +1552,11 @@ AC_DEFUN([_AM_SUBST_NOTMAKE])
 # a tarball read from stdin.
 #     $(am__untar) < result.tar
 AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.
-AM_MISSING_PROG([AMTAR], [tar])
+[# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
 m4_if([$1], [v7],
-     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+     [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
      [m4_case([$1], [ustar],, [pax],,
               [m4_fatal([Unknown tar format])])
 AC_MSG_CHECKING([how to create a $1 tar archive])
diff --git a/asn1view/Makefile.in b/asn1view/Makefile.in
index 6c72fc5..3054bb6 100644
--- a/asn1view/Makefile.in
+++ b/asn1view/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -39,8 +58,9 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -50,12 +70,45 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -116,6 +169,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -129,9 +183,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -209,14 +266,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  asn1view/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  asn1view/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu asn1view/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu asn1view/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -234,6 +291,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -242,7 +300,7 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -259,7 +317,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -267,7 +325,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -293,16 +351,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -310,14 +368,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -329,7 +387,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -338,29 +396,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -381,29 +444,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -423,16 +498,22 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -451,6 +532,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -459,18 +542,28 @@ install-data-am:
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -491,8 +584,8 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic ctags \
@@ -507,6 +600,7 @@ uninstall-am:
 	mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
 	tags-recursive uninstall uninstall-am
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/asn1view/art/Makefile.in b/asn1view/art/Makefile.in
index 38e20f3..152c44b 100644
--- a/asn1view/art/Makefile.in
+++ b/asn1view/art/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -201,14 +230,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  asn1view/art/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  asn1view/art/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu asn1view/art/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu asn1view/art/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -226,6 +255,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -249,13 +279,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -273,16 +307,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -301,6 +341,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -309,18 +351,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -353,6 +405,7 @@ uninstall-am:
 	maintainer-clean maintainer-clean-generic mostlyclean \
 	mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/asn1view/common/Makefile.in b/asn1view/common/Makefile.in
index a28f2f0..68a5016 100644
--- a/asn1view/common/Makefile.in
+++ b/asn1view/common/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -201,14 +230,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  asn1view/common/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  asn1view/common/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu asn1view/common/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu asn1view/common/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -226,6 +255,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -249,13 +279,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -273,16 +307,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -301,6 +341,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -309,18 +351,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -353,6 +405,7 @@ uninstall-am:
 	maintainer-clean maintainer-clean-generic mostlyclean \
 	mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/asn1view/gtk/Makefile.in b/asn1view/gtk/Makefile.in
index 56f3b7d..70d4fea 100644
--- a/asn1view/gtk/Makefile.in
+++ b/asn1view/gtk/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,9 +16,27 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -39,14 +58,45 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(gasnviewdir)" "$(DESTDIR)$(scriptdir)"
-gasnviewSCRIPT_INSTALL = $(INSTALL_SCRIPT)
-scriptSCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(gasnview_SCRIPTS) $(script_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -108,6 +158,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -121,9 +172,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -240,14 +294,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  asn1view/gtk/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  asn1view/gtk/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu asn1view/gtk/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu asn1view/gtk/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -265,44 +319,77 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-gasnviewSCRIPTS: $(gasnview_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(gasnviewdir)" || $(MKDIR_P) "$(DESTDIR)$(gasnviewdir)"
-	@list='$(gasnview_SCRIPTS)'; for p in $$list; do \
+	@list='$(gasnview_SCRIPTS)'; test -n "$(gasnviewdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(gasnviewdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(gasnviewdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(gasnviewSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(gasnviewdir)/$$f'"; \
-	    $(gasnviewSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(gasnviewdir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(gasnviewdir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(gasnviewdir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-gasnviewSCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(gasnview_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(gasnviewdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(gasnviewdir)/$$f"; \
-	done
+	@list='$(gasnview_SCRIPTS)'; test -n "$(gasnviewdir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(gasnviewdir)'; $(am__uninstall_files_from_dir)
 install-scriptSCRIPTS: $(script_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(scriptdir)" || $(MKDIR_P) "$(DESTDIR)$(scriptdir)"
-	@list='$(script_SCRIPTS)'; for p in $$list; do \
+	@list='$(script_SCRIPTS)'; test -n "$(scriptdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(scriptdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(scriptdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(scriptSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(scriptdir)/$$f'"; \
-	    $(scriptSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(scriptdir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(scriptdir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(scriptdir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-scriptSCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(script_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(scriptdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(scriptdir)/$$f"; \
-	done
+	@list='$(script_SCRIPTS)'; test -n "$(scriptdir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(scriptdir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -326,13 +413,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -353,10 +444,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -364,6 +460,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -382,6 +479,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -390,18 +489,28 @@ install-data-am: install-gasnviewSCRIPTS install-scriptSCRIPTS
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -444,6 +553,7 @@ uninstall-am: uninstall-gasnviewSCRIPTS uninstall-scriptSCRIPTS
 @ENABLE_GNOME_TRUE@	$(REWRITE) $(srcdir)/script.in > $@.tmp
 @ENABLE_GNOME_TRUE@	mv $@.tmp $@
 @ENABLE_GNOME_FALSE at all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/config.guess b/config.guess
index e6b5d5b..d622a44 100755
--- a/config.guess
+++ b/config.guess
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
-#   Free Software Foundation, Inc.
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+#   2011, 2012 Free Software Foundation, Inc.
 
-timestamp='2008-01-08'
+timestamp='2012-02-10'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -17,9 +17,7 @@ timestamp='2008-01-08'
 # General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
 #
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -27,16 +25,16 @@ timestamp='2008-01-08'
 # the same distribution terms that you use for the rest of that program.
 
 
-# Originally written by Per Bothner <per at bothner.com>.
-# Please send patches to <config-patches at gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
+# Originally written by Per Bothner.  Please send patches (context
+# diff format) to <config-patches at gnu.org> and include a ChangeLog
+# entry.
 #
 # This script attempts to guess a canonical system name similar to
 # config.sub.  If it succeeds, it prints the system name on stdout, and
 # exits with 0.  Otherwise, it exits with 1.
 #
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
 
 me=`echo "$0" | sed -e 's,.*/,,'`
 
@@ -56,8 +54,9 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -139,22 +138,12 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
 UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 
-case "${UNAME_MACHINE}" in
-    i?86)
-	test -z "$VENDOR" && VENDOR=pc
-	;;
-    *)
-	test -z "$VENDOR" && VENDOR=unknown
-	;;
-esac
-test -f /etc/SuSE-release -o -f /.buildenv && VENDOR=suse
-
 # Note: order is significant - the case branches are not exclusive.
 
 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     *:NetBSD:*:*)
 	# NetBSD (nbsd) targets should (where applicable) match one or
-	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
 	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
 	# switched to ELF, *-*-netbsd* would select the old
 	# object file format.  This provides both forward
@@ -180,7 +169,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
 		eval $set_cc_for_build
 		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-			| grep __ELF__ >/dev/null
+			| grep -q __ELF__
 		then
 		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
 		    # Return netbsd for either.  FIX?
@@ -190,7 +179,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 		fi
 		;;
 	    *)
-	        os=netbsd
+		os=netbsd
 		;;
 	esac
 	# The OS release
@@ -233,7 +222,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
 		;;
 	*5.*)
-	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
 		;;
 	esac
 	# According to Compaq, /usr/sbin/psrinfo has been available on
@@ -279,7 +268,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	# A Xn.n version is an unreleased experimental baselevel.
 	# 1.2 uses "1.2" for uname -r.
 	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	exit ;;
+	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+	exitcode=$?
+	trap '' 0
+	exit $exitcode ;;
     Alpha\ *:Windows_NT*:*)
 	# How do we know it's Interix rather than the generic POSIX subsystem?
 	# Should we change UNAME_MACHINE based on the output of uname instead
@@ -305,7 +297,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	echo s390-ibm-zvmoe
 	exit ;;
     *:OS400:*:*)
-        echo powerpc-ibm-os400
+	echo powerpc-ibm-os400
 	exit ;;
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
 	echo arm-acorn-riscix${UNAME_RELEASE}
@@ -334,14 +326,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	case `/usr/bin/uname -p` in
 	    sparc) echo sparc-icl-nx7; exit ;;
 	esac ;;
+    s390x:SunOS:*:*)
+	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
     sun4H:SunOS:5.*:*)
 	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
 	exit ;;
     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
 	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
 	exit ;;
+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+	echo i386-pc-auroraux${UNAME_RELEASE}
+	exit ;;
     i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	eval $set_cc_for_build
+	SUN_ARCH="i386"
+	# If there is a compiler, see if it is configured for 64-bit objects.
+	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+	# This test works for both compilers.
+	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		grep IS_64BIT_ARCH >/dev/null
+	    then
+		SUN_ARCH="x86_64"
+	    fi
+	fi
+	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
 	exit ;;
     sun4*:SunOS:6*:*)
 	# According to config.sub, this is the proper way to canonicalize
@@ -385,23 +396,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     # MiNT.  But MiNT is downward compatible to TOS, so this should
     # be no problem.
     atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
+	echo m68k-atari-mint${UNAME_RELEASE}
 	exit ;;
     atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
 	echo m68k-atari-mint${UNAME_RELEASE}
-        exit ;;
+	exit ;;
     *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
+	echo m68k-atari-mint${UNAME_RELEASE}
 	exit ;;
     milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-        echo m68k-milan-mint${UNAME_RELEASE}
-        exit ;;
+	echo m68k-milan-mint${UNAME_RELEASE}
+	exit ;;
     hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-        echo m68k-hades-mint${UNAME_RELEASE}
-        exit ;;
+	echo m68k-hades-mint${UNAME_RELEASE}
+	exit ;;
     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-        echo m68k-unknown-mint${UNAME_RELEASE}
-        exit ;;
+	echo m68k-unknown-mint${UNAME_RELEASE}
+	exit ;;
     m68k:machten:*:*)
 	echo m68k-apple-machten${UNAME_RELEASE}
 	exit ;;
@@ -471,8 +482,8 @@ EOF
 	echo m88k-motorola-sysv3
 	exit ;;
     AViiON:dgux:*:*)
-        # DG/UX returns AViiON for all architectures
-        UNAME_PROCESSOR=`/usr/bin/uname -p`
+	# DG/UX returns AViiON for all architectures
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
 	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
 	then
 	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
@@ -485,7 +496,7 @@ EOF
 	else
 	    echo i586-dg-dgux${UNAME_RELEASE}
 	fi
- 	exit ;;
+	exit ;;
     M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
 	echo m88k-dolphin-sysv3
 	exit ;;
@@ -542,7 +553,7 @@ EOF
 		echo rs6000-ibm-aix3.2
 	fi
 	exit ;;
-    *:AIX:*:[456])
+    *:AIX:*:[4567])
 	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
 	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
 		IBM_ARCH=rs6000
@@ -585,52 +596,52 @@ EOF
 	    9000/[678][0-9][0-9])
 		if [ -x /usr/bin/getconf ]; then
 		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                    case "${sc_cpu_version}" in
-                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-                      532)                      # CPU_PA_RISC2_0
-                        case "${sc_kernel_bits}" in
-                          32) HP_ARCH="hppa2.0n" ;;
-                          64) HP_ARCH="hppa2.0w" ;;
+		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+		    case "${sc_cpu_version}" in
+		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+		      532)                      # CPU_PA_RISC2_0
+			case "${sc_kernel_bits}" in
+			  32) HP_ARCH="hppa2.0n" ;;
+			  64) HP_ARCH="hppa2.0w" ;;
 			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-                        esac ;;
-                    esac
+			esac ;;
+		    esac
 		fi
 		if [ "${HP_ARCH}" = "" ]; then
 		    eval $set_cc_for_build
-		    sed 's/^              //' << EOF >$dummy.c
+		    sed 's/^		//' << EOF >$dummy.c
 
-              #define _HPUX_SOURCE
-              #include <stdlib.h>
-              #include <unistd.h>
+		#define _HPUX_SOURCE
+		#include <stdlib.h>
+		#include <unistd.h>
 
-              int main ()
-              {
-              #if defined(_SC_KERNEL_BITS)
-                  long bits = sysconf(_SC_KERNEL_BITS);
-              #endif
-                  long cpu  = sysconf (_SC_CPU_VERSION);
+		int main ()
+		{
+		#if defined(_SC_KERNEL_BITS)
+		    long bits = sysconf(_SC_KERNEL_BITS);
+		#endif
+		    long cpu  = sysconf (_SC_CPU_VERSION);
 
-                  switch (cpu)
-              	{
-              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-              	case CPU_PA_RISC2_0:
-              #if defined(_SC_KERNEL_BITS)
-              	    switch (bits)
-              		{
-              		case 64: puts ("hppa2.0w"); break;
-              		case 32: puts ("hppa2.0n"); break;
-              		default: puts ("hppa2.0"); break;
-              		} break;
-              #else  /* !defined(_SC_KERNEL_BITS) */
-              	    puts ("hppa2.0"); break;
-              #endif
-              	default: puts ("hppa1.0"); break;
-              	}
-                  exit (0);
-              }
+		    switch (cpu)
+			{
+			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+			case CPU_PA_RISC2_0:
+		#if defined(_SC_KERNEL_BITS)
+			    switch (bits)
+				{
+				case 64: puts ("hppa2.0w"); break;
+				case 32: puts ("hppa2.0n"); break;
+				default: puts ("hppa2.0"); break;
+				} break;
+		#else  /* !defined(_SC_KERNEL_BITS) */
+			    puts ("hppa2.0"); break;
+		#endif
+			default: puts ("hppa1.0"); break;
+			}
+		    exit (0);
+		}
 EOF
 		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
 		    test -z "$HP_ARCH" && HP_ARCH=hppa
@@ -650,7 +661,7 @@ EOF
 	    # => hppa64-hp-hpux11.23
 
 	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-		grep __LP64__ >/dev/null
+		grep -q __LP64__
 	    then
 		HP_ARCH="hppa2.0w"
 	    else
@@ -721,22 +732,22 @@ EOF
 	exit ;;
     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
 	echo c1-convex-bsd
-        exit ;;
+	exit ;;
     C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
 	if getsysinfo -f scalar_acc
 	then echo c32-convex-bsd
 	else echo c2-convex-bsd
 	fi
-        exit ;;
+	exit ;;
     C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
 	echo c34-convex-bsd
-        exit ;;
+	exit ;;
     C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
 	echo c38-convex-bsd
-        exit ;;
+	exit ;;
     C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
 	echo c4-convex-bsd
-        exit ;;
+	exit ;;
     CRAY*Y-MP:*:*:*)
 	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
 	exit ;;
@@ -760,14 +771,14 @@ EOF
 	exit ;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
 	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-        exit ;;
+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
     5000:UNIX_System_V:4.*:*)
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
 	exit ;;
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
 	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
@@ -779,13 +790,12 @@ EOF
 	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
 	exit ;;
     *:FreeBSD:*:*)
-	case ${UNAME_MACHINE} in
-	    pc98)
-		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	case ${UNAME_PROCESSOR} in
 	    amd64)
 		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
 	    *)
-		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
 	esac
 	exit ;;
     i*:CYGWIN*:*)
@@ -794,19 +804,22 @@ EOF
     *:MINGW*:*)
 	echo ${UNAME_MACHINE}-pc-mingw32
 	exit ;;
+    i*:MSYS*:*)
+	echo ${UNAME_MACHINE}-pc-msys
+	exit ;;
     i*:windows32*:*)
-    	# uname -m includes "-pc" on this system.
-    	echo ${UNAME_MACHINE}-mingw32
+	# uname -m includes "-pc" on this system.
+	echo ${UNAME_MACHINE}-mingw32
 	exit ;;
     i*:PW*:*)
 	echo ${UNAME_MACHINE}-pc-pw32
 	exit ;;
-    *:Interix*:[3456]*)
-    	case ${UNAME_MACHINE} in
+    *:Interix*:*)
+	case ${UNAME_MACHINE} in
 	    x86)
 		echo i586-pc-interix${UNAME_RELEASE}
 		exit ;;
-	    EM64T | authenticamd)
+	    authenticamd | genuineintel | EM64T)
 		echo x86_64-unknown-interix${UNAME_RELEASE}
 		exit ;;
 	    IA64)
@@ -816,6 +829,9 @@ EOF
     [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
 	echo i${UNAME_MACHINE}-pc-mks
 	exit ;;
+    8664:Windows_NT:*)
+	echo x86_64-pc-mks
+	exit ;;
     i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
 	# How do we know it's Interix rather than the generic POSIX subsystem?
 	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
@@ -845,201 +861,144 @@ EOF
     i*86:Minix:*:*)
 	echo ${UNAME_MACHINE}-pc-minix
 	exit ;;
+    aarch64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    aarch64_be:Linux:*:*)
+	UNAME_MACHINE=aarch64_be
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+	esac
+	objdump --private-headers /bin/sh | grep -q ld.so.1
+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+	exit ;;
     arm*:Linux:*:*)
 	eval $set_cc_for_build
 	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
 	    | grep -q __ARM_EABI__
 	then
-	    echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+	    echo ${UNAME_MACHINE}-unknown-linux-gnu
 	else
-	    echo ${UNAME_MACHINE}-${VENDOR}-linux-gnueabi
+	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+		| grep -q __ARM_PCS_VFP
+	    then
+		echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+	    else
+		echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+	    fi
 	fi
 	exit ;;
     avr32*:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     cris:Linux:*:*)
-	echo cris-axis-linux-gnu
+	echo ${UNAME_MACHINE}-axis-linux-gnu
 	exit ;;
     crisv32:Linux:*:*)
-	echo crisv32-axis-linux-gnu
+	echo ${UNAME_MACHINE}-axis-linux-gnu
 	exit ;;
     frv:Linux:*:*)
-    	echo frv-${VENDOR}-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    hexagon:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    i*86:Linux:*:*)
+	LIBC=gnu
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#ifdef __dietlibc__
+	LIBC=dietlibc
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+	echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
 	exit ;;
     ia64:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     m32r*:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     m68*:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
-    mips:Linux:*:*)
+    mips:Linux:*:* | mips64:Linux:*:*)
 	eval $set_cc_for_build
 	sed 's/^	//' << EOF >$dummy.c
 	#undef CPU
-	#undef mips
-	#undef mipsel
+	#undef ${UNAME_MACHINE}
+	#undef ${UNAME_MACHINE}el
 	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=mipsel
+	CPU=${UNAME_MACHINE}el
 	#else
 	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=mips
+	CPU=${UNAME_MACHINE}
 	#else
 	CPU=
 	#endif
 	#endif
 EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^CPU/{
-		s: ::g
-		p
-	    }'`"
-	test x"${CPU}" != x && { echo "${CPU}-${VENDOR}-linux-gnu"; exit; }
-	;;
-    mips64:Linux:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#undef CPU
-	#undef mips64
-	#undef mips64el
-	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=mips64el
-	#else
-	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=mips64
-	#else
-	CPU=
-	#endif
-	#endif
-EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^CPU/{
-		s: ::g
-		p
-	    }'`"
-	test x"${CPU}" != x && { echo "${CPU}-${VENDOR}-linux-gnu"; exit; }
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
 	;;
     or32:Linux:*:*)
-	echo or32-${VENDOR}-linux-gnu
-	exit ;;
-    ppc:Linux:*:*)
-	echo powerpc-${VENDOR}-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
-    ppc64:Linux:*:*)
-	echo powerpc64-${VENDOR}-linux-gnu
+    padre:Linux:*:*)
+	echo sparc-unknown-linux-gnu
 	exit ;;
-    alpha:Linux:*:*)
-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-	  EV5)   UNAME_MACHINE=alphaev5 ;;
-	  EV56)  UNAME_MACHINE=alphaev56 ;;
-	  PCA56) UNAME_MACHINE=alphapca56 ;;
-	  PCA57) UNAME_MACHINE=alphapca56 ;;
-	  EV6)   UNAME_MACHINE=alphaev6 ;;
-	  EV67)  UNAME_MACHINE=alphaev67 ;;
-	  EV68*) UNAME_MACHINE=alphaev68 ;;
-        esac
-	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
-	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu${LIBC}
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
 	exit ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
 	# Look for CPU level
 	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-	  PA7*) echo hppa1.1-${VENDOR}-linux-gnu ;;
-	  PA8*) echo hppa2.0-${VENDOR}-linux-gnu ;;
-	  *)    echo hppa-${VENDOR}-linux-gnu ;;
+	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
+	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+	  *)    echo hppa-unknown-linux-gnu ;;
 	esac
 	exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-${VENDOR}-linux-gnu
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
 	exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
 	echo ${UNAME_MACHINE}-ibm-linux
 	exit ;;
     sh64*:Linux:*:*)
-    	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     sh*:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     sparc:Linux:*:* | sparc64:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    tile*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     vax:Linux:*:*)
 	echo ${UNAME_MACHINE}-dec-linux-gnu
 	exit ;;
     x86_64:Linux:*:*)
-	echo x86_64-${VENDOR}-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     xtensa*:Linux:*:*)
-    	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
-    i*86:Linux:*:*)
-	# The BFD linker knows what the default object file format is, so
-	# first see if it will tell us. cd to the root directory to prevent
-	# problems with other programs or directories called `ld' in the path.
-	# Set LC_ALL=C to ensure ld outputs messages in English.
-	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
-			 | sed -ne '/supported targets:/!d
-				    s/[ 	][ 	]*/ /g
-				    s/.*supported targets: *//
-				    s/ .*//
-				    p'`
-        case "$ld_supported_targets" in
-	  elf32-i386)
-		TENTATIVE="${UNAME_MACHINE}-${VENDOR}-linux-gnu"
-		;;
-	  a.out-i386-linux)
-		echo "${UNAME_MACHINE}-${VENDOR}-linux-gnuaout"
-		exit ;;
-	  coff-i386)
-		echo "${UNAME_MACHINE}-${VENDOR}-linux-gnucoff"
-		exit ;;
-	  "")
-		# Either a pre-BFD a.out linker (linux-gnuoldld) or
-		# one that does not give us useful --help.
-		echo "${UNAME_MACHINE}-${VENDOR}-linux-gnuoldld"
-		exit ;;
-	esac
-	# Determine whether the default compiler is a.out or elf
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <features.h>
-	#ifdef __ELF__
-	# ifdef __GLIBC__
-	#  if __GLIBC__ >= 2
-	LIBC=gnu
-	#  else
-	LIBC=gnulibc1
-	#  endif
-	# else
-	LIBC=gnulibc1
-	# endif
-	#else
-	#if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
-	LIBC=gnu
-	#else
-	LIBC=gnuaout
-	#endif
-	#endif
-	#ifdef __dietlibc__
-	LIBC=dietlibc
-	#endif
-EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^LIBC/{
-		s: ::g
-		p
-	    }'`"
-	test x"${LIBC}" != x && {
-		echo "${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}"
-		exit
-	}
-	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
-	;;
     i*86:DYNIX/ptx:4*:*)
 	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
 	# earlier versions are messed up and put the nodename in both
@@ -1047,11 +1006,11 @@ EOF
 	echo i386-sequent-sysv4
 	exit ;;
     i*86:UNIX_SV:4.2MP:2.*)
-        # Unixware is an offshoot of SVR4, but it has its own version
-        # number series starting with 2...
-        # I am not positive that other SVR4 systems won't match this,
+	# Unixware is an offshoot of SVR4, but it has its own version
+	# number series starting with 2...
+	# I am not positive that other SVR4 systems won't match this,
 	# I just have to hope.  -- rms.
-        # Use sysv4.2uw... so that sysv4* matches it.
+	# Use sysv4.2uw... so that sysv4* matches it.
 	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
 	exit ;;
     i*86:OS/2:*:*)
@@ -1068,7 +1027,7 @@ EOF
     i*86:syllable:*:*)
 	echo ${UNAME_MACHINE}-pc-syllable
 	exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
 	echo i386-unknown-lynxos${UNAME_RELEASE}
 	exit ;;
     i*86:*DOS:*:*)
@@ -1083,7 +1042,7 @@ EOF
 	fi
 	exit ;;
     i*86:*:5:[678]*)
-    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	# UnixWare 7.x, OpenUNIX and OpenServer 6.
 	case `/bin/uname -X | grep "^Machine"` in
 	    *486*)	     UNAME_MACHINE=i486 ;;
 	    *Pentium)	     UNAME_MACHINE=i586 ;;
@@ -1111,10 +1070,13 @@ EOF
 	exit ;;
     pc:*:*:*)
 	# Left here for compatibility:
-        # uname -m prints for DJGPP always 'pc', but it prints nothing about
-        # the processor, so we play safe by assuming i386.
-	echo i386-pc-msdosdjgpp
-        exit ;;
+	# uname -m prints for DJGPP always 'pc', but it prints nothing about
+	# the processor, so we play safe by assuming i586.
+	# Note: whatever this is, it MUST be the same as what config.sub
+	# prints for the "djgpp" host, or else GDB configury will decide that
+	# this is a cross-build.
+	echo i586-pc-msdosdjgpp
+	exit ;;
     Intel:Mach:3*:*)
 	echo i386-pc-mach3
 	exit ;;
@@ -1149,8 +1111,18 @@ EOF
 	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
 	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-          && { echo i486-ncr-sysv4; exit; } ;;
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4; exit; } ;;
+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+	OS_REL='.3'
+	test -r /etc/.relid \
+	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
     m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
 	echo m68k-unknown-lynxos${UNAME_RELEASE}
 	exit ;;
@@ -1163,7 +1135,7 @@ EOF
     rs6000:LynxOS:2.*:*)
 	echo rs6000-unknown-lynxos${UNAME_RELEASE}
 	exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
 	echo powerpc-unknown-lynxos${UNAME_RELEASE}
 	exit ;;
     SM[BE]S:UNIX_SV:*:*)
@@ -1183,10 +1155,10 @@ EOF
 		echo ns32k-sni-sysv
 	fi
 	exit ;;
-    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                      # says <Richard.M.Bartel at ccMail.Census.GOV>
-        echo i586-unisys-sysv4
-        exit ;;
+    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+			# says <Richard.M.Bartel at ccMail.Census.GOV>
+	echo i586-unisys-sysv4
+	exit ;;
     *:UNIX_System_V:4*:FTX*)
 	# From Gerald Hewes <hewes at openmarket.com>.
 	# How about differentiating between stratus architectures? -djm
@@ -1212,11 +1184,11 @@ EOF
 	exit ;;
     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
 	if [ -d /usr/nec ]; then
-	        echo mips-nec-sysv${UNAME_RELEASE}
+		echo mips-nec-sysv${UNAME_RELEASE}
 	else
-	        echo mips-unknown-sysv${UNAME_RELEASE}
+		echo mips-unknown-sysv${UNAME_RELEASE}
 	fi
-        exit ;;
+	exit ;;
     BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
 	echo powerpc-be-beos
 	exit ;;
@@ -1226,6 +1198,9 @@ EOF
     BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
 	echo i586-pc-beos
 	exit ;;
+    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
+	echo i586-pc-haiku
+	exit ;;
     SX-4:SUPER-UX:*:*)
 	echo sx4-nec-superux${UNAME_RELEASE}
 	exit ;;
@@ -1253,6 +1228,16 @@ EOF
     *:Darwin:*:*)
 	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
 	case $UNAME_PROCESSOR in
+	    i386)
+		eval $set_cc_for_build
+		if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+		  if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+		      (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		      grep IS_64BIT_ARCH >/dev/null
+		  then
+		      UNAME_PROCESSOR="x86_64"
+		  fi
+		fi ;;
 	    unknown) UNAME_PROCESSOR=powerpc ;;
 	esac
 	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
@@ -1268,6 +1253,9 @@ EOF
     *:QNX:*:4*)
 	echo i386-pc-qnx
 	exit ;;
+    NEO-?:NONSTOP_KERNEL:*:*)
+	echo neo-tandem-nsk${UNAME_RELEASE}
+	exit ;;
     NSE-?:NONSTOP_KERNEL:*:*)
 	echo nse-tandem-nsk${UNAME_RELEASE}
 	exit ;;
@@ -1313,13 +1301,13 @@ EOF
 	echo pdp10-unknown-its
 	exit ;;
     SEI:*:*:SEIUX)
-        echo mips-sei-seiux${UNAME_RELEASE}
+	echo mips-sei-seiux${UNAME_RELEASE}
 	exit ;;
     *:DragonFly:*:*)
 	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
 	exit ;;
     *:*VMS:*:*)
-    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	UNAME_MACHINE=`(uname -p) 2>/dev/null`
 	case "${UNAME_MACHINE}" in
 	    A*) echo alpha-dec-vms ; exit ;;
 	    I*) echo ia64-dec-vms ; exit ;;
@@ -1334,6 +1322,12 @@ EOF
     i*86:rdos:*:*)
 	echo ${UNAME_MACHINE}-pc-rdos
 	exit ;;
+    i*86:AROS:*:*)
+	echo ${UNAME_MACHINE}-pc-aros
+	exit ;;
+    x86_64:VMkernel:*:*)
+	echo ${UNAME_MACHINE}-unknown-esx
+	exit ;;
 esac
 
 #echo '(No uname command or uname output not recognized.)' 1>&2
@@ -1356,11 +1350,11 @@ main ()
 #include <sys/param.h>
   printf ("m68k-sony-newsos%s\n",
 #ifdef NEWSOS4
-          "4"
+	"4"
 #else
-	  ""
+	""
 #endif
-         ); exit (0);
+	); exit (0);
 #endif
 #endif
 
@@ -1494,9 +1488,9 @@ This script, last modified $timestamp, has failed to recognize
 the operating system you are using. It is advised that you
 download the most up to date version of the config scripts from
 
-  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
 and
-  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
 
 If the version you run ($0) is already up to date, please
 send the following data and any information you think might be
diff --git a/config.sub b/config.sub
index 6759825..6205f84 100755
--- a/config.sub
+++ b/config.sub
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Configuration validation subroutine script.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
-#   Free Software Foundation, Inc.
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+#   2011, 2012 Free Software Foundation, Inc.
 
-timestamp='2008-01-16'
+timestamp='2012-04-18'
 
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
@@ -21,9 +21,7 @@ timestamp='2008-01-16'
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
 #
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -32,13 +30,16 @@ timestamp='2008-01-16'
 
 
 # Please send patches to <config-patches at gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
+# diff and a properly formatted GNU ChangeLog entry.
 #
 # Configuration subroutine to validate and canonicalize a configuration type.
 # Supply the specified configuration type as an argument.
 # If it is invalid, we print an error message on stderr and exit with code 1.
 # Otherwise, we print the canonical config type on stdout and succeed.
 
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
 # This file is supposed to be the same for all GNU packages
 # and recognize all the CPU types, system types and aliases
 # that are meaningful with *any* GNU software.
@@ -72,8 +73,9 @@ Report bugs and patches to <config-patches at gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -120,12 +122,18 @@ esac
 # Here we must recognize all the valid KERNEL-OS combinations.
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
-  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | \
+  kopensolaris*-gnu* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
     ;;
+  android-linux)
+    os=-linux-android
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+    ;;
   *)
     basic_machine=`echo $1 | sed 's/-[^-]*$//'`
     if [ $basic_machine != $1 ]
@@ -148,10 +156,13 @@ case $os in
 	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
 	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
 	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis | -knuth | -cray)
+	-apple | -axis | -knuth | -cray | -microblaze)
 		os=
 		basic_machine=$1
 		;;
+	-bluegene*)
+		os=-cnk
+		;;
 	-sim | -cisco | -oki | -wec | -winbond)
 		os=
 		basic_machine=$1
@@ -166,10 +177,10 @@ case $os in
 		os=-chorusos
 		basic_machine=$1
 		;;
- 	-chorusrdb)
- 		os=-chorusrdb
+	-chorusrdb)
+		os=-chorusrdb
 		basic_machine=$1
- 		;;
+		;;
 	-hiux*)
 		os=-hiuxwe2
 		;;
@@ -214,6 +225,12 @@ case $os in
 	-isc*)
 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
 		;;
+	-lynx*178)
+		os=-lynxos178
+		;;
+	-lynx*5)
+		os=-lynxos5
+		;;
 	-lynx*)
 		os=-lynxos
 		;;
@@ -238,24 +255,32 @@ case $basic_machine in
 	# Some are omitted here because they have special meanings below.
 	1750a | 580 \
 	| a29k \
+	| aarch64 | aarch64_be \
 	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
 	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
 	| am33_2.0 \
 	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+        | be32 | be64 \
 	| bfin \
 	| c4x | clipper \
 	| d10v | d30v | dlx | dsp16xx \
+	| epiphany \
 	| fido | fr30 | frv \
 	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| hexagon \
 	| i370 | i860 | i960 | ia64 \
 	| ip2k | iq2000 \
+	| le32 | le64 \
+	| lm32 \
 	| m32c | m32r | m32rle | m68000 | m68k | m88k \
-	| maxq | mb | microblaze | mcore | mep \
+	| maxq | mb | microblaze | mcore | mep | metag \
 	| mips | mipsbe | mipseb | mipsel | mipsle \
 	| mips16 \
 	| mips64 | mips64el \
-	| mips64vr | mips64vrel \
+	| mips64octeon | mips64octeonel \
 	| mips64orion | mips64orionel \
+	| mips64r5900 | mips64r5900el \
+	| mips64vr | mips64vrel \
 	| mips64vr4100 | mips64vr4100el \
 	| mips64vr4300 | mips64vr4300el \
 	| mips64vr5000 | mips64vr5000el \
@@ -268,29 +293,42 @@ case $basic_machine in
 	| mipsisa64sr71k | mipsisa64sr71kel \
 	| mipstx39 | mipstx39el \
 	| mn10200 | mn10300 \
+	| moxie \
 	| mt \
 	| msp430 \
+	| nds32 | nds32le | nds32be \
 	| nios | nios2 \
 	| ns16k | ns32k \
+	| open8 \
 	| or32 \
 	| pdp10 | pdp11 | pj | pjl \
-	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+	| powerpc | powerpc64 | powerpc64le | powerpcle \
 	| pyramid \
+	| rl78 | rx \
 	| score \
-	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
 	| sh64 | sh64le \
 	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
 	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-	| spu | strongarm \
-	| tahoe | thumb | tic4x | tic80 | tron \
-	| v850 | v850e \
+	| spu \
+	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+	| ubicom32 \
+	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
 	| we32k \
-	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
-	| z8k)
+	| x86 | xc16x | xstormy16 | xtensa \
+	| z8k | z80)
 		basic_machine=$basic_machine-unknown
 		;;
-	m6811 | m68hc11 | m6812 | m68hc12)
-		# Motorola 68HC11/12.
+	c54x)
+		basic_machine=tic54x-unknown
+		;;
+	c55x)
+		basic_machine=tic55x-unknown
+		;;
+	c6x)
+		basic_machine=tic6x-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
 		basic_machine=$basic_machine-unknown
 		os=-none
 		;;
@@ -300,6 +338,21 @@ case $basic_machine in
 		basic_machine=mt-unknown
 		;;
 
+	strongarm | thumb | xscale)
+		basic_machine=arm-unknown
+		;;
+	xgate)
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	xscaleeb)
+		basic_machine=armeb-unknown
+		;;
+
+	xscaleel)
+		basic_machine=armel-unknown
+		;;
+
 	# We use `pc' rather than `unknown'
 	# because (1) that's what they normally are, and
 	# (2) the word "unknown" tends to confuse beginning users.
@@ -314,29 +367,36 @@ case $basic_machine in
 	# Recognize the basic CPU types with company name.
 	580-* \
 	| a29k-* \
+	| aarch64-* | aarch64_be-* \
 	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
 	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
 	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
 	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
 	| avr-* | avr32-* \
+	| be32-* | be64-* \
 	| bfin-* | bs2000-* \
-	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* \
 	| clipper-* | craynv-* | cydra-* \
 	| d10v-* | d30v-* | dlx-* \
 	| elxsi-* \
 	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
 	| h8300-* | h8500-* \
 	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| hexagon-* \
 	| i*86-* | i860-* | i960-* | ia64-* \
 	| ip2k-* | iq2000-* \
+	| le32-* | le64-* \
+	| lm32-* \
 	| m32c-* | m32r-* | m32rle-* \
 	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | maxq-* | mcore-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
 	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
 	| mips16-* \
 	| mips64-* | mips64el-* \
-	| mips64vr-* | mips64vrel-* \
+	| mips64octeon-* | mips64octeonel-* \
 	| mips64orion-* | mips64orionel-* \
+	| mips64r5900-* | mips64r5900el-* \
+	| mips64vr-* | mips64vrel-* \
 	| mips64vr4100-* | mips64vr4100el-* \
 	| mips64vr4300-* | mips64vr4300el-* \
 	| mips64vr5000-* | mips64vr5000el-* \
@@ -351,27 +411,32 @@ case $basic_machine in
 	| mmix-* \
 	| mt-* \
 	| msp430-* \
+	| nds32-* | nds32le-* | nds32be-* \
 	| nios-* | nios2-* \
 	| none-* | np1-* | ns16k-* | ns32k-* \
+	| open8-* \
 	| orion-* \
 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
 	| pyramid-* \
-	| romp-* | rs6000-* \
-	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+	| rl78-* | romp-* | rs6000-* | rx-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
 	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
 	| sparclite-* \
-	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
-	| tahoe-* | thumb-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+	| tahoe-* \
 	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tile*-* \
 	| tron-* \
-	| v850-* | v850e-* | vax-* \
+	| ubicom32-* \
+	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+	| vax-* \
 	| we32k-* \
-	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+	| x86-* | x86_64-* | xc16x-* | xps100-* \
 	| xstormy16-* | xtensa*-* \
 	| ymp-* \
-	| z8k-*)
+	| z8k-* | z80-*)
 		;;
 	# Recognize the basic CPU types without company name, with glob match.
 	xtensa*)
@@ -393,7 +458,7 @@ case $basic_machine in
 		basic_machine=a29k-amd
 		os=-udi
 		;;
-    	abacus)
+	abacus)
 		basic_machine=abacus-unknown
 		;;
 	adobe68k)
@@ -439,6 +504,10 @@ case $basic_machine in
 		basic_machine=m68k-apollo
 		os=-bsd
 		;;
+	aros)
+		basic_machine=i386-pc
+		os=-aros
+		;;
 	aux)
 		basic_machine=m68k-apple
 		os=-aux
@@ -455,10 +524,27 @@ case $basic_machine in
 		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
 		os=-linux
 		;;
+	bluegene*)
+		basic_machine=powerpc-ibm
+		os=-cnk
+		;;
+	c54x-*)
+		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c55x-*)
+		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c6x-*)
+		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
 	c90)
 		basic_machine=c90-cray
 		os=-unicos
 		;;
+	cegcc)
+		basic_machine=arm-unknown
+		os=-cegcc
+		;;
 	convex-c1)
 		basic_machine=c1-convex
 		os=-bsd
@@ -487,7 +573,7 @@ case $basic_machine in
 		basic_machine=craynv-cray
 		os=-unicosmp
 		;;
-	cr16)
+	cr16 | cr16-*)
 		basic_machine=cr16-unknown
 		os=-elf
 		;;
@@ -526,6 +612,10 @@ case $basic_machine in
 		basic_machine=m88k-motorola
 		os=-sysv3
 		;;
+	dicos)
+		basic_machine=i686-pc
+		os=-dicos
+		;;
 	djgpp)
 		basic_machine=i586-pc
 		os=-msdosdjgpp
@@ -641,7 +731,6 @@ case $basic_machine in
 	i370-ibm* | ibm*)
 		basic_machine=i370-ibm
 		;;
-# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
 	i*86v32)
 		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
 		os=-sysv32
@@ -699,6 +788,9 @@ case $basic_machine in
 		basic_machine=ns32k-utek
 		os=-sysv
 		;;
+	microblaze)
+		basic_machine=microblaze-xilinx
+		;;
 	mingw32)
 		basic_machine=i386-pc
 		os=-mingw32
@@ -735,10 +827,18 @@ case $basic_machine in
 	ms1-*)
 		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
 		;;
+	msys)
+		basic_machine=i386-pc
+		os=-msys
+		;;
 	mvs)
 		basic_machine=i370-ibm
 		os=-mvs
 		;;
+	nacl)
+		basic_machine=le32-unknown
+		os=-nacl
+		;;
 	ncr3000)
 		basic_machine=i486-ncr
 		os=-sysv4
@@ -803,6 +903,12 @@ case $basic_machine in
 	np1)
 		basic_machine=np1-gould
 		;;
+	neo-tandem)
+		basic_machine=neo-tandem
+		;;
+	nse-tandem)
+		basic_machine=nse-tandem
+		;;
 	nsr-tandem)
 		basic_machine=nsr-tandem
 		;;
@@ -885,9 +991,10 @@ case $basic_machine in
 		;;
 	power)	basic_machine=power-ibm
 		;;
-	ppc)	basic_machine=powerpc-unknown
+	ppc | ppcbe)	basic_machine=powerpc-unknown
 		;;
-	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+	ppc-* | ppcbe-*)
+		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
 		;;
 	ppcle | powerpclittle | ppc-le | powerpc-little)
 		basic_machine=powerpcle-unknown
@@ -981,6 +1088,9 @@ case $basic_machine in
 		basic_machine=i860-stratus
 		os=-sysv4
 		;;
+	strongarm-* | thumb-*)
+		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
 	sun2)
 		basic_machine=m68000-sun
 		;;
@@ -1037,20 +1147,8 @@ case $basic_machine in
 		basic_machine=t90-cray
 		os=-unicos
 		;;
-	tic54x | c54x*)
-		basic_machine=tic54x-unknown
-		os=-coff
-		;;
-	tic55x | c55x*)
-		basic_machine=tic55x-unknown
-		os=-coff
-		;;
-	tic6x | c6x*)
-		basic_machine=tic6x-unknown
-		os=-coff
-		;;
 	tile*)
-		basic_machine=tile-unknown
+		basic_machine=$basic_machine-unknown
 		os=-linux-gnu
 		;;
 	tx39)
@@ -1120,6 +1218,9 @@ case $basic_machine in
 	xps | xps100)
 		basic_machine=xps100-honeywell
 		;;
+	xscale-* | xscalee[bl]-*)
+		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+		;;
 	ymp)
 		basic_machine=ymp-cray
 		os=-unicos
@@ -1128,6 +1229,10 @@ case $basic_machine in
 		basic_machine=z8k-unknown
 		os=-sim
 		;;
+	z80-*-coff)
+		basic_machine=z80-unknown
+		os=-sim
+		;;
 	none)
 		basic_machine=none-none
 		os=-none
@@ -1166,7 +1271,7 @@ case $basic_machine in
 	we32k)
 		basic_machine=we32k-att
 		;;
-	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
 		basic_machine=sh-unknown
 		;;
 	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
@@ -1213,9 +1318,12 @@ esac
 if [ x"$os" != x"" ]
 then
 case $os in
-        # First match some system type aliases
-        # that might get confused with valid system types.
+	# First match some system type aliases
+	# that might get confused with valid system types.
 	# -solaris* is a basic system type, with this one exception.
+	-auroraux)
+		os=-auroraux
+		;;
 	-solaris1 | -solaris1.*)
 		os=`echo $os | sed -e 's|solaris1|sunos4|'`
 		;;
@@ -1236,10 +1344,11 @@ case $os in
 	# Each alternative MUST END IN A *, to match a version number.
 	# -sysv* is not here because it comes later, after sysvr4.
 	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
-	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+	      | -sym* | -kopensolaris* \
 	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-	      | -aos* \
+	      | -aos* | -aros* \
 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
 	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
 	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
@@ -1248,9 +1357,10 @@ case $os in
 	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-	      | -chorusos* | -chorusrdb* \
-	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+	      | -chorusos* | -chorusrdb* | -cegcc* \
+	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -linux-android* \
+	      | -linux-newlib* | -linux-uclibc* \
 	      | -uxpv* | -beos* | -mpeix* | -udk* \
 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
 	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1258,7 +1368,7 @@ case $os in
 	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
 	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
 	# Remember, each alternative MUST END IN *, to match a version number.
 		;;
 	-qnx*)
@@ -1297,7 +1407,7 @@ case $os in
 	-opened*)
 		os=-openedition
 		;;
-        -os400*)
+	-os400*)
 		os=-os400
 		;;
 	-wince*)
@@ -1346,7 +1456,7 @@ case $os in
 	-sinix*)
 		os=-sysv4
 		;;
-        -tpf*)
+	-tpf*)
 		os=-tpf
 		;;
 	-triton*)
@@ -1388,6 +1498,11 @@ case $os in
 	-zvmoe)
 		os=-zvmoe
 		;;
+	-dicos*)
+		os=-dicos
+		;;
+	-nacl*)
+		;;
 	-none)
 		;;
 	*)
@@ -1410,10 +1525,10 @@ else
 # system, and we'll never get to this point.
 
 case $basic_machine in
-        score-*)
+	score-*)
 		os=-elf
 		;;
-        spu-*)
+	spu-*)
 		os=-elf
 		;;
 	*-acorn)
@@ -1425,8 +1540,20 @@ case $basic_machine in
 	arm*-semi)
 		os=-aout
 		;;
-        c4x-* | tic4x-*)
-        	os=-coff
+	c4x-* | tic4x-*)
+		os=-coff
+		;;
+	hexagon-*)
+		os=-elf
+		;;
+	tic54x-*)
+		os=-coff
+		;;
+	tic55x-*)
+		os=-coff
+		;;
+	tic6x-*)
+		os=-coff
 		;;
 	# This must come before the *-dec entry.
 	pdp10-*)
@@ -1446,14 +1573,11 @@ case $basic_machine in
 		;;
 	m68000-sun)
 		os=-sunos3
-		# This also exists in the configure program, but was not the
-		# default.
-		# os=-sunos4
 		;;
 	m68*-cisco)
 		os=-aout
 		;;
-        mep-*)
+	mep-*)
 		os=-elf
 		;;
 	mips*-cisco)
@@ -1480,7 +1604,7 @@ case $basic_machine in
 	*-ibm)
 		os=-aix
 		;;
-    	*-knuth)
+	*-knuth)
 		os=-mmixware
 		;;
 	*-wec)
@@ -1585,7 +1709,7 @@ case $basic_machine in
 			-sunos*)
 				vendor=sun
 				;;
-			-aix*)
+			-cnk*|-aix*)
 				vendor=ibm
 				;;
 			-beos*)
diff --git a/configure b/configure
index 33575ab..fa0cd59 100755
--- a/configure
+++ b/configure
@@ -1,18 +1,20 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for mono-tools 2.10.
+# Generated by GNU Autoconf 2.69 for mono-tools 2.11.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
 #
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
@@ -20,23 +22,15 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
 esac
-
 fi
 
 
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
 as_nl='
 '
 export as_nl
@@ -44,7 +38,13 @@ export as_nl
 as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
   as_echo='printf %s\n'
   as_echo_n='printf %s'
 else
@@ -55,7 +55,7 @@ else
     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
     as_echo_n_body='eval
       arg=$1;
-      case $arg in
+      case $arg in #(
       *"$as_nl"*)
 	expr "X$arg" : "X\\(.*\\)$as_nl";
 	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -78,13 +78,6 @@ if test "${PATH_SEPARATOR+set}" != set; then
   }
 fi
 
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
-fi
-
 
 # IFS
 # We need space, tab and new line, in precisely that order.  Quoting is
@@ -94,15 +87,16 @@ fi
 IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
-case $0 in
+as_myself=
+case $0 in #((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
 IFS=$as_save_IFS
 
      ;;
@@ -114,12 +108,16 @@ if test "x$as_myself" = x; then
 fi
 if test ! -f "$as_myself"; then
   $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  { (exit 1); exit 1; }
+  exit 1
 fi
 
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
 done
 PS1='$ '
 PS2='> '
@@ -131,7 +129,293 @@ export LC_ALL
 LANGUAGE=C
 export LANGUAGE
 
-# Required to use basename.
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf at gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
 if expr a : '\(a\)' >/dev/null 2>&1 &&
    test "X`expr 00001 : '.*\(...\)'`" = X001; then
   as_expr=expr
@@ -145,8 +429,12 @@ else
   as_basename=false
 fi
 
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
 
-# Name of the executable.
 as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
 	 X"$0" : 'X\(//\)$' \| \
@@ -166,437 +454,133 @@ $as_echo X/"$0" |
 	  }
 	  s/.*/./; q'`
 
-# CDPATH.
-$as_unset CDPATH
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
 
 
-if test "x$CONFIG_SHELL" = x; then
-  if (eval ":") 2>/dev/null; then
-  as_have_required=yes
-else
-  as_have_required=no
-fi
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
-  if test $as_have_required = yes &&	 (eval ":
-(as_func_return () {
-  (exit \$1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
 }
 
-exitcode=0
-if as_func_success; then
-  :
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
 else
-  exitcode=1
-  echo as_func_success failed.
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
 fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
 fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
 
-if as_func_ret_success; then
-  :
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
 else
-  exitcode=1
-  echo as_func_ret_success failed.
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
 fi
 
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
-  :
-else
-  exitcode=1
-  echo positional parameters were not saved.
-fi
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
 
-test \$exitcode = 0) || { (exit 1); exit 1; }
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 
-(
-  as_lineno_1=\$LINENO
-  as_lineno_2=\$LINENO
-  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
-  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
-") 2> /dev/null; then
-  :
-else
-  as_candidate_shells=
-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  case $as_dir in
-	 /*)
-	   for as_base in sh bash ksh sh5; do
-	     as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
-	   done;;
-       esac
-done
-IFS=$as_save_IFS
 
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
 
-      for as_shell in $as_candidate_shells $SHELL; do
-	 # Try only shells that exist, to save several forks.
-	 if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		{ ("$as_shell") 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
-esac
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
 
-fi
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
 
-
-:
-_ASEOF
-}; then
-  CONFIG_SHELL=$as_shell
-	       as_have_required=yes
-	       if { "$as_shell" 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
-esac
-
-fi
-
-
-:
-(as_func_return () {
-  (exit $1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
-}
-
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
-  :
-else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = "$1" ); then
-  :
-else
-  exitcode=1
-  echo positional parameters were not saved.
-fi
-
-test $exitcode = 0) || { (exit 1); exit 1; }
-
-(
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
-
-_ASEOF
-}; then
-  break
-fi
-
-fi
-
-      done
-
-      if test "x$CONFIG_SHELL" != x; then
-  for as_var in BASH_ENV ENV
-	do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-	done
-	export CONFIG_SHELL
-	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
-fi
-
-
-    if test $as_have_required = no; then
-  echo This script requires a shell more modern than all the
-      echo shells that I found on your system.  Please install a
-      echo modern shell, or manually run the script under such a
-      echo shell if you do have one.
-      { (exit 1); exit 1; }
-fi
-
-
-fi
-
-fi
-
-
-
-(eval "as_func_return () {
-  (exit \$1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
-}
-
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
-  :
-else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
-  :
-else
-  exitcode=1
-  echo positional parameters were not saved.
-fi
-
-test \$exitcode = 0") || {
-  echo No shell found that supports shell functions.
-  echo Please tell bug-autoconf at gnu.org about your system,
-  echo including any error possibly output before this message.
-  echo This can help us improve future autoconf versions.
-  echo Configuration will now proceed without shell functions.
-}
-
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line after each line using $LINENO; the second 'sed'
-  # does the real work.  The second script uses 'N' to pair each
-  # line-number line with the line containing $LINENO, and appends
-  # trailing '-' during substitution so that $LINENO is not a special
-  # case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # scripts with optimization help from Paolo Bonzini.  Blame Lee
-  # E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-   { (exit 1); exit 1; }; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
--n*)
-  case `echo 'x\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  *)   ECHO_C='\c';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -p'
-  fi
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-
-exec 7<&0 </dev/null 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-# Identity of this package.
-PACKAGE_NAME='mono-tools'
-PACKAGE_TARNAME='mono-tools'
-PACKAGE_VERSION='2.10'
-PACKAGE_STRING='mono-tools 2.10'
-PACKAGE_BUGREPORT=''
+# Identity of this package.
+PACKAGE_NAME='mono-tools'
+PACKAGE_TARNAME='mono-tools'
+PACKAGE_VERSION='2.11'
+PACKAGE_STRING='mono-tools 2.11'
+PACKAGE_BUGREPORT=''
+PACKAGE_URL=''
 
 ac_unique_file="README"
 # Factoring default headers for most tests.
@@ -635,11 +619,14 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='LTLIBOBJS
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
 LIBOBJS
 GENDARME_VERSION
 TOOLS_VERSION
 GNUNIT_VERSION
+MKINSTALLDIRS
 POSUB
 POFILES
 PO_IN_DATADIR_FALSE
@@ -661,6 +648,7 @@ CPP
 am__fastdepCC_FALSE
 am__fastdepCC_TRUE
 CCDEPMODE
+am__nodep
 AMDEPBACKSLASH
 AMDEP_FALSE
 AMDEP_TRUE
@@ -709,6 +697,8 @@ MONODOC_LIBS
 MONODOC_CFLAGS
 NUNIT_LIBS
 NUNIT_CFLAGS
+PKG_CONFIG_LIBDIR
+PKG_CONFIG_PATH
 PKG_CONFIG
 RESGEN
 DMCS_PRESENT_FALSE
@@ -787,6 +777,7 @@ bindir
 program_transform_name
 prefix
 exec_prefix
+PACKAGE_URL
 PACKAGE_BUGREPORT
 PACKAGE_STRING
 PACKAGE_VERSION
@@ -806,6 +797,8 @@ enable_dependency_tracking
 host_alias
 target_alias
 PKG_CONFIG
+PKG_CONFIG_PATH
+PKG_CONFIG_LIBDIR
 NUNIT_CFLAGS
 NUNIT_LIBS
 MONODOC_CFLAGS
@@ -888,8 +881,9 @@ do
   fi
 
   case $ac_option in
-  *=*)	ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *)	ac_optarg=yes ;;
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
   esac
 
   # Accept the important Cygnus configure options, so we can diagnose typos.
@@ -934,8 +928,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
-   { (exit 1); exit 1; }; }
+      as_fn_error $? "invalid feature name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -961,8 +954,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
-   { (exit 1); exit 1; }; }
+      as_fn_error $? "invalid feature name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1166,8 +1158,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
-   { (exit 1); exit 1; }; }
+      as_fn_error $? "invalid package name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1183,8 +1174,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
-   { (exit 1); exit 1; }; }
+      as_fn_error $? "invalid package name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1214,17 +1204,17 @@ do
   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
     x_libraries=$ac_optarg ;;
 
-  -*) { $as_echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; }
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
     ;;
 
   *=*)
     ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
-      { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2
-   { (exit 1); exit 1; }; }
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
     eval $ac_envvar=\$ac_optarg
     export $ac_envvar ;;
 
@@ -1233,7 +1223,7 @@ Try \`$0 --help' for more information." >&2
     $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
     expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
       $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
     ;;
 
   esac
@@ -1241,15 +1231,13 @@ done
 
 if test -n "$ac_prev"; then
   ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  { $as_echo "$as_me: error: missing argument to $ac_option" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "missing argument to $ac_option"
 fi
 
 if test -n "$ac_unrecognized_opts"; then
   case $enable_option_checking in
     no) ;;
-    fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2
-   { (exit 1); exit 1; }; } ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
     *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
   esac
 fi
@@ -1272,8 +1260,7 @@ do
     [\\/$]* | ?:[\\/]* )  continue;;
     NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
   esac
-  { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
 done
 
 # There might be people who depend on the old broken behavior: `$host'
@@ -1287,8 +1274,6 @@ target=$target_alias
 if test "x$host_alias" != x; then
   if test "x$build_alias" = x; then
     cross_compiling=maybe
-    $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used." >&2
   elif test "x$build_alias" != "x$host_alias"; then
     cross_compiling=yes
   fi
@@ -1303,11 +1288,9 @@ test "$silent" = yes && exec 6>/dev/null
 ac_pwd=`pwd` && test -n "$ac_pwd" &&
 ac_ls_di=`ls -di .` &&
 ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  { $as_echo "$as_me: error: working directory cannot be determined" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "working directory cannot be determined"
 test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "pwd does not report name of working directory"
 
 
 # Find the source files, if location was not specified.
@@ -1346,13 +1329,11 @@ else
 fi
 if test ! -r "$srcdir/$ac_unique_file"; then
   test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
 fi
 ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
 ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2
-   { (exit 1); exit 1; }; }
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
 	pwd)`
 # When building in place, set srcdir=.
 if test "$ac_abs_confdir" = "$ac_pwd"; then
@@ -1378,7 +1359,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures mono-tools 2.10 to adapt to many kinds of systems.
+\`configure' configures mono-tools 2.11 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1392,7 +1373,7 @@ Configuration:
       --help=short        display options specific to this package
       --help=recursive    display the short help of all the included packages
   -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking...' messages
+  -q, --quiet, --silent   do not print \`checking ...' messages
       --cache-file=FILE   cache test results in FILE [disabled]
   -C, --config-cache      alias for \`--cache-file=config.cache'
   -n, --no-create         do not create output files
@@ -1449,7 +1430,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of mono-tools 2.10:";;
+     short | recursive ) echo "Configuration of mono-tools 2.11:";;
    esac
   cat <<\_ACEOF
 
@@ -1459,13 +1440,17 @@ Optional Features:
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
   --enable-maintainer-mode  enable make rules and dependencies not useful
 			  (and sometimes confusing) to the casual installer
-  --enable-debug          Use 'DEBUG' Configuration default=YES
-  --enable-release        Use 'RELEASE' Configuration default=NO
+  --enable-debug          Use 'DEBUG' Configuration [default=YES]
+  --enable-release        Use 'RELEASE' Configuration [default=NO]
   --disable-dependency-tracking  speeds up one-time build
   --enable-dependency-tracking   do not reject slow dependency extractors
 
 Some influential environment variables:
   PKG_CONFIG  path to pkg-config utility
+  PKG_CONFIG_PATH
+              directories to add to pkg-config's search path
+  PKG_CONFIG_LIBDIR
+              path overriding pkg-config's built-in search path
   NUNIT_CFLAGS
               C compiler flags for NUNIT, overriding pkg-config
   NUNIT_LIBS  linker flags for NUNIT, overriding pkg-config
@@ -1498,13 +1483,14 @@ Some influential environment variables:
   LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
               nonstandard directory <lib dir>
   LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
               you have headers in a nonstandard directory <include dir>
   CPP         C preprocessor
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
 
+Report bugs to the package provider.
 _ACEOF
 ac_status=$?
 fi
@@ -1567,59 +1553,410 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-mono-tools configure 2.10
-generated by GNU Autoconf 2.63
+mono-tools configure 2.11
+generated by GNU Autoconf 2.69
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
   exit
 fi
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by mono-tools $as_me 2.10, which was
-generated by GNU Autoconf 2.63.  Invocation command line was
 
-  $ $0 $@
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
 
-_ACEOF
-exec 5>>config.log
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
 {
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
 
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+} # ac_fn_c_try_compile
 
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-_ASUNAME
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
 
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by mono-tools $as_me 2.11, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  $as_echo "PATH: $as_dir"
-done
+    $as_echo "PATH: $as_dir"
+  done
 IFS=$as_save_IFS
 
 } >&5
@@ -1656,9 +1993,9 @@ do
       ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
     esac
     case $ac_pass in
-    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
     2)
-      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+      as_fn_append ac_configure_args1 " '$ac_arg'"
       if test $ac_must_keep_next = true; then
 	ac_must_keep_next=false # Got value, back to normal.
       else
@@ -1674,13 +2011,13 @@ do
 	  -* ) ac_must_keep_next=true ;;
 	esac
       fi
-      ac_configure_args="$ac_configure_args '$ac_arg'"
+      as_fn_append ac_configure_args " '$ac_arg'"
       ;;
     esac
   done
 done
-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
 
 # When interrupted or exit'd, cleanup temporary files, and complete
 # config.log.  We remove comments because anyway the quotes in there
@@ -1692,11 +2029,9 @@ trap 'exit_status=$?
   {
     echo
 
-    cat <<\_ASBOX
-## ---------------- ##
+    $as_echo "## ---------------- ##
 ## Cache variables. ##
-## ---------------- ##
-_ASBOX
+## ---------------- ##"
     echo
     # The following way of writing the cache mishandles newlines in values,
 (
@@ -1705,13 +2040,13 @@ _ASBOX
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       esac
       case $ac_var in #(
       _ | IFS | as_nl) ;; #(
       BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) $as_unset $ac_var ;;
+      *) { eval $ac_var=; unset $ac_var;} ;;
       esac ;;
     esac
   done
@@ -1730,11 +2065,9 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
 )
     echo
 
-    cat <<\_ASBOX
-## ----------------- ##
+    $as_echo "## ----------------- ##
 ## Output variables. ##
-## ----------------- ##
-_ASBOX
+## ----------------- ##"
     echo
     for ac_var in $ac_subst_vars
     do
@@ -1747,11 +2080,9 @@ _ASBOX
     echo
 
     if test -n "$ac_subst_files"; then
-      cat <<\_ASBOX
-## ------------------- ##
+      $as_echo "## ------------------- ##
 ## File substitutions. ##
-## ------------------- ##
-_ASBOX
+## ------------------- ##"
       echo
       for ac_var in $ac_subst_files
       do
@@ -1765,11 +2096,9 @@ _ASBOX
     fi
 
     if test -s confdefs.h; then
-      cat <<\_ASBOX
-## ----------- ##
+      $as_echo "## ----------- ##
 ## confdefs.h. ##
-## ----------- ##
-_ASBOX
+## ----------- ##"
       echo
       cat confdefs.h
       echo
@@ -1783,46 +2112,53 @@ _ASBOX
     exit $exit_status
 ' 0
 for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
 done
 ac_signal=0
 
 # confdefs.h avoids OS command line length limits that DEFS can exceed.
 rm -f -r conftest* confdefs.h
 
+$as_echo "/* confdefs.h */" > confdefs.h
+
 # Predefined preprocessor variables.
 
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_NAME "$PACKAGE_NAME"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_TARNAME "$PACKAGE_TARNAME"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_VERSION "$PACKAGE_VERSION"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_STRING "$PACKAGE_STRING"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
 _ACEOF
 
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
 
 # Let the site file select an alternate cache file if it wants to.
 # Prefer an explicitly selected file to automatically selected ones.
 ac_site_file1=NONE
 ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
-  ac_site_file1=$CONFIG_SITE
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
 elif test "x$prefix" != xNONE; then
   ac_site_file1=$prefix/share/config.site
   ac_site_file2=$prefix/etc/config.site
@@ -1833,19 +2169,23 @@ fi
 for ac_site_file in "$ac_site_file1" "$ac_site_file2"
 do
   test "x$ac_site_file" = xNONE && continue
-  if test -r "$ac_site_file"; then
-    { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
 $as_echo "$as_me: loading site script $ac_site_file" >&6;}
     sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file"
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
   fi
 done
 
 if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special
-  # files actually), so we avoid doing that.
-  if test -f "$cache_file"; then
-    { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
 $as_echo "$as_me: loading cache $cache_file" >&6;}
     case $cache_file in
       [\\/]* | ?:[\\/]* ) . "$cache_file";;
@@ -1853,7 +2193,7 @@ $as_echo "$as_me: loading cache $cache_file" >&6;}
     esac
   fi
 else
-  { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
 $as_echo "$as_me: creating cache $cache_file" >&6;}
   >$cache_file
 fi
@@ -1868,11 +2208,11 @@ for ac_var in $ac_precious_vars; do
   eval ac_new_val=\$ac_env_${ac_var}_value
   case $ac_old_set,$ac_new_set in
     set,)
-      { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,set)
-      { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,);;
@@ -1882,17 +2222,17 @@ $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
 	ac_old_val_w=`echo x $ac_old_val`
 	ac_new_val_w=`echo x $ac_new_val`
 	if test "$ac_old_val_w" != "$ac_new_val_w"; then
-	  { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
 	  ac_cache_corrupted=:
 	else
-	  { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
 	  eval $ac_var=\$ac_old_val
 	fi
-	{ $as_echo "$as_me:$LINENO:   former value:  \`$ac_old_val'" >&5
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
 $as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-	{ $as_echo "$as_me:$LINENO:   current value: \`$ac_new_val'" >&5
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
 $as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
       fi;;
   esac
@@ -1904,43 +2244,20 @@ $as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
     esac
     case " $ac_configure_args " in
       *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
     esac
   fi
 done
 if $ac_cache_corrupted; then
-  { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
 fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -1967,9 +2284,7 @@ for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
   fi
 done
 if test -z "$ac_aux_dir"; then
-  { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
-$as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
 fi
 
 # These three variables are undocumented and unsupported,
@@ -1983,35 +2298,27 @@ ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
 
 # Make sure we can run config.sub.
 $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
-$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
 
-{ $as_echo "$as_me:$LINENO: checking build system type" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
 $as_echo_n "checking build system type... " >&6; }
-if test "${ac_cv_build+set}" = set; then
+if ${ac_cv_build+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_build_alias=$build_alias
 test "x$ac_build_alias" = x &&
   ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
 test "x$ac_build_alias" = x &&
-  { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
-$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
-$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
 $as_echo "$ac_cv_build" >&6; }
 case $ac_cv_build in
 *-*-*) ;;
-*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
-$as_echo "$as_me: error: invalid value of canonical build" >&2;}
-   { (exit 1); exit 1; }; };;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
 esac
 build=$ac_cv_build
 ac_save_IFS=$IFS; IFS='-'
@@ -2027,28 +2334,24 @@ IFS=$ac_save_IFS
 case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
 
 
-{ $as_echo "$as_me:$LINENO: checking host system type" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
 $as_echo_n "checking host system type... " >&6; }
-if test "${ac_cv_host+set}" = set; then
+if ${ac_cv_host+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test "x$host_alias" = x; then
   ac_cv_host=$ac_cv_build
 else
   ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
-$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
 fi
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
 $as_echo "$ac_cv_host" >&6; }
 case $ac_cv_host in
 *-*-*) ;;
-*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
-$as_echo "$as_me: error: invalid value of canonical host" >&2;}
-   { (exit 1); exit 1; }; };;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
 esac
 host=$ac_cv_host
 ac_save_IFS=$IFS; IFS='-'
@@ -2064,28 +2367,24 @@ IFS=$ac_save_IFS
 case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
 
 
-{ $as_echo "$as_me:$LINENO: checking target system type" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
 $as_echo_n "checking target system type... " >&6; }
-if test "${ac_cv_target+set}" = set; then
+if ${ac_cv_target+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test "x$target_alias" = x; then
   ac_cv_target=$ac_cv_host
 else
   ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
-    { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5
-$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
 fi
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_target" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
 $as_echo "$ac_cv_target" >&6; }
 case $ac_cv_target in
 *-*-*) ;;
-*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical target" >&5
-$as_echo "$as_me: error: invalid value of canonical target" >&2;}
-   { (exit 1); exit 1; }; };;
+*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
 esac
 target=$ac_cv_target
 ac_save_IFS=$IFS; IFS='-'
@@ -2107,7 +2406,8 @@ test -n "$target_alias" &&
   test "$program_prefix$program_suffix$program_transform_name" = \
     NONENONEs,x,x, &&
   program_prefix=${target_alias}-
-am__api_version='1.10'
+
+am__api_version='1.11'
 
 # Find a good install program.  We prefer a C program (faster),
 # so one script is as good as another.  But avoid the broken or
@@ -2123,10 +2423,10 @@ am__api_version='1.10'
 # OS/2's system install, which has a completely different semantic
 # ./install, which can be erroneously created by make from ./install.sh.
 # Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
 $as_echo_n "checking for a BSD-compatible install... " >&6; }
 if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
+if ${ac_cv_path_install+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -2134,11 +2434,11 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
-  ./ | .// | /cC/* | \
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
   /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
   /usr/ucb/* ) ;;
   *)
     # OSF1 and SCO ODT 3.0 have their own names for install.
@@ -2146,7 +2446,7 @@ case $as_dir/ in
     # by default.
     for ac_prog in ginstall scoinst install; do
       for ac_exec_ext in '' $ac_executable_extensions; do
-	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
 	  if test $ac_prog = install &&
 	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
 	    # AIX install.  It has an incompatible calling convention.
@@ -2175,7 +2475,7 @@ case $as_dir/ in
     ;;
 esac
 
-done
+  done
 IFS=$as_save_IFS
 
 rm -rf conftest.one conftest.two conftest.dir
@@ -2191,7 +2491,7 @@ fi
     INSTALL=$ac_install_sh
   fi
 fi
-{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
 $as_echo "$INSTALL" >&6; }
 
 # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
@@ -2202,21 +2502,34 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
 
 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
-{ $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
 $as_echo_n "checking whether build environment is sane... " >&6; }
 # Just in case
 sleep 1
 echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
+    as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
 # Do `set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
    if test "$*" = "X"; then
       # -L didn't work.
-      set X `ls -t $srcdir/configure conftest.file`
+      set X `ls -t "$srcdir/configure" conftest.file`
    fi
    rm -f conftest.file
    if test "$*" != "X $srcdir/configure conftest.file" \
@@ -2226,11 +2539,8 @@ if (
       # if, for instance, CONFIG_SHELL is bash and it inherits a
       # broken ls alias from the environment.  This has actually
       # happened.  Such a system could not be considered "sane".
-      { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" >&5
-$as_echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" >&2;}
-   { (exit 1); exit 1; }; }
+      as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" "$LINENO" 5
    fi
 
    test "$2" = conftest.file
@@ -2239,13 +2549,10 @@ then
    # Ok.
    :
 else
-   { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files!
-Check your system clock" >&5
-$as_echo "$as_me: error: newly created file is older than distributed files!
-Check your system clock" >&2;}
-   { (exit 1); exit 1; }; }
+   as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
 fi
-{ $as_echo "$as_me:$LINENO: result: yes" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 test "$program_prefix" != NONE &&
   program_transform_name="s&^&$program_prefix&;$program_transform_name"
@@ -2260,44 +2567,161 @@ program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
 # expand $ac_aux_dir to an absolute path
 am_aux_dir=`cd $ac_aux_dir && pwd`
 
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
 # Use eval to expand $SHELL
 if eval "$MISSING --run true"; then
   am_missing_run="$MISSING --run "
 else
   am_missing_run=
-  { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
 fi
 
-{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
-if test -z "$MKDIR_P"; then
-  if test "${ac_cv_path_mkdir+set}" = set; then
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in mkdir gmkdir; do
-	 for ac_exec_ext in '' $ac_executable_extensions; do
-	   { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
-	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
-	     'mkdir (GNU coreutils) '* | \
-	     'mkdir (coreutils) '* | \
-	     'mkdir (fileutils) '4.1*)
-	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
-	       break 3;;
-	   esac
-	 done
-       done
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
 done
+  done
 IFS=$as_save_IFS
 
 fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if ${ac_cv_path_mkdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in mkdir gmkdir; do
+	 for ac_exec_ext in '' $ac_executable_extensions; do
+	   as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+	     'mkdir (GNU coreutils) '* | \
+	     'mkdir (coreutils) '* | \
+	     'mkdir (fileutils) '4.1*)
+	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+	       break 3;;
+	   esac
+	 done
+       done
+  done
+IFS=$as_save_IFS
 
+fi
+
+  test -d ./--version && rmdir ./--version
   if test "${ac_cv_path_mkdir+set}" = set; then
     MKDIR_P="$ac_cv_path_mkdir -p"
   else
@@ -2305,11 +2729,10 @@ fi
     # value for MKDIR_P within a source directory, because that will
     # break other packages using the cache if that directory is
     # removed, or if the value is a relative name.
-    test -d ./--version && rmdir ./--version
     MKDIR_P="$ac_install_sh -d"
   fi
 fi
-{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
 $as_echo "$MKDIR_P" >&6; }
 
 mkdir_p="$MKDIR_P"
@@ -2322,9 +2745,9 @@ for ac_prog in gawk mawk nawk awk
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AWK+set}" = set; then
+if ${ac_cv_prog_AWK+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$AWK"; then
@@ -2335,24 +2758,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 AWK=$ac_cv_prog_AWK
 if test -n "$AWK"; then
-  { $as_echo "$as_me:$LINENO: result: $AWK" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
 $as_echo "$AWK" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -2360,11 +2783,11 @@ fi
   test -n "$AWK" && break
 done
 
-{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
 set x ${MAKE-make}
 ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat >conftest.make <<\_ACEOF
@@ -2372,7 +2795,7 @@ SHELL = /bin/sh
 all:
 	@echo '@@@%%%=$(MAKE)=@@@%%%'
 _ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
 case `${MAKE-make} -f conftest.make 2>/dev/null` in
   *@@@%%%=?*=@@@%%%*)
     eval ac_cv_prog_make_${ac_make}_set=yes;;
@@ -2382,11 +2805,11 @@ esac
 rm -f conftest.make
 fi
 if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
   SET_MAKE=
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
   SET_MAKE="MAKE=${MAKE-make}"
 fi
@@ -2406,9 +2829,7 @@ if test "`cd $srcdir && pwd`" != "`pwd`"; then
   am__isrc=' -I$(srcdir)'
   # test to see if srcdir already configured
   if test -f $srcdir/config.status; then
-    { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
-$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
   fi
 fi
 
@@ -2424,7 +2845,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='mono-tools'
- VERSION='2.10'
+ VERSION='2.11'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2452,116 +2873,14 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
 
 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 
-install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
-
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
-# Always define AMTAR for backward compatibility.
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
+# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
 
 
-{ $as_echo "$as_me:$LINENO: checking how to create a ustar tar archive" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5
 $as_echo_n "checking how to create a ustar tar archive... " >&6; }
 # Loop over all known methods to create a tar archive until one works.
 _am_tools='gnutar plaintar pax cpio none'
@@ -2634,29 +2953,30 @@ do
 done
 rm -rf conftest.dir
 
-if test "${am_cv_prog_tar_ustar+set}" = set; then
+if ${am_cv_prog_tar_ustar+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   am_cv_prog_tar_ustar=$_am_tool
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $am_cv_prog_tar_ustar" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5
 $as_echo "$am_cv_prog_tar_ustar" >&6; }
 
 
 
 
 
-{ $as_echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
     # Check whether --enable-maintainer-mode was given.
-if test "${enable_maintainer_mode+set}" = set; then
+if test "${enable_maintainer_mode+set}" = set; then :
   enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
 else
   USE_MAINTAINER_MODE=no
 fi
 
-  { $as_echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
 $as_echo "$USE_MAINTAINER_MODE" >&6; }
    if test $USE_MAINTAINER_MODE = yes; then
   MAINTAINER_MODE_TRUE=
@@ -2670,149 +2990,57 @@ fi
 
 
 
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
+
+
+#capture aclocal flags for autoreconf
+
+
+# Extract the first word of "mcs", so it can be a program name with args.
+set dummy mcs; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MCS+:} false; then :
   $as_echo_n "(cached) " >&6
 else
+  case $MCS in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MCS="$MCS" # Let the user override the test with a path.
+  ;;
+  *)
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
-  ./ | .// | /cC/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
-	  if test $ac_prog = install &&
-	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # AIX install.  It has an incompatible calling convention.
-	    :
-	  elif test $ac_prog = install &&
-	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # program-specific install script used by HP pwplus--don't use.
-	    :
-	  else
-	    rm -rf conftest.one conftest.two conftest.dir
-	    echo one > conftest.one
-	    echo two > conftest.two
-	    mkdir conftest.dir
-	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
-	      test -s conftest.one && test -s conftest.two &&
-	      test -s conftest.dir/conftest.one &&
-	      test -s conftest.dir/conftest.two
-	    then
-	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-	      break 3
-	    fi
-	  fi
-	fi
-      done
-    done
-    ;;
-esac
-
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MCS="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
 done
+  done
 IFS=$as_save_IFS
 
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-
-#capture aclocal flags for autoreconf
-
-
-# Extract the first word of "mcs", so it can be a program name with args.
-set dummy mcs; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_MCS+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  case $MCS in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_MCS="$MCS" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_MCS="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-  test -z "$ac_cv_path_MCS" && ac_cv_path_MCS="no"
-  ;;
-esac
+  test -z "$ac_cv_path_MCS" && ac_cv_path_MCS="no"
+  ;;
+esac
 fi
 MCS=$ac_cv_path_MCS
 if test -n "$MCS"; then
-  { $as_echo "$as_me:$LINENO: result: $MCS" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MCS" >&5
 $as_echo "$MCS" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
 # Extract the first word of "gmcs", so it can be a program name with args.
 set dummy gmcs; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_GMCS+set}" = set; then
+if ${ac_cv_path_GMCS+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case $GMCS in
@@ -2825,14 +3053,14 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_GMCS="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   test -z "$ac_cv_path_GMCS" && ac_cv_path_GMCS="no"
@@ -2841,19 +3069,19 @@ esac
 fi
 GMCS=$ac_cv_path_GMCS
 if test -n "$GMCS"; then
-  { $as_echo "$as_me:$LINENO: result: $GMCS" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMCS" >&5
 $as_echo "$GMCS" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
 # Extract the first word of "dmcs", so it can be a program name with args.
 set dummy dmcs; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_DMCS+set}" = set; then
+if ${ac_cv_path_DMCS+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case $DMCS in
@@ -2866,14 +3094,14 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_DMCS="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   test -z "$ac_cv_path_DMCS" && ac_cv_path_DMCS="no"
@@ -2882,19 +3110,19 @@ esac
 fi
 DMCS=$ac_cv_path_DMCS
 if test -n "$DMCS"; then
-  { $as_echo "$as_me:$LINENO: result: $DMCS" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DMCS" >&5
 $as_echo "$DMCS" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
 # Extract the first word of "mono", so it can be a program name with args.
 set dummy mono; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_RUNTIME+set}" = set; then
+if ${ac_cv_path_RUNTIME+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case $RUNTIME in
@@ -2907,14 +3135,14 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_RUNTIME="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   test -z "$ac_cv_path_RUNTIME" && ac_cv_path_RUNTIME="no"
@@ -2923,19 +3151,19 @@ esac
 fi
 RUNTIME=$ac_cv_path_RUNTIME
 if test -n "$RUNTIME"; then
-  { $as_echo "$as_me:$LINENO: result: $RUNTIME" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RUNTIME" >&5
 $as_echo "$RUNTIME" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
 # Extract the first word of "gacutil", so it can be a program name with args.
 set dummy gacutil; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_GACUTIL+set}" = set; then
+if ${ac_cv_path_GACUTIL+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case $GACUTIL in
@@ -2948,14 +3176,14 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_GACUTIL="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   test -z "$ac_cv_path_GACUTIL" && ac_cv_path_GACUTIL="no"
@@ -2964,10 +3192,10 @@ esac
 fi
 GACUTIL=$ac_cv_path_GACUTIL
 if test -n "$GACUTIL"; then
-  { $as_echo "$as_me:$LINENO: result: $GACUTIL" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GACUTIL" >&5
 $as_echo "$GACUTIL" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -2975,9 +3203,7 @@ fi
 
 CS="C#"
 if test "x$MCS" = "xno"  ; then
-		{ { $as_echo "$as_me:$LINENO: error: No $CS compiler found" >&5
-$as_echo "$as_me: error: No $CS compiler found" >&2;}
-   { (exit 1); exit 1; }; }
+		as_fn_error $? "No $CS compiler found" "$LINENO" 5
 fi
 
  if test ! "x$DMCS" = "xno"; then
@@ -2990,16 +3216,14 @@ fi
 
 
 if test "x$RUNTIME" = "xno" ; then
-	{ { $as_echo "$as_me:$LINENO: error: No runtime found" >&5
-$as_echo "$as_me: error: No runtime found" >&2;}
-   { (exit 1); exit 1; }; }
+	as_fn_error $? "No runtime found" "$LINENO" 5
 fi
 
 # Extract the first word of "resgen", so it can be a program name with args.
 set dummy resgen; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_RESGEN+set}" = set; then
+if ${ac_cv_path_RESGEN+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case $RESGEN in
@@ -3012,14 +3236,14 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_RESGEN="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   test -z "$ac_cv_path_RESGEN" && ac_cv_path_RESGEN="no"
@@ -3028,18 +3252,16 @@ esac
 fi
 RESGEN=$ac_cv_path_RESGEN
 if test -n "$RESGEN"; then
-  { $as_echo "$as_me:$LINENO: result: $RESGEN" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RESGEN" >&5
 $as_echo "$RESGEN" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
 if test "x$RESGEN" = "xno"  ; then
-	{ { $as_echo "$as_me:$LINENO: error: resgen not found in $PATH" >&5
-$as_echo "$as_me: error: resgen not found in $PATH" >&2;}
-   { (exit 1); exit 1; }; }
+	as_fn_error $? "resgen not found in $PATH" "$LINENO" 5
 fi
 
 
@@ -3052,13 +3274,18 @@ fi
 
 
 
+
+
+
+
+
 if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
 	if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
 set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case $PKG_CONFIG in
@@ -3071,14 +3298,14 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   ;;
@@ -3086,10 +3313,10 @@ esac
 fi
 PKG_CONFIG=$ac_cv_path_PKG_CONFIG
 if test -n "$PKG_CONFIG"; then
-  { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
 $as_echo "$PKG_CONFIG" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -3099,9 +3326,9 @@ if test -z "$ac_cv_path_PKG_CONFIG"; then
   ac_pt_PKG_CONFIG=$PKG_CONFIG
   # Extract the first word of "pkg-config", so it can be a program name with args.
 set dummy pkg-config; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case $ac_pt_PKG_CONFIG in
@@ -3114,14 +3341,14 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   ;;
@@ -3129,10 +3356,10 @@ esac
 fi
 ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
 if test -n "$ac_pt_PKG_CONFIG"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
 $as_echo "$ac_pt_PKG_CONFIG" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -3141,7 +3368,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -3154,33 +3381,33 @@ fi
 fi
 if test -n "$PKG_CONFIG"; then
 	_pkg_min_version=0.9.0
-	{ $as_echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
 	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
-		{ $as_echo "$as_me:$LINENO: result: yes" >&5
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 	else
-		{ $as_echo "$as_me:$LINENO: result: no" >&5
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 		PKG_CONFIG=""
 	fi
-
 fi
 
 pkg_failed=no
-{ $as_echo "$as_me:$LINENO: checking for NUNIT" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for NUNIT" >&5
 $as_echo_n "checking for NUNIT... " >&6; }
 
 if test -n "$NUNIT_CFLAGS"; then
     pkg_cv_NUNIT_CFLAGS="$NUNIT_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"mono-nunit\"") >&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-nunit\""; } >&5
   ($PKG_CONFIG --exists --print-errors "mono-nunit") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
   pkg_cv_NUNIT_CFLAGS=`$PKG_CONFIG --cflags "mono-nunit" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -3191,12 +3418,13 @@ if test -n "$NUNIT_LIBS"; then
     pkg_cv_NUNIT_LIBS="$NUNIT_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"mono-nunit\"") >&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-nunit\""; } >&5
   ($PKG_CONFIG --exists --print-errors "mono-nunit") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
   pkg_cv_NUNIT_LIBS=`$PKG_CONFIG --libs "mono-nunit" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -3207,6 +3435,8 @@ fi
 
 
 if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
         _pkg_short_errors_supported=yes
@@ -3214,25 +3444,14 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        NUNIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "mono-nunit" 2>&1`
+	        NUNIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "mono-nunit" 2>&1`
         else
-	        NUNIT_PKG_ERRORS=`$PKG_CONFIG --print-errors "mono-nunit" 2>&1`
+	        NUNIT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "mono-nunit" 2>&1`
         fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$NUNIT_PKG_ERRORS" >&5
 
-	{ { $as_echo "$as_me:$LINENO: error: Package requirements (mono-nunit) were not met:
-
-$NUNIT_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-Alternatively, you may set the environment variables NUNIT_CFLAGS
-and NUNIT_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-" >&5
-$as_echo "$as_me: error: Package requirements (mono-nunit) were not met:
+	as_fn_error $? "Package requirements (mono-nunit) were not met:
 
 $NUNIT_PKG_ERRORS
 
@@ -3241,23 +3460,13 @@ installed software in a non-standard prefix.
 
 Alternatively, you may set the environment variables NUNIT_CFLAGS
 and NUNIT_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-" >&2;}
-   { (exit 1); exit 1; }; }
+See the pkg-config man page for more details." "$LINENO" 5
 elif test $pkg_failed = untried; then
-	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-Alternatively, you may set the environment variables NUNIT_CFLAGS
-and NUNIT_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: The pkg-config script could not be found or is too old.  Make sure it
+as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
 is in your PATH or set the PKG_CONFIG environment variable to the full
 path to pkg-config.
 
@@ -3266,32 +3475,32 @@ and NUNIT_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+See \`config.log' for more details" "$LINENO" 5; }
 else
 	NUNIT_CFLAGS=$pkg_cv_NUNIT_CFLAGS
 	NUNIT_LIBS=$pkg_cv_NUNIT_LIBS
-        { $as_echo "$as_me:$LINENO: result: yes" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-	:
+
 fi
 
 
 
 pkg_failed=no
-{ $as_echo "$as_me:$LINENO: checking for MONODOC" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MONODOC" >&5
 $as_echo_n "checking for MONODOC... " >&6; }
 
 if test -n "$MONODOC_CFLAGS"; then
     pkg_cv_MONODOC_CFLAGS="$MONODOC_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"monodoc\"") >&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"monodoc\""; } >&5
   ($PKG_CONFIG --exists --print-errors "monodoc") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
   pkg_cv_MONODOC_CFLAGS=`$PKG_CONFIG --cflags "monodoc" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -3302,12 +3511,13 @@ if test -n "$MONODOC_LIBS"; then
     pkg_cv_MONODOC_LIBS="$MONODOC_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"monodoc\"") >&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"monodoc\""; } >&5
   ($PKG_CONFIG --exists --print-errors "monodoc") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
   pkg_cv_MONODOC_LIBS=`$PKG_CONFIG --libs "monodoc" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -3318,6 +3528,8 @@ fi
 
 
 if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
         _pkg_short_errors_supported=yes
@@ -3325,25 +3537,14 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        MONODOC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "monodoc" 2>&1`
+	        MONODOC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "monodoc" 2>&1`
         else
-	        MONODOC_PKG_ERRORS=`$PKG_CONFIG --print-errors "monodoc" 2>&1`
+	        MONODOC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "monodoc" 2>&1`
         fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$MONODOC_PKG_ERRORS" >&5
 
-	{ { $as_echo "$as_me:$LINENO: error: Package requirements (monodoc) were not met:
-
-$MONODOC_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-Alternatively, you may set the environment variables MONODOC_CFLAGS
-and MONODOC_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-" >&5
-$as_echo "$as_me: error: Package requirements (monodoc) were not met:
+	as_fn_error $? "Package requirements (monodoc) were not met:
 
 $MONODOC_PKG_ERRORS
 
@@ -3352,23 +3553,13 @@ installed software in a non-standard prefix.
 
 Alternatively, you may set the environment variables MONODOC_CFLAGS
 and MONODOC_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-" >&2;}
-   { (exit 1); exit 1; }; }
+See the pkg-config man page for more details." "$LINENO" 5
 elif test $pkg_failed = untried; then
-	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-Alternatively, you may set the environment variables MONODOC_CFLAGS
-and MONODOC_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: The pkg-config script could not be found or is too old.  Make sure it
+as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
 is in your PATH or set the PKG_CONFIG environment variable to the full
 path to pkg-config.
 
@@ -3377,21 +3568,20 @@ and MONODOC_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+See \`config.log' for more details" "$LINENO" 5; }
 else
 	MONODOC_CFLAGS=$pkg_cv_MONODOC_CFLAGS
 	MONODOC_LIBS=$pkg_cv_MONODOC_LIBS
-        { $as_echo "$as_me:$LINENO: result: yes" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-	:
+
 fi
 
 # Extract the first word of "mdoc", so it can be a program name with args.
 set dummy mdoc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_MDOC+set}" = set; then
+if ${ac_cv_path_MDOC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case $MDOC in
@@ -3404,14 +3594,14 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_MDOC="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   test -z "$ac_cv_path_MDOC" && ac_cv_path_MDOC="no"
@@ -3420,10 +3610,10 @@ esac
 fi
 MDOC=$ac_cv_path_MDOC
 if test -n "$MDOC"; then
-  { $as_echo "$as_me:$LINENO: result: $MDOC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MDOC" >&5
 $as_echo "$MDOC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -3432,19 +3622,20 @@ fi
 
 
 pkg_failed=no
-{ $as_echo "$as_me:$LINENO: checking for GTK_SHARP" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK_SHARP" >&5
 $as_echo_n "checking for GTK_SHARP... " >&6; }
 
 if test -n "$GTK_SHARP_CFLAGS"; then
     pkg_cv_GTK_SHARP_CFLAGS="$GTK_SHARP_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtk-sharp-2.0 glade-sharp-2.0\"") >&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk-sharp-2.0 glade-sharp-2.0\""; } >&5
   ($PKG_CONFIG --exists --print-errors "gtk-sharp-2.0 glade-sharp-2.0") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
   pkg_cv_GTK_SHARP_CFLAGS=`$PKG_CONFIG --cflags "gtk-sharp-2.0 glade-sharp-2.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -3455,12 +3646,13 @@ if test -n "$GTK_SHARP_LIBS"; then
     pkg_cv_GTK_SHARP_LIBS="$GTK_SHARP_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtk-sharp-2.0 glade-sharp-2.0\"") >&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk-sharp-2.0 glade-sharp-2.0\""; } >&5
   ($PKG_CONFIG --exists --print-errors "gtk-sharp-2.0 glade-sharp-2.0") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
   pkg_cv_GTK_SHARP_LIBS=`$PKG_CONFIG --libs "gtk-sharp-2.0 glade-sharp-2.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -3471,6 +3663,8 @@ fi
 
 
 if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
         _pkg_short_errors_supported=yes
@@ -3478,25 +3672,14 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        GTK_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtk-sharp-2.0 glade-sharp-2.0" 2>&1`
+	        GTK_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtk-sharp-2.0 glade-sharp-2.0" 2>&1`
         else
-	        GTK_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtk-sharp-2.0 glade-sharp-2.0" 2>&1`
+	        GTK_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtk-sharp-2.0 glade-sharp-2.0" 2>&1`
         fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$GTK_SHARP_PKG_ERRORS" >&5
 
-	{ { $as_echo "$as_me:$LINENO: error: Package requirements (gtk-sharp-2.0 glade-sharp-2.0) were not met:
-
-$GTK_SHARP_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-Alternatively, you may set the environment variables GTK_SHARP_CFLAGS
-and GTK_SHARP_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-" >&5
-$as_echo "$as_me: error: Package requirements (gtk-sharp-2.0 glade-sharp-2.0) were not met:
+	as_fn_error $? "Package requirements (gtk-sharp-2.0 glade-sharp-2.0) were not met:
 
 $GTK_SHARP_PKG_ERRORS
 
@@ -3505,23 +3688,13 @@ installed software in a non-standard prefix.
 
 Alternatively, you may set the environment variables GTK_SHARP_CFLAGS
 and GTK_SHARP_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-" >&2;}
-   { (exit 1); exit 1; }; }
+See the pkg-config man page for more details." "$LINENO" 5
 elif test $pkg_failed = untried; then
-	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-Alternatively, you may set the environment variables GTK_SHARP_CFLAGS
-and GTK_SHARP_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: The pkg-config script could not be found or is too old.  Make sure it
+as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
 is in your PATH or set the PKG_CONFIG environment variable to the full
 path to pkg-config.
 
@@ -3530,14 +3703,13 @@ and GTK_SHARP_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+See \`config.log' for more details" "$LINENO" 5; }
 else
 	GTK_SHARP_CFLAGS=$pkg_cv_GTK_SHARP_CFLAGS
 	GTK_SHARP_LIBS=$pkg_cv_GTK_SHARP_LIBS
-        { $as_echo "$as_me:$LINENO: result: yes" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-	:
+
 fi
 
 
@@ -3545,19 +3717,20 @@ CSHARP_FLAGS=""
 
 
 pkg_failed=no
-{ $as_echo "$as_me:$LINENO: checking for GNOME_SHARP" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNOME_SHARP" >&5
 $as_echo_n "checking for GNOME_SHARP... " >&6; }
 
 if test -n "$GNOME_SHARP_CFLAGS"; then
     pkg_cv_GNOME_SHARP_CFLAGS="$GNOME_SHARP_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gnome-sharp-2.0 gconf-sharp-2.0\"") >&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnome-sharp-2.0 gconf-sharp-2.0\""; } >&5
   ($PKG_CONFIG --exists --print-errors "gnome-sharp-2.0 gconf-sharp-2.0") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
   pkg_cv_GNOME_SHARP_CFLAGS=`$PKG_CONFIG --cflags "gnome-sharp-2.0 gconf-sharp-2.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -3568,12 +3741,13 @@ if test -n "$GNOME_SHARP_LIBS"; then
     pkg_cv_GNOME_SHARP_LIBS="$GNOME_SHARP_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gnome-sharp-2.0 gconf-sharp-2.0\"") >&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnome-sharp-2.0 gconf-sharp-2.0\""; } >&5
   ($PKG_CONFIG --exists --print-errors "gnome-sharp-2.0 gconf-sharp-2.0") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
   pkg_cv_GNOME_SHARP_LIBS=`$PKG_CONFIG --libs "gnome-sharp-2.0 gconf-sharp-2.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -3584,6 +3758,8 @@ fi
 
 
 if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
         _pkg_short_errors_supported=yes
@@ -3591,22 +3767,22 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        GNOME_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gnome-sharp-2.0 gconf-sharp-2.0" 2>&1`
+	        GNOME_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gnome-sharp-2.0 gconf-sharp-2.0" 2>&1`
         else
-	        GNOME_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "gnome-sharp-2.0 gconf-sharp-2.0" 2>&1`
+	        GNOME_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gnome-sharp-2.0 gconf-sharp-2.0" 2>&1`
         fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$GNOME_SHARP_PKG_ERRORS" >&5
 
-	{ $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-                enable_gnome=no
+	enable_gnome=no
 elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 	enable_gnome=no
 else
 	GNOME_SHARP_CFLAGS=$pkg_cv_GNOME_SHARP_CFLAGS
 	GNOME_SHARP_LIBS=$pkg_cv_GNOME_SHARP_LIBS
-        { $as_echo "$as_me:$LINENO: result: yes" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 	enable_gnome=yes
 fi
@@ -3625,19 +3801,20 @@ fi
 
 
 pkg_failed=no
-{ $as_echo "$as_me:$LINENO: checking for GTKHTML_SHARP" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTKHTML_SHARP" >&5
 $as_echo_n "checking for GTKHTML_SHARP... " >&6; }
 
 if test -n "$GTKHTML_SHARP_CFLAGS"; then
     pkg_cv_GTKHTML_SHARP_CFLAGS="$GTKHTML_SHARP_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtkhtml-sharp-3.14\"") >&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtkhtml-sharp-3.14\""; } >&5
   ($PKG_CONFIG --exists --print-errors "gtkhtml-sharp-3.14") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
   pkg_cv_GTKHTML_SHARP_CFLAGS=`$PKG_CONFIG --cflags "gtkhtml-sharp-3.14" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -3648,12 +3825,13 @@ if test -n "$GTKHTML_SHARP_LIBS"; then
     pkg_cv_GTKHTML_SHARP_LIBS="$GTKHTML_SHARP_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtkhtml-sharp-3.14\"") >&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtkhtml-sharp-3.14\""; } >&5
   ($PKG_CONFIG --exists --print-errors "gtkhtml-sharp-3.14") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
   pkg_cv_GTKHTML_SHARP_LIBS=`$PKG_CONFIG --libs "gtkhtml-sharp-3.14" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -3664,6 +3842,8 @@ fi
 
 
 if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
         _pkg_short_errors_supported=yes
@@ -3671,22 +3851,22 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        GTKHTML_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtkhtml-sharp-3.14" 2>&1`
+	        GTKHTML_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtkhtml-sharp-3.14" 2>&1`
         else
-	        GTKHTML_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtkhtml-sharp-3.14" 2>&1`
+	        GTKHTML_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtkhtml-sharp-3.14" 2>&1`
         fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$GTKHTML_SHARP_PKG_ERRORS" >&5
 
-	{ $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-                enable_gtkhtml=no
+	enable_gtkhtml=no
 elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 	enable_gtkhtml=no
 else
 	GTKHTML_SHARP_CFLAGS=$pkg_cv_GTKHTML_SHARP_CFLAGS
 	GTKHTML_SHARP_LIBS=$pkg_cv_GTKHTML_SHARP_LIBS
-        { $as_echo "$as_me:$LINENO: result: yes" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 	enable_gtkhtml=yes
 fi
@@ -3695,19 +3875,20 @@ if test "x$enable_gtkhtml" = "xyes"; then
 else
 
 pkg_failed=no
-{ $as_echo "$as_me:$LINENO: checking for GTKHTML_SHARP" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTKHTML_SHARP" >&5
 $as_echo_n "checking for GTKHTML_SHARP... " >&6; }
 
 if test -n "$GTKHTML_SHARP_CFLAGS"; then
     pkg_cv_GTKHTML_SHARP_CFLAGS="$GTKHTML_SHARP_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtkhtml-sharp-2.0\"") >&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtkhtml-sharp-2.0\""; } >&5
   ($PKG_CONFIG --exists --print-errors "gtkhtml-sharp-2.0") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
   pkg_cv_GTKHTML_SHARP_CFLAGS=`$PKG_CONFIG --cflags "gtkhtml-sharp-2.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -3718,12 +3899,13 @@ if test -n "$GTKHTML_SHARP_LIBS"; then
     pkg_cv_GTKHTML_SHARP_LIBS="$GTKHTML_SHARP_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtkhtml-sharp-2.0\"") >&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtkhtml-sharp-2.0\""; } >&5
   ($PKG_CONFIG --exists --print-errors "gtkhtml-sharp-2.0") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
   pkg_cv_GTKHTML_SHARP_LIBS=`$PKG_CONFIG --libs "gtkhtml-sharp-2.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -3734,6 +3916,8 @@ fi
 
 
 if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
         _pkg_short_errors_supported=yes
@@ -3741,22 +3925,22 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        GTKHTML_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtkhtml-sharp-2.0" 2>&1`
+	        GTKHTML_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtkhtml-sharp-2.0" 2>&1`
         else
-	        GTKHTML_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtkhtml-sharp-2.0" 2>&1`
+	        GTKHTML_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtkhtml-sharp-2.0" 2>&1`
         fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$GTKHTML_SHARP_PKG_ERRORS" >&5
 
-	{ $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-                enable_gtkhtml=no
+	enable_gtkhtml=no
 elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 	enable_gtkhtml=no
 else
 	GTKHTML_SHARP_CFLAGS=$pkg_cv_GTKHTML_SHARP_CFLAGS
 	GTKHTML_SHARP_LIBS=$pkg_cv_GTKHTML_SHARP_LIBS
-        { $as_echo "$as_me:$LINENO: result: yes" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 	enable_gtkhtml=yes
 fi
@@ -3775,19 +3959,20 @@ fi
 
 
 pkg_failed=no
-{ $as_echo "$as_me:$LINENO: checking for GECKO_SHARP" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GECKO_SHARP" >&5
 $as_echo_n "checking for GECKO_SHARP... " >&6; }
 
 if test -n "$GECKO_SHARP_CFLAGS"; then
     pkg_cv_GECKO_SHARP_CFLAGS="$GECKO_SHARP_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gecko-sharp-2.0\"") >&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gecko-sharp-2.0\""; } >&5
   ($PKG_CONFIG --exists --print-errors "gecko-sharp-2.0") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
   pkg_cv_GECKO_SHARP_CFLAGS=`$PKG_CONFIG --cflags "gecko-sharp-2.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -3798,12 +3983,13 @@ if test -n "$GECKO_SHARP_LIBS"; then
     pkg_cv_GECKO_SHARP_LIBS="$GECKO_SHARP_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gecko-sharp-2.0\"") >&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gecko-sharp-2.0\""; } >&5
   ($PKG_CONFIG --exists --print-errors "gecko-sharp-2.0") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
   pkg_cv_GECKO_SHARP_LIBS=`$PKG_CONFIG --libs "gecko-sharp-2.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -3814,6 +4000,8 @@ fi
 
 
 if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
         _pkg_short_errors_supported=yes
@@ -3821,22 +4009,22 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        GECKO_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gecko-sharp-2.0" 2>&1`
+	        GECKO_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gecko-sharp-2.0" 2>&1`
         else
-	        GECKO_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "gecko-sharp-2.0" 2>&1`
+	        GECKO_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gecko-sharp-2.0" 2>&1`
         fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$GECKO_SHARP_PKG_ERRORS" >&5
 
-	{ $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-                enable_gecko=no
+	enable_gecko=no
 elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 	enable_gecko=no
 else
 	GECKO_SHARP_CFLAGS=$pkg_cv_GECKO_SHARP_CFLAGS
 	GECKO_SHARP_LIBS=$pkg_cv_GECKO_SHARP_LIBS
-        { $as_echo "$as_me:$LINENO: result: yes" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 	enable_gecko=yes
 fi
@@ -3858,19 +4046,20 @@ fi
 
 
 pkg_failed=no
-{ $as_echo "$as_me:$LINENO: checking for WEBKIT_SHARP" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for WEBKIT_SHARP" >&5
 $as_echo_n "checking for WEBKIT_SHARP... " >&6; }
 
 if test -n "$WEBKIT_SHARP_CFLAGS"; then
     pkg_cv_WEBKIT_SHARP_CFLAGS="$WEBKIT_SHARP_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"webkit-sharp-1.0\"") >&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"webkit-sharp-1.0\""; } >&5
   ($PKG_CONFIG --exists --print-errors "webkit-sharp-1.0") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
   pkg_cv_WEBKIT_SHARP_CFLAGS=`$PKG_CONFIG --cflags "webkit-sharp-1.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -3881,12 +4070,13 @@ if test -n "$WEBKIT_SHARP_LIBS"; then
     pkg_cv_WEBKIT_SHARP_LIBS="$WEBKIT_SHARP_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"webkit-sharp-1.0\"") >&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"webkit-sharp-1.0\""; } >&5
   ($PKG_CONFIG --exists --print-errors "webkit-sharp-1.0") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
   pkg_cv_WEBKIT_SHARP_LIBS=`$PKG_CONFIG --libs "webkit-sharp-1.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -3897,6 +4087,8 @@ fi
 
 
 if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
         _pkg_short_errors_supported=yes
@@ -3904,22 +4096,22 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        WEBKIT_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "webkit-sharp-1.0" 2>&1`
+	        WEBKIT_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "webkit-sharp-1.0" 2>&1`
         else
-	        WEBKIT_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "webkit-sharp-1.0" 2>&1`
+	        WEBKIT_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "webkit-sharp-1.0" 2>&1`
         fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$WEBKIT_SHARP_PKG_ERRORS" >&5
 
-	{ $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-                enable_webkit=no
+	enable_webkit=no
 elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 	enable_webkit=no
 else
 	WEBKIT_SHARP_CFLAGS=$pkg_cv_WEBKIT_SHARP_CFLAGS
 	WEBKIT_SHARP_LIBS=$pkg_cv_WEBKIT_SHARP_LIBS
-        { $as_echo "$as_me:$LINENO: result: yes" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 	enable_webkit=yes
 fi
@@ -3936,21 +4128,21 @@ fi
 # PKG_CHECK_MODULES(MONOWEBBROWSER, mono-webbrowser, enable_monowebbrowser=yes, enable_monowebbrowser=no)
 # AC_SUBST(MONOWEBBROWSER_LIBS)
 
-{ $as_echo "$as_me:$LINENO: checking for Mono.WebBrowser" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Mono.WebBrowser" >&5
 $as_echo_n "checking for Mono.WebBrowser... " >&6; }
 if test "x$GACUTIL" = "xno"
 then
-   	{ $as_echo "$as_me:$LINENO: result: no" >&5
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 	if test "x$enable_monowebbrowser" = "x" ; then enable_monowebbrowser=no ; fi
 else
 	if $GACUTIL -l Mono.WebBrowser | grep -q "Mono.WebBrowser"
 	then
-		{ $as_echo "$as_me:$LINENO: result: yes" >&5
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 		enable_monowebbrowser=yes
 	else
-		{ $as_echo "$as_me:$LINENO: result: no" >&5
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 		enable_monowebbrowser=no
 	fi
@@ -3966,13 +4158,11 @@ fi
 
 
 if test "x$enable_gtkhtml$enable_gecko$enable_monowebbrowser$enable_webkit" = "xnononono" ; then
-   { { $as_echo "$as_me:$LINENO: error: no HTML display found. You need either gtkhtml, gecko, WebKit or Mono.WebBrowser" >&5
-$as_echo "$as_me: error: no HTML display found. You need either gtkhtml, gecko, WebKit or Mono.WebBrowser" >&2;}
-   { (exit 1); exit 1; }; }
+   as_fn_error $? "no HTML display found. You need either gtkhtml, gecko, WebKit or Mono.WebBrowser" "$LINENO" 5
 fi
 
 # Check whether --enable-debug was given.
-if test "${enable_debug+set}" = set; then
+if test "${enable_debug+set}" = set; then :
   enableval=$enable_debug; enable_debug=yes
 else
   enable_debug=no
@@ -3990,7 +4180,7 @@ if test "x$enable_debug" = "xyes" ; then
 	CONFIG_REQUESTED="yes"
 fi
 # Check whether --enable-release was given.
-if test "${enable_release+set}" = set; then
+if test "${enable_release+set}" = set; then :
   enableval=$enable_release; enable_release=yes
 else
   enable_release=no
@@ -4030,12 +4220,10 @@ fi
 
 
 if pkg-config --modversion cecil>/dev/null; then
-{ $as_echo "$as_me:$LINENO: result: \"Found cecil.pc\"" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: \"Found cecil.pc\"" >&5
 $as_echo "\"Found cecil.pc\"" >&6; }
 else
-{ { $as_echo "$as_me:$LINENO: error: You are missing Cecil (cecil.pc for packageconfig) required for gui-compare and minvoke" >&5
-$as_echo "$as_me: error: You are missing Cecil (cecil.pc for packageconfig) required for gui-compare and minvoke" >&2;}
-   { (exit 1); exit 1; }; }
+as_fn_error $? "You are missing Cecil (cecil.pc for packageconfig) required for gui-compare and minvoke" "$LINENO" 5
 fi
 
 CECIL_ASM=`pkg-config --variable=Libraries cecil`
@@ -4057,50 +4245,51 @@ ac_config_commands="$ac_config_commands depfiles"
 am_make=${MAKE-make}
 cat > confinc << 'END'
 am__doit:
-	@echo done
+	@echo this is the am__doit target
 .PHONY: am__doit
 END
 # If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
 $as_echo_n "checking for style of include used by $am_make... " >&6; }
 am__include="#"
 am__quote=
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# We grep out `Entering directory' and `Leaving directory'
-# messages which can occur if `w' ends up in MAKEFLAGS.
-# In particular we don't look at `^make:' because GNU make might
-# be invoked under some other name (usually "gmake"), in which
-# case it prints its new name instead of `make'.
-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
-   am__include=include
-   am__quote=
-   _am_result=GNU
-fi
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
 # Now try BSD make style include.
 if test "$am__include" = "#"; then
    echo '.include "confinc"' > confmf
-   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
-      am__include=.include
-      am__quote="\""
-      _am_result=BSD
-   fi
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
 fi
 
 
-{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
 $as_echo "$_am_result" >&6; }
 rm -f confinc confmf
 
 # Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then
+if test "${enable_dependency_tracking+set}" = set; then :
   enableval=$enable_dependency_tracking;
 fi
 
 if test "x$enable_dependency_tracking" != xno; then
   am_depcomp="$ac_aux_dir/depcomp"
   AMDEPBACKSLASH='\'
+  am__nodep='_no'
 fi
  if test "x$enable_dependency_tracking" != xno; then
   AMDEP_TRUE=
@@ -4119,9 +4308,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -4132,24 +4321,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
 $as_echo "$CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -4159,9 +4348,9 @@ if test -z "$ac_cv_prog_CC"; then
   ac_ct_CC=$CC
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -4172,24 +4361,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
 $as_echo "$ac_ct_CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -4198,7 +4387,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -4212,9 +4401,9 @@ if test -z "$CC"; then
           if test -n "$ac_tool_prefix"; then
     # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -4225,24 +4414,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
 $as_echo "$CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -4252,9 +4441,9 @@ fi
 if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -4266,18 +4455,18 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
      fi
     ac_cv_prog_CC="cc"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 if test $ac_prog_rejected = yes; then
@@ -4296,10 +4485,10 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
 $as_echo "$CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -4311,9 +4500,9 @@ if test -z "$CC"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -4324,24 +4513,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
 $as_echo "$CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -4355,9 +4544,9 @@ if test -z "$CC"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -4368,24 +4557,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
 $as_echo "$ac_ct_CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -4398,7 +4587,7 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -4409,57 +4598,37 @@ fi
 fi
 
 
-test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
 
 # Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
 set X $ac_compile
 ac_compiler=$2
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -4475,8 +4644,8 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
 # Try to create an executable without -o first, disregard a.out.
 # It will help us diagnose broken compilers, and finding out an intuition
 # of exeext.
-{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
 ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
 
 # The possible output files:
@@ -4492,17 +4661,17 @@ do
 done
 rm -f $ac_rmfiles
 
-if { (ac_try="$ac_link_default"
+if { { ac_try="$ac_link_default"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_link_default") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
   # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
 # So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
 # in a Makefile.  We should not override ac_cv_exeext if it was cached,
@@ -4519,7 +4688,7 @@ do
 	# certainly right.
 	break;;
     *.* )
-        if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
 	then :; else
 	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
 	fi
@@ -4538,84 +4707,41 @@ test "$ac_cv_exeext" = no && ac_cv_exeext=
 else
   ac_file=''
 fi
-
-{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-if test -z "$ac_file"; then
-  $as_echo "$as_me: failed program was:" >&5
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: C compiler cannot create executables
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }; }
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 fi
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
 ac_exeext=$ac_cv_exeext
 
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
-  if { ac_try='./$ac_file'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
 rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
 ac_clean_files=$ac_clean_files_save
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
 $as_echo_n "checking for suffix of executables... " >&6; }
-if { (ac_try="$ac_link"
+if { { ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_link") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
   # If both `conftest.exe' and `conftest' are `present' (well, observable)
 # catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
 # work properly (i.e., refer to `conftest.exe'), while it won't with
@@ -4630,91 +4756,134 @@ for ac_file in conftest.exe conftest conftest.*; do
   esac
 done
 else
-  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
 fi
-
-rm -f conftest$ac_cv_exeext
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
 $as_echo "$ac_cv_exeext" >&6; }
 
 rm -f conftest.$ac_ext
 EXEEXT=$ac_cv_exeext
 ac_exeext=$EXEEXT
-{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if test "${ac_cv_objext+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
+#include <stdio.h>
 int
 main ()
 {
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
 
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.o conftest.obj
-if { (ac_try="$ac_compile"
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
 rm -f conftest.$ac_cv_objext conftest.$ac_ext
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
 $as_echo "$ac_cv_objext" >&6; }
 OBJEXT=$ac_cv_objext
 ac_objext=$OBJEXT
-{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
+if ${ac_cv_c_compiler_gnu+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -4728,37 +4897,16 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_compiler_gnu=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_compiler_gnu=no
+  ac_compiler_gnu=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
 $as_echo "$ac_cv_c_compiler_gnu" >&6; }
 if test $ac_compiler_gnu = yes; then
   GCC=yes
@@ -4767,20 +4915,16 @@ else
 fi
 ac_test_CFLAGS=${CFLAGS+set}
 ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
 $as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then
+if ${ac_cv_prog_cc_g+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_save_c_werror_flag=$ac_c_werror_flag
    ac_c_werror_flag=yes
    ac_cv_prog_cc_g=no
    CFLAGS="-g"
-   cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -4791,35 +4935,11 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_g=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	CFLAGS=""
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -4830,36 +4950,12 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_compile "$LINENO"; then :
 
-	ac_c_werror_flag=$ac_save_c_werror_flag
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
 	 CFLAGS="-g"
-	 cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -4870,42 +4966,17 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_g=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
    ac_c_werror_flag=$ac_save_c_werror_flag
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
 $as_echo "$ac_cv_prog_cc_g" >&6; }
 if test "$ac_test_CFLAGS" = set; then
   CFLAGS=$ac_save_CFLAGS
@@ -4922,23 +4993,18 @@ else
     CFLAGS=
   fi
 fi
-{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then
+if ${ac_cv_prog_cc_c89+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_prog_cc_c89=no
 ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
 struct buf { int x; };
 FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -4990,32 +5056,9 @@ for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
 	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
 do
   CC="$ac_save_CC $ac_arg"
-  rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+  if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_c89=$ac_arg
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
 rm -f core conftest.err conftest.$ac_objext
   test "x$ac_cv_prog_cc_c89" != "xno" && break
 done
@@ -5026,17 +5069,19 @@ fi
 # AC_CACHE_VAL
 case "x$ac_cv_prog_cc_c89" in
   x)
-    { $as_echo "$as_me:$LINENO: result: none needed" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
 $as_echo "none needed" >&6; } ;;
   xno)
-    { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
 $as_echo "unsupported" >&6; } ;;
   *)
     CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
 esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
 
+fi
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -5046,9 +5091,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 depcc="$CC"   am_compiler_list=
 
-{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
 $as_echo_n "checking dependency style of $depcc... " >&6; }
-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
@@ -5057,6 +5102,7 @@ else
   # instance it was reported that on HP-UX the gcc test will end up
   # making a dummy file named `D' -- because `-MD' means `put the output
   # in D'.
+  rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
   # using a relative directory.
@@ -5074,6 +5120,11 @@ else
   if test "$am_compiler_list" = ""; then
      am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
   fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
   for depmode in $am_compiler_list; do
     # Setup a source with many dependencies, because some compilers
     # like to wrap large dependency lists on column 80 (with \), and
@@ -5091,7 +5142,17 @@ else
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
     case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
     nosideeffect)
       # after this tag, mechanisms are not by side-effect, so they'll
       # only be used when explicitly requested
@@ -5101,19 +5162,23 @@ else
 	break
       fi
       ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
     none) break ;;
     esac
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.
     if depmode=$depmode \
-       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       source=sub/conftest.c object=$am__obj \
        depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
          >/dev/null 2>conftest.err &&
        grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
        grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
       # icc doesn't choke on unknown options, it will just issue warnings
       # or remarks (even with -Werror).  So we grep stderr for any message
@@ -5137,7 +5202,7 @@ else
 fi
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
 
@@ -5158,14 +5223,14 @@ ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
 $as_echo_n "checking how to run the C preprocessor... " >&6; }
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
 fi
 if test -z "$CPP"; then
-  if test "${ac_cv_prog_CPP+set}" = set; then
+  if ${ac_cv_prog_CPP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
       # Double quotes because CPP needs to be expanded
@@ -5180,11 +5245,7 @@ do
   # <limits.h> exists even on freestanding compilers.
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifdef __STDC__
 # include <limits.h>
@@ -5193,78 +5254,34 @@ cat >>conftest.$ac_ext <<_ACEOF
 #endif
 		     Syntax error
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_cpp "$LINENO"; then :
 
+else
   # Broken: fails on valid input.
 continue
 fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ac_nonexistent.h>
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
+if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
 continue
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
   # Passes both tests.
 ac_preproc_ok=:
 break
 fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
   break
 fi
 
@@ -5276,7 +5293,7 @@ fi
 else
   ac_cv_prog_CPP=$CPP
 fi
-{ $as_echo "$as_me:$LINENO: result: $CPP" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
 $as_echo "$CPP" >&6; }
 ac_preproc_ok=false
 for ac_c_preproc_warn_flag in '' yes
@@ -5287,11 +5304,7 @@ do
   # <limits.h> exists even on freestanding compilers.
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifdef __STDC__
 # include <limits.h>
@@ -5300,87 +5313,40 @@ cat >>conftest.$ac_ext <<_ACEOF
 #endif
 		     Syntax error
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_cpp "$LINENO"; then :
 
+else
   # Broken: fails on valid input.
 continue
 fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ac_nonexistent.h>
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
+if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
 continue
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
   # Passes both tests.
 ac_preproc_ok=:
 break
 fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
-  :
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
 else
-  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
 fi
 
 ac_ext=c
@@ -5390,9 +5356,9 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
 $as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then
+if ${ac_cv_path_GREP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$GREP"; then
@@ -5403,10 +5369,10 @@ for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in grep ggrep; do
+    for ac_prog in grep ggrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+      as_fn_executable_p "$ac_path_GREP" || continue
 # Check for GNU ac_path_GREP and select it if it is found.
   # Check for GNU $ac_path_GREP
 case `"$ac_path_GREP" --version 2>&1` in
@@ -5423,7 +5389,7 @@ case `"$ac_path_GREP" --version 2>&1` in
     $as_echo 'GREP' >> "conftest.nl"
     "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
     if test $ac_count -gt ${ac_path_GREP_max-0}; then
       # Best one so far, save it but keep looking for a better one
       ac_cv_path_GREP="$ac_path_GREP"
@@ -5438,26 +5404,24 @@ esac
       $ac_path_GREP_found && break 3
     done
   done
-done
+  done
 IFS=$as_save_IFS
   if test -z "$ac_cv_path_GREP"; then
-    { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
   ac_cv_path_GREP=$GREP
 fi
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
 $as_echo "$ac_cv_path_GREP" >&6; }
  GREP="$ac_cv_path_GREP"
 
 
-{ $as_echo "$as_me:$LINENO: checking for egrep" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
 $as_echo_n "checking for egrep... " >&6; }
-if test "${ac_cv_path_EGREP+set}" = set; then
+if ${ac_cv_path_EGREP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
@@ -5471,10 +5435,10 @@ for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in egrep; do
+    for ac_prog in egrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+      as_fn_executable_p "$ac_path_EGREP" || continue
 # Check for GNU ac_path_EGREP and select it if it is found.
   # Check for GNU $ac_path_EGREP
 case `"$ac_path_EGREP" --version 2>&1` in
@@ -5491,7 +5455,7 @@ case `"$ac_path_EGREP" --version 2>&1` in
     $as_echo 'EGREP' >> "conftest.nl"
     "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
     if test $ac_count -gt ${ac_path_EGREP_max-0}; then
       # Best one so far, save it but keep looking for a better one
       ac_cv_path_EGREP="$ac_path_EGREP"
@@ -5506,12 +5470,10 @@ esac
       $ac_path_EGREP_found && break 3
     done
   done
-done
+  done
 IFS=$as_save_IFS
   if test -z "$ac_cv_path_EGREP"; then
-    { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
   ac_cv_path_EGREP=$EGREP
@@ -5519,21 +5481,17 @@ fi
 
    fi
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
 $as_echo "$ac_cv_path_EGREP" >&6; }
  EGREP="$ac_cv_path_EGREP"
 
 
-{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
 $as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then
+if ${ac_cv_header_stdc+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
 #include <stdarg.h>
@@ -5548,48 +5506,23 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_header_stdc=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_header_stdc=no
+  ac_cv_header_stdc=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <string.h>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then
-  :
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
 else
   ac_cv_header_stdc=no
 fi
@@ -5599,18 +5532,14 @@ fi
 
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then
-  :
+  $EGREP "free" >/dev/null 2>&1; then :
+
 else
   ac_cv_header_stdc=no
 fi
@@ -5620,14 +5549,10 @@ fi
 
 if test $ac_cv_header_stdc = yes; then
   # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then
+  if test "$cross_compiling" = yes; then :
   :
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ctype.h>
 #include <stdlib.h>
@@ -5654,118 +5579,33 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  :
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_run "$LINENO"; then :
 
-( exit $ac_status )
-ac_cv_header_stdc=no
+else
+  ac_cv_header_stdc=no
 fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-
 fi
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
 $as_echo "$ac_cv_header_stdc" >&6; }
 if test $ac_cv_header_stdc = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
 
 fi
 
 # On IRIX 5.3, sys/types and inttypes.h are conflicting.
-
-
-
-
-
-
-
-
-
 for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
 		  inttypes.h stdint.h unistd.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_ac_Header=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_Header=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -5776,146 +5616,12 @@ done
 
 
 
-
-for ac_header in locale.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+   for ac_header in locale.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default"
+if test "x$ac_cv_header_locale_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_LOCALE_H 1
 _ACEOF
 
 fi
@@ -5923,16 +5629,12 @@ fi
 done
 
     if test $ac_cv_header_locale_h = yes; then
-    { $as_echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5
 $as_echo_n "checking for LC_MESSAGES... " >&6; }
-if test "${am_cv_val_LC_MESSAGES+set}" = set; then
+if ${am_cv_val_LC_MESSAGES+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <locale.h>
 int
@@ -5943,46 +5645,19 @@ return LC_MESSAGES
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   am_cv_val_LC_MESSAGES=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	am_cv_val_LC_MESSAGES=no
+  am_cv_val_LC_MESSAGES=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 fi
-{ $as_echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5
 $as_echo "$am_cv_val_LC_MESSAGES" >&6; }
     if test $am_cv_val_LC_MESSAGES = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LC_MESSAGES 1
-_ACEOF
+$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h
 
     fi
   fi
@@ -5995,150 +5670,20 @@ _ACEOF
     XGETTEXT=:
     INTLLIBS=
 
-    if test "${ac_cv_header_libintl_h+set}" = set; then
-  { $as_echo "$as_me:$LINENO: checking for libintl.h" >&5
-$as_echo_n "checking for libintl.h... " >&6; }
-if test "${ac_cv_header_libintl_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
-$as_echo "$ac_cv_header_libintl_h" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking libintl.h usability" >&5
-$as_echo_n "checking libintl.h usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <libintl.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking libintl.h presence" >&5
-$as_echo_n "checking libintl.h presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <libintl.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: libintl.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: libintl.h: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: libintl.h: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: libintl.h:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: libintl.h:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: libintl.h: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: libintl.h: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: libintl.h:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: libintl.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: libintl.h: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: libintl.h: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for libintl.h" >&5
-$as_echo_n "checking for libintl.h... " >&6; }
-if test "${ac_cv_header_libintl_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_header_libintl_h=$ac_header_preproc
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
-$as_echo "$ac_cv_header_libintl_h" >&6; }
-
-fi
-if test "x$ac_cv_header_libintl_h" = x""yes; then
+    ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default"
+if test "x$ac_cv_header_libintl_h" = xyes; then :
   gt_cv_func_dgettext_libintl="no"
       libintl_extra_libs=""
 
       #
       # First check in libc
       #
-      { $as_echo "$as_me:$LINENO: checking for ngettext in libc" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in libc" >&5
 $as_echo_n "checking for ngettext in libc... " >&6; }
-if test "${gt_cv_func_ngettext_libc+set}" = set; then
+if ${gt_cv_func_ngettext_libc+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <libintl.h>
@@ -6151,54 +5696,25 @@ return !ngettext ("","", 1)
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   gt_cv_func_ngettext_libc=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	gt_cv_func_ngettext_libc=no
+  gt_cv_func_ngettext_libc=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $gt_cv_func_ngettext_libc" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_ngettext_libc" >&5
 $as_echo "$gt_cv_func_ngettext_libc" >&6; }
 
       if test "$gt_cv_func_ngettext_libc" = "yes" ; then
-	      { $as_echo "$as_me:$LINENO: checking for dgettext in libc" >&5
+	      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in libc" >&5
 $as_echo_n "checking for dgettext in libc... " >&6; }
-if test "${gt_cv_func_dgettext_libc+set}" = set; then
+if ${gt_cv_func_dgettext_libc+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <libintl.h>
@@ -6211,141 +5727,26 @@ return !dgettext ("","")
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   gt_cv_func_dgettext_libc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	gt_cv_func_dgettext_libc=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $gt_cv_func_dgettext_libc" >&5
-$as_echo "$gt_cv_func_dgettext_libc" >&6; }
-      fi
-
-      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
-
-for ac_func in bind_textdomain_codeset
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_var=no"
+else
+  gt_cv_func_dgettext_libc=no
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
 fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_dgettext_libc" >&5
+$as_echo "$gt_cv_func_dgettext_libc" >&6; }
+      fi
+
+      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+        for ac_func in bind_textdomain_codeset
+do :
+  ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
+if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define HAVE_BIND_TEXTDOMAIN_CODESET 1
 _ACEOF
 
 fi
@@ -6360,18 +5761,14 @@ done
 	 || test "$gt_cv_func_ngettext_libc" != "yes" \
          || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
 
-        { $as_echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5
 $as_echo_n "checking for bindtextdomain in -lintl... " >&6; }
-if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then
+if ${ac_cv_lib_intl_bindtextdomain+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lintl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -6389,55 +5786,26 @@ return bindtextdomain ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_intl_bindtextdomain=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_intl_bindtextdomain=no
+  ac_cv_lib_intl_bindtextdomain=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5
 $as_echo "$ac_cv_lib_intl_bindtextdomain" >&6; }
-if test "x$ac_cv_lib_intl_bindtextdomain" = x""yes; then
-  { $as_echo "$as_me:$LINENO: checking for ngettext in -lintl" >&5
+if test "x$ac_cv_lib_intl_bindtextdomain" = xyes; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5
 $as_echo_n "checking for ngettext in -lintl... " >&6; }
-if test "${ac_cv_lib_intl_ngettext+set}" = set; then
+if ${ac_cv_lib_intl_ngettext+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lintl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -6455,55 +5823,26 @@ return ngettext ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_intl_ngettext=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_intl_ngettext=no
+  ac_cv_lib_intl_ngettext=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_intl_ngettext" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5
 $as_echo "$ac_cv_lib_intl_ngettext" >&6; }
-if test "x$ac_cv_lib_intl_ngettext" = x""yes; then
-  { $as_echo "$as_me:$LINENO: checking for dgettext in -lintl" >&5
+if test "x$ac_cv_lib_intl_ngettext" = xyes; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5
 $as_echo_n "checking for dgettext in -lintl... " >&6; }
-if test "${ac_cv_lib_intl_dgettext+set}" = set; then
+if ${ac_cv_lib_intl_dgettext+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lintl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -6521,43 +5860,18 @@ return dgettext ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_intl_dgettext=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_intl_dgettext=no
+  ac_cv_lib_intl_dgettext=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dgettext" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dgettext" >&5
 $as_echo "$ac_cv_lib_intl_dgettext" >&6; }
-if test "x$ac_cv_lib_intl_dgettext" = x""yes; then
+if test "x$ac_cv_lib_intl_dgettext" = xyes; then :
   gt_cv_func_dgettext_libintl=yes
 fi
 
@@ -6567,22 +5881,18 @@ fi
 
 
 	if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
-	  { $as_echo "$as_me:$LINENO: checking if -liconv is needed to use gettext" >&5
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -liconv is needed to use gettext" >&5
 $as_echo_n "checking if -liconv is needed to use gettext... " >&6; }
-	  { $as_echo "$as_me:$LINENO: result: " >&5
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
 $as_echo "" >&6; }
-  	  { $as_echo "$as_me:$LINENO: checking for ngettext in -lintl" >&5
+  	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5
 $as_echo_n "checking for ngettext in -lintl... " >&6; }
-if test "${ac_cv_lib_intl_ngettext+set}" = set; then
+if ${ac_cv_lib_intl_ngettext+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lintl -liconv $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -6600,55 +5910,26 @@ return ngettext ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_intl_ngettext=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_intl_ngettext=no
+  ac_cv_lib_intl_ngettext=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_intl_ngettext" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5
 $as_echo "$ac_cv_lib_intl_ngettext" >&6; }
-if test "x$ac_cv_lib_intl_ngettext" = x""yes; then
-  { $as_echo "$as_me:$LINENO: checking for dcgettext in -lintl" >&5
+if test "x$ac_cv_lib_intl_ngettext" = xyes; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dcgettext in -lintl" >&5
 $as_echo_n "checking for dcgettext in -lintl... " >&6; }
-if test "${ac_cv_lib_intl_dcgettext+set}" = set; then
+if ${ac_cv_lib_intl_dcgettext+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lintl -liconv $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -6666,43 +5947,18 @@ return dcgettext ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_intl_dcgettext=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_intl_dcgettext=no
+  ac_cv_lib_intl_dcgettext=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dcgettext" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dcgettext" >&5
 $as_echo "$ac_cv_lib_intl_dcgettext" >&6; }
-if test "x$ac_cv_lib_intl_dcgettext" = x""yes; then
+if test "x$ac_cv_lib_intl_dcgettext" = xyes; then :
   gt_cv_func_dgettext_libintl=yes
 			libintl_extra_libs=-liconv
 else
@@ -6724,102 +5980,12 @@ fi
           glib_save_LIBS="$LIBS"
           LIBS="$LIBS -lintl $libintl_extra_libs"
           unset ac_cv_func_bind_textdomain_codeset
-
-for ac_func in bind_textdomain_codeset
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_var=no"
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+          for ac_func in bind_textdomain_codeset
+do :
+  ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
+if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define HAVE_BIND_TEXTDOMAIN_CODESET 1
 _ACEOF
 
 fi
@@ -6849,15 +6015,13 @@ done
 
       if test "$gt_cv_have_gettext" = "yes"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_GETTEXT 1
-_ACEOF
+$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h
 
 	# Extract the first word of "msgfmt", so it can be a program name with args.
 set dummy msgfmt; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_MSGFMT+set}" = set; then
+if ${ac_cv_path_MSGFMT+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case "$MSGFMT" in
@@ -6882,118 +6046,28 @@ esac
 fi
 MSGFMT="$ac_cv_path_MSGFMT"
 if test "$MSGFMT" != "no"; then
-  { $as_echo "$as_me:$LINENO: result: $MSGFMT" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
 $as_echo "$MSGFMT" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 	if test "$MSGFMT" != "no"; then
           glib_save_LIBS="$LIBS"
           LIBS="$LIBS $INTLLIBS"
-
-for ac_func in dcgettext
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_var=no"
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+	  for ac_func in dcgettext
+do :
+  ac_fn_c_check_func "$LINENO" "dcgettext" "ac_cv_func_dcgettext"
+if test "x$ac_cv_func_dcgettext" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define HAVE_DCGETTEXT 1
 _ACEOF
 
 fi
 done
 
 	  MSGFMT_OPTS=
-	  { $as_echo "$as_me:$LINENO: checking if msgfmt accepts -c" >&5
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if msgfmt accepts -c" >&5
 $as_echo_n "checking if msgfmt accepts -c... " >&6; }
 	  cat >conftest.foo <<_ACEOF
 
@@ -7008,14 +6082,14 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 
 _ACEOF
-if { ($as_echo "$as_me:$LINENO: \$MSGFMT -c -o /dev/null conftest.foo") >&5
+if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$MSGFMT -c -o /dev/null conftest.foo"; } >&5
   ($MSGFMT -c -o /dev/null conftest.foo) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  MSGFMT_OPTS=-c; { $as_echo "$as_me:$LINENO: result: yes" >&5
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  MSGFMT_OPTS=-c; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-else { $as_echo "$as_me:$LINENO: result: no" >&5
+else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 echo "$as_me: failed input was:" >&5
 sed 's/^/| /' conftest.foo >&5
@@ -7023,9 +6097,9 @@ fi
 
 	  # Extract the first word of "gmsgfmt", so it can be a program name with args.
 set dummy gmsgfmt; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_GMSGFMT+set}" = set; then
+if ${ac_cv_path_GMSGFMT+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case $GMSGFMT in
@@ -7038,14 +6112,14 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
@@ -7054,19 +6128,19 @@ esac
 fi
 GMSGFMT=$ac_cv_path_GMSGFMT
 if test -n "$GMSGFMT"; then
-  { $as_echo "$as_me:$LINENO: result: $GMSGFMT" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
 $as_echo "$GMSGFMT" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
 	  # Extract the first word of "xgettext", so it can be a program name with args.
 set dummy xgettext; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_XGETTEXT+set}" = set; then
+if ${ac_cv_path_XGETTEXT+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case "$XGETTEXT" in
@@ -7091,18 +6165,14 @@ esac
 fi
 XGETTEXT="$ac_cv_path_XGETTEXT"
 if test "$XGETTEXT" != ":"; then
-  { $as_echo "$as_me:$LINENO: result: $XGETTEXT" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
 $as_echo "$XGETTEXT" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-	  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+	  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -7114,121 +6184,14 @@ extern int _nl_msg_cat_cntr;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   CATOBJEXT=.gmo
              DATADIRNAME=share
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	case $host in
+  case $host in
 	    *-*-solaris*)
-	    	                	    	                { $as_echo "$as_me:$LINENO: checking for bind_textdomain_codeset" >&5
-$as_echo_n "checking for bind_textdomain_codeset... " >&6; }
-if test "${ac_cv_func_bind_textdomain_codeset+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define bind_textdomain_codeset to an innocuous variant, in case <limits.h> declares bind_textdomain_codeset.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define bind_textdomain_codeset innocuous_bind_textdomain_codeset
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char bind_textdomain_codeset (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef bind_textdomain_codeset
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char bind_textdomain_codeset ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_bind_textdomain_codeset || defined __stub___bind_textdomain_codeset
-choke me
-#endif
-
-int
-main ()
-{
-return bind_textdomain_codeset ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_func_bind_textdomain_codeset=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_func_bind_textdomain_codeset=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_bind_textdomain_codeset" >&5
-$as_echo "$ac_cv_func_bind_textdomain_codeset" >&6; }
-if test "x$ac_cv_func_bind_textdomain_codeset" = x""yes; then
+	    	                	    	                ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
+if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then :
   CATOBJEXT=.gmo
                DATADIRNAME=share
 else
@@ -7237,16 +6200,18 @@ else
 fi
 
 	    ;;
+	    *-*-openbsd*)
+	    CATOBJEXT=.mo
+            DATADIRNAME=share
+	    ;;
 	    *)
 	    CATOBJEXT=.mo
             DATADIRNAME=lib
 	    ;;
 	    esac
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
           LIBS="$glib_save_LIBS"
 	  INSTOBJEXT=.mo
 	else
@@ -7260,9 +6225,7 @@ fi
 
     if test "$gt_cv_have_gettext" = "yes" ; then
 
-cat >>confdefs.h <<\_ACEOF
-#define ENABLE_NLS 1
-_ACEOF
+$as_echo "#define ENABLE_NLS 1" >>confdefs.h
 
     fi
 
@@ -7270,7 +6233,7 @@ _ACEOF
                   if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
         : ;
       else
-        { $as_echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5
 $as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; }
         XGETTEXT=":"
       fi
@@ -7303,7 +6266,7 @@ $as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; }
      if test "x$ALL_LINGUAS" = "x"; then
        LINGUAS=
      else
-       { $as_echo "$as_me:$LINENO: checking for catalogs to be installed" >&5
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5
 $as_echo_n "checking for catalogs to be installed... " >&6; }
        NEW_LINGUAS=
        for presentlang in $ALL_LINGUAS; do
@@ -7328,7 +6291,7 @@ $as_echo_n "checking for catalogs to be installed... " >&6; }
          fi
        done
        LINGUAS=$NEW_LINGUAS
-       { $as_echo "$as_me:$LINENO: result: $LINGUAS" >&5
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5
 $as_echo "$LINGUAS" >&6; }
      fi
 
@@ -7337,6 +6300,15 @@ $as_echo "$LINGUAS" >&6; }
      fi
    fi
 
+            MKINSTALLDIRS=
+   if test -n "$ac_aux_dir"; then
+     MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+   fi
+   if test -z "$MKINSTALLDIRS"; then
+     MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+   fi
+
+
          test -d po || mkdir po
    if test "x$srcdir" != "x."; then
      if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
@@ -7359,9 +6331,9 @@ for ac_prog in gawk mawk nawk awk
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AWK+set}" = set; then
+if ${ac_cv_prog_AWK+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$AWK"; then
@@ -7372,24 +6344,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 AWK=$ac_cv_prog_AWK
 if test -n "$AWK"; then
-  { $as_echo "$as_me:$LINENO: result: $AWK" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
 $as_echo "$AWK" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -7411,7 +6383,7 @@ TOOLS_VERSION=$($AWK 'BEGIN {
 GENDARME_VERSION=$TOOLS_VERSION
 
 
-ac_config_files="$ac_config_files Makefile gsharp/Makefile gsharp/gsharp gsharp/gsharp.exe.config gui-compare/Makefile gui-compare/gui-compare minvoke/Makefile minvoke/minvoke mperfmon/Makefile mperfmon/mperfmon docbrowser/Makefile docbrowser/theme-icons/Makefile docbrowser/monodoc docbrowser/AssemblyInfo.cs po/Makefile.in asn1view/Makefile asn1view/art/Makefile asn1view/gtk/Makefile asn1view/common/Makefile ilcontrast/Makefile ilcontrast/ilcontrast create-native-map/Makefile create-nati [...]
+ac_config_files="$ac_config_files mono-tools.spec Makefile gsharp/Makefile gsharp/gsharp gsharp/gsharp.exe.config gui-compare/Makefile gui-compare/gui-compare minvoke/Makefile minvoke/minvoke mperfmon/Makefile mperfmon/mperfmon docbrowser/Makefile docbrowser/theme-icons/Makefile docbrowser/monodoc docbrowser/AssemblyInfo.cs po/Makefile.in asn1view/Makefile asn1view/art/Makefile asn1view/gtk/Makefile asn1view/common/Makefile ilcontrast/Makefile ilcontrast/ilcontrast create-native-map/Make [...]
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -7440,13 +6412,13 @@ _ACEOF
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       esac
       case $ac_var in #(
       _ | IFS | as_nl) ;; #(
       BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) $as_unset $ac_var ;;
+      *) { eval $ac_var=; unset $ac_var;} ;;
       esac ;;
     esac
   done
@@ -7454,8 +6426,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
   (set) 2>&1 |
     case $as_nl`(ac_space=' '; set) 2>&1` in #(
     *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes (double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
       sed -n \
 	"s/'/'\\\\''/g;
 	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
@@ -7477,12 +6449,23 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
      :end' >>confcache
 if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
   if test -w "$cache_file"; then
-    test "x$cache_file" != "x/dev/null" &&
-      { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
 $as_echo "$as_me: updating cache $cache_file" >&6;}
-    cat confcache >$cache_file
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
   else
-    { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
   fi
 fi
@@ -7532,112 +6515,86 @@ DEFS=`sed -n "$ac_script" confdefs.h`
 
 ac_libobjs=
 ac_ltlibobjs=
+U=
 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
   ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
   # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
   #    will be set to the directory where LIBOBJS objects are built.
-  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
 done
 LIBOBJS=$ac_libobjs
 
 LTLIBOBJS=$ac_ltlibobjs
 
 
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
 if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${DMCS_PRESENT_TRUE}" && test -z "${DMCS_PRESENT_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"DMCS_PRESENT\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"DMCS_PRESENT\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"DMCS_PRESENT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${ENABLE_GNOME_TRUE}" && test -z "${ENABLE_GNOME_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"ENABLE_GNOME\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"ENABLE_GNOME\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"ENABLE_GNOME\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${ENABLE_GTKHTML_TRUE}" && test -z "${ENABLE_GTKHTML_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"ENABLE_GTKHTML\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"ENABLE_GTKHTML\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"ENABLE_GTKHTML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${ENABLE_GECKO_TRUE}" && test -z "${ENABLE_GECKO_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"ENABLE_GECKO\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"ENABLE_GECKO\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"ENABLE_GECKO\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${ENABLE_WEBKIT_TRUE}" && test -z "${ENABLE_WEBKIT_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"ENABLE_WEBKIT\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"ENABLE_WEBKIT\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"ENABLE_WEBKIT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${ENABLE_MONOWEBBROWSER_TRUE}" && test -z "${ENABLE_MONOWEBBROWSER_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"ENABLE_MONOWEBBROWSER\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"ENABLE_MONOWEBBROWSER\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"ENABLE_MONOWEBBROWSER\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${ENABLE_DEBUG_TRUE}" && test -z "${ENABLE_DEBUG_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"ENABLE_DEBUG\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"ENABLE_DEBUG\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"ENABLE_DEBUG\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${ENABLE_RELEASE_TRUE}" && test -z "${ENABLE_RELEASE_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"ENABLE_RELEASE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"ENABLE_RELEASE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"ENABLE_RELEASE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${ENABLE_DEBUG_TRUE}" && test -z "${ENABLE_DEBUG_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"ENABLE_DEBUG\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"ENABLE_DEBUG\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"ENABLE_DEBUG\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 
-: ${CONFIG_STATUS=./config.status}
+: "${CONFIG_STATUS=./config.status}"
 ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
 #! $SHELL
 # Generated by $as_me.
 # Run this file to recreate the current configuration.
@@ -7647,17 +6604,18 @@ cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 debug=false
 ac_cs_recheck=false
 ac_cs_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
@@ -7665,23 +6623,15 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
 esac
-
 fi
 
 
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
 as_nl='
 '
 export as_nl
@@ -7689,7 +6639,13 @@ export as_nl
 as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
   as_echo='printf %s\n'
   as_echo_n='printf %s'
 else
@@ -7700,7 +6656,7 @@ else
     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
     as_echo_n_body='eval
       arg=$1;
-      case $arg in
+      case $arg in #(
       *"$as_nl"*)
 	expr "X$arg" : "X\\(.*\\)$as_nl";
 	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -7723,13 +6679,6 @@ if test "${PATH_SEPARATOR+set}" != set; then
   }
 fi
 
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
-fi
-
 
 # IFS
 # We need space, tab and new line, in precisely that order.  Quoting is
@@ -7739,15 +6688,16 @@ fi
 IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
-case $0 in
+as_myself=
+case $0 in #((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
 IFS=$as_save_IFS
 
      ;;
@@ -7759,12 +6709,16 @@ if test "x$as_myself" = x; then
 fi
 if test ! -f "$as_myself"; then
   $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  { (exit 1); exit 1; }
+  exit 1
 fi
 
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
 done
 PS1='$ '
 PS2='> '
@@ -7776,7 +6730,89 @@ export LC_ALL
 LANGUAGE=C
 export LANGUAGE
 
-# Required to use basename.
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
 if expr a : '\(a\)' >/dev/null 2>&1 &&
    test "X`expr 00001 : '.*\(...\)'`" = X001; then
   as_expr=expr
@@ -7790,8 +6826,12 @@ else
   as_basename=false
 fi
 
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
 
-# Name of the executable.
 as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
 	 X"$0" : 'X\(//\)$' \| \
@@ -7811,76 +6851,25 @@ $as_echo X/"$0" |
 	  }
 	  s/.*/./; q'`
 
-# CDPATH.
-$as_unset CDPATH
-
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line after each line using $LINENO; the second 'sed'
-  # does the real work.  The second script uses 'N' to pair each
-  # line-number line with the line containing $LINENO, and appends
-  # trailing '-' during substitution so that $LINENO is not a special
-  # case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # scripts with optimization help from Paolo Bonzini.  Blame Lee
-  # E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-   { (exit 1); exit 1; }; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
 
 ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
+case `echo -n x` in #(((((
 -n*)
-  case `echo 'x\c'` in
+  case `echo 'xy\c'` in
   *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  *)   ECHO_C='\c';;
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
   esac;;
 *)
   ECHO_N='-n';;
 esac
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
 
 rm -f conf$$ conf$$.exe conf$$.file
 if test -d conf$$.dir; then
@@ -7895,49 +6884,85 @@ if (echo >conf$$.file) 2>/dev/null; then
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
 
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
 if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
+  as_mkdir_p='mkdir -p "$as_dir"'
 else
   test -d ./-p && rmdir ./-p
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -7947,13 +6972,19 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 
 
 exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
 
-# Save the log message, to keep $[0] and so on meaningful, and to
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by mono-tools $as_me 2.10, which was
-generated by GNU Autoconf 2.63.  Invocation command line was
+This file was extended by mono-tools $as_me 2.11, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -7981,13 +7012,15 @@ _ACEOF
 
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
 
-Usage: $0 [OPTION]... [FILE]...
+Usage: $0 [OPTION]... [TAG]...
 
   -h, --help       print this help, then exit
   -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
   -q, --quiet, --silent
                    do not print progress messages
   -d, --debug      don't remove temporary files
@@ -8001,16 +7034,17 @@ $config_files
 Configuration commands:
 $config_commands
 
-Report bugs to <bug-autoconf at gnu.org>."
+Report bugs to the package provider."
 
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-mono-tools config.status 2.10
-configured by $0, generated by GNU Autoconf 2.63,
-  with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+mono-tools config.status 2.11
+configured by $0, generated by GNU Autoconf 2.69,
+  with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2008 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -8028,11 +7062,16 @@ ac_need_defaults=:
 while test $# != 0
 do
   case $1 in
-  --*=*)
+  --*=?*)
     ac_option=`expr "X$1" : 'X\([^=]*\)='`
     ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
     ac_shift=:
     ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
   *)
     ac_option=$1
     ac_optarg=$2
@@ -8046,14 +7085,17 @@ do
     ac_cs_recheck=: ;;
   --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
     $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
   --debug | --debu | --deb | --de | --d | -d )
     debug=: ;;
   --file | --fil | --fi | --f )
     $ac_shift
     case $ac_optarg in
     *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
     esac
-    CONFIG_FILES="$CONFIG_FILES '$ac_optarg'"
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
     ac_need_defaults=false;;
   --he | --h |  --help | --hel | -h )
     $as_echo "$ac_cs_usage"; exit ;;
@@ -8062,11 +7104,10 @@ do
     ac_cs_silent=: ;;
 
   # This is an error.
-  -*) { $as_echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; } ;;
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
 
-  *) ac_config_targets="$ac_config_targets $1"
+  *) as_fn_append ac_config_targets " $1"
      ac_need_defaults=false ;;
 
   esac
@@ -8083,7 +7124,7 @@ fi
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 if \$ac_cs_recheck; then
-  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
   shift
   \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
   CONFIG_SHELL='$SHELL'
@@ -8120,6 +7161,7 @@ do
   case $ac_config_target in
     "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
     "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
+    "mono-tools.spec") CONFIG_FILES="$CONFIG_FILES mono-tools.spec" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
     "gsharp/Makefile") CONFIG_FILES="$CONFIG_FILES gsharp/Makefile" ;;
     "gsharp/gsharp") CONFIG_FILES="$CONFIG_FILES gsharp/gsharp" ;;
@@ -8211,6 +7253,7 @@ do
     "gendarme/tools/Makefile") CONFIG_FILES="$CONFIG_FILES gendarme/tools/Makefile" ;;
     "gendarme/tools/supported/Makefile") CONFIG_FILES="$CONFIG_FILES gendarme/tools/supported/Makefile" ;;
     "gendarme/tools/supported/gd2i/Makefile") CONFIG_FILES="$CONFIG_FILES gendarme/tools/supported/gd2i/Makefile" ;;
+    "gendarme/tools/supported/templates/Makefile") CONFIG_FILES="$CONFIG_FILES gendarme/tools/supported/templates/Makefile" ;;
     "gendarme/tools/unsupported/Makefile") CONFIG_FILES="$CONFIG_FILES gendarme/tools/unsupported/Makefile" ;;
     "gendarme/tools/unsupported/mapper/Makefile") CONFIG_FILES="$CONFIG_FILES gendarme/tools/unsupported/mapper/Makefile" ;;
     "gendarme/tools/unsupported/typeref/Makefile") CONFIG_FILES="$CONFIG_FILES gendarme/tools/unsupported/typeref/Makefile" ;;
@@ -8228,9 +7271,7 @@ do
     "Mono.Profiler/mprof-gui/emveepee") CONFIG_FILES="$CONFIG_FILES Mono.Profiler/mprof-gui/emveepee" ;;
     "webdoc/Makefile") CONFIG_FILES="$CONFIG_FILES webdoc/Makefile" ;;
 
-  *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
-   { (exit 1); exit 1; }; };;
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
   esac
 done
 
@@ -8252,26 +7293,24 @@ fi
 # after its creation but before its name has been assigned to `$tmp'.
 $debug ||
 {
-  tmp=
+  tmp= ac_tmp=
   trap 'exit_status=$?
-  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
 ' 0
-  trap '{ (exit 1); exit 1; }' 1 2 13 15
+  trap 'as_fn_exit 1' 1 2 13 15
 }
 # Create a (secure) tmp directory for tmp files.
 
 {
   tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -n "$tmp" && test -d "$tmp"
+  test -d "$tmp"
 }  ||
 {
   tmp=./conf$$-$RANDOM
   (umask 077 && mkdir "$tmp")
-} ||
-{
-   $as_echo "$as_me: cannot create a temporary directory in ." >&2
-   { (exit 1); exit 1; }
-}
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
 
 # Set up the scripts for CONFIG_FILES section.
 # No need to generate them if there are no CONFIG_FILES.
@@ -8279,7 +7318,13 @@ $debug ||
 if test -n "$CONFIG_FILES"; then
 
 
-ac_cr='
'
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
 ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
 if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
   ac_cs_awk_cr='\\r'
@@ -8287,7 +7332,7 @@ else
   ac_cs_awk_cr=$ac_cr
 fi
 
-echo 'BEGIN {' >"$tmp/subs1.awk" &&
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
 _ACEOF
 
 
@@ -8296,24 +7341,18 @@ _ACEOF
   echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
   echo "_ACEOF"
 } >conf$$subs.sh ||
-  { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
   . ./conf$$subs.sh ||
-    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
 
   ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
   if test $ac_delim_n = $ac_delim_num; then
     break
   elif $ac_last_try; then
-    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
   else
     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
@@ -8321,7 +7360,7 @@ done
 rm -f conf$$subs.sh
 
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
 _ACEOF
 sed -n '
 h
@@ -8335,7 +7374,7 @@ s/'"$ac_delim"'$//
 t delim
 :nl
 h
-s/\(.\{148\}\).*/\1/
+s/\(.\{148\}\)..*/\1/
 t more1
 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
 p
@@ -8349,7 +7388,7 @@ s/.\{148\}//
 t nl
 :delim
 h
-s/\(.\{148\}\).*/\1/
+s/\(.\{148\}\)..*/\1/
 t more2
 s/["\\]/\\&/g; s/^/"/; s/$/"/
 p
@@ -8369,7 +7408,7 @@ t delim
 rm -f conf$$subs.awk
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 _ACAWK
-cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
   for (key in S) S_is_set[key] = 1
   FS = ""
 
@@ -8401,23 +7440,29 @@ if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
   sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
 else
   cat
-fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
-  || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5
-$as_echo "$as_me: error: could not setup config files machinery" >&2;}
-   { (exit 1); exit 1; }; }
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
 _ACEOF
 
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
 # trailing colons and then remove the whole line if VPATH becomes empty
 # (actually we leave an empty line to preserve line numbers).
 if test "x$srcdir" = x.; then
-  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[	 ]*\):*/\1/
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
 s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
 s/^[^=]*=[	 ]*$//
 }'
 fi
@@ -8435,9 +7480,7 @@ do
   esac
   case $ac_mode$ac_tag in
   :[FHL]*:*);;
-  :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5
-$as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
-   { (exit 1); exit 1; }; };;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
   :[FH]-) ac_tag=-:-;;
   :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
   esac
@@ -8456,7 +7499,7 @@ $as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
     for ac_f
     do
       case $ac_f in
-      -) ac_f="$tmp/stdin";;
+      -) ac_f="$ac_tmp/stdin";;
       *) # Look for the file first in the build tree, then in the source tree
 	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
 	 # because $ac_f cannot contain `:'.
@@ -8465,12 +7508,10 @@ $as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
 	   [\\/$]*) false;;
 	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
 	   esac ||
-	   { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
-$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
-   { (exit 1); exit 1; }; };;
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
       esac
       case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      ac_file_inputs="$ac_file_inputs '$ac_f'"
+      as_fn_append ac_file_inputs " '$ac_f'"
     done
 
     # Let's still pretend it is `configure' which instantiates (i.e., don't
@@ -8481,7 +7522,7 @@ $as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
 	`' by configure.'
     if test x"$ac_file" != x-; then
       configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:$LINENO: creating $ac_file" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
 $as_echo "$as_me: creating $ac_file" >&6;}
     fi
     # Neutralize special characters interpreted by sed in replacement strings.
@@ -8493,10 +7534,8 @@ $as_echo "$as_me: creating $ac_file" >&6;}
     esac
 
     case $ac_tag in
-    *:-:* | *:-) cat >"$tmp/stdin" \
-      || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; } ;;
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
     esac
     ;;
   esac
@@ -8524,47 +7563,7 @@ $as_echo X"$ac_file" |
 	    q
 	  }
 	  s/.*/./; q'`
-  { as_dir="$ac_dir"
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
-   { (exit 1); exit 1; }; }; }
+  as_dir="$ac_dir"; as_fn_mkdir_p
   ac_builddir=.
 
 case "$ac_dir" in
@@ -8621,7 +7620,6 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # If the template does not know about datarootdir, expand it.
 # FIXME: This hack should be removed a few years after 2.60.
 ac_datarootdir_hack=; ac_datarootdir_seen=
-
 ac_sed_dataroot='
 /datarootdir/ {
   p
@@ -8631,12 +7629,11 @@ ac_sed_dataroot='
 /@docdir@/p
 /@infodir@/p
 /@localedir@/p
-/@mandir@/p
-'
+/@mandir@/p'
 case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
 *datarootdir*) ac_datarootdir_seen=yes;;
 *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
@@ -8646,7 +7643,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
   s&@infodir@&$infodir&g
   s&@localedir@&$localedir&g
   s&@mandir@&$mandir&g
-    s&\\\${datarootdir}&$datarootdir&g' ;;
+  s&\\\${datarootdir}&$datarootdir&g' ;;
 esac
 _ACEOF
 
@@ -8674,49 +7671,56 @@ s&@INSTALL@&$ac_INSTALL&;t t
 s&@MKDIR_P@&$ac_MKDIR_P&;t t
 $ac_datarootdir_hack
 "
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
-  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; }
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
 
 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&5
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&2;}
+which seems to be undefined.  Please make sure it is defined" >&2;}
 
-  rm -f "$tmp/stdin"
+  rm -f "$ac_tmp/stdin"
   case $ac_file in
-  -) cat "$tmp/out" && rm -f "$tmp/out";;
-  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
   esac \
-  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; }
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
  ;;
 
 
-  :C)  { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
 $as_echo "$as_me: executing $ac_file commands" >&6;}
  ;;
   esac
 
 
   case $ac_file$ac_mode in
-    "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
-  # Strip MF so we end up with the name of the file.
-  mf=`echo "$mf" | sed -e 's/:.*$//'`
-  # Check whether this is an Automake generated Makefile or not.
-  # We used to match only the files named `Makefile.in', but
-  # some people rename them; so instead we look at the file content.
-  # Grep'ing the first line is not enough: some people post-process
-  # each Makefile.in and add a new line on top of each file to say so.
-  # Grep'ing the whole file is not good either: AIX grep has a line
-  # limit of 2048, but all sed's we know have understand at least 4000.
-  if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-    dirpart=`$as_dirname -- "$mf" ||
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`$as_dirname -- "$mf" ||
 $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
 	 X"$mf" : 'X\(//\)[^/]' \| \
 	 X"$mf" : 'X\(//\)$' \| \
@@ -8739,28 +7743,28 @@ $as_echo X"$mf" |
 	    q
 	  }
 	  s/.*/./; q'`
-  else
-    continue
-  fi
-  # Extract the definition of DEPDIR, am__include, and am__quote
-  # from the Makefile without running `make'.
-  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-  test -z "$DEPDIR" && continue
-  am__include=`sed -n 's/^am__include = //p' < "$mf"`
-  test -z "am__include" && continue
-  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-  # When using ansi2knr, U may be empty or an underscore; expand it
-  U=`sed -n 's/^U = //p' < "$mf"`
-  # Find all dependency output files, they are included files with
-  # $(DEPDIR) in their names.  We invoke sed twice because it is the
-  # simplest approach to changing $(DEPDIR) to its actual value in the
-  # expansion.
-  for file in `sed -n "
-    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
-    # Make sure the directory exists.
-    test -f "$dirpart/$file" && continue
-    fdir=`$as_dirname -- "$file" ||
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`$as_dirname -- "$file" ||
 $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
 	 X"$file" : 'X\(//\)[^/]' \| \
 	 X"$file" : 'X\(//\)$' \| \
@@ -8783,51 +7787,12 @@ $as_echo X"$file" |
 	    q
 	  }
 	  s/.*/./; q'`
-    { as_dir=$dirpart/$fdir
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
+      as_dir=$dirpart/$fdir; as_fn_mkdir_p
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
     done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
-   { (exit 1); exit 1; }; }; }
-    # echo "creating $dirpart/$file"
-    echo '# dummy' > "$dirpart/$file"
   done
-done
+}
  ;;
     "default-1":C) case "$CONFIG_FILES" in *po/Makefile.in*)
         sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
@@ -8837,15 +7802,12 @@ done
 done # for ac_tag
 
 
-{ (exit 0); exit 0; }
+as_fn_exit 0
 _ACEOF
-chmod +x $CONFIG_STATUS
 ac_clean_files=$ac_clean_files_save
 
 test $ac_write_fail = 0 ||
-  { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
 
 
 # configure is writing to config.log, and then calls config.status.
@@ -8866,10 +7828,10 @@ if test "$no_create" != yes; then
   exec 5>>config.log
   # Use ||, not &&, to avoid exiting from the if with $? = 1, which
   # would make configure fail if this is the last instruction.
-  $ac_cs_success || { (exit 1); exit 1; }
+  $ac_cs_success || as_fn_exit 1
 fi
 if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
diff --git a/configure.in b/configure.in
index 2a8870f..4771a2e 100644
--- a/configure.in
+++ b/configure.in
@@ -1,4 +1,4 @@
-AC_INIT([mono-tools], [2.10])
+AC_INIT([mono-tools], [2.11])
 AC_CONFIG_SRCDIR([README])
 AC_CANONICAL_SYSTEM
 AM_INIT_AUTOMAKE([tar-ustar -Wno-portability])
@@ -181,6 +181,7 @@ GENDARME_VERSION=$TOOLS_VERSION
 AC_SUBST(GENDARME_VERSION)
 
 AC_OUTPUT([
+mono-tools.spec
 Makefile
 gsharp/Makefile
 gsharp/gsharp
@@ -272,6 +273,7 @@ gendarme/swf-wizard-runner/Makefile
 gendarme/tools/Makefile
 gendarme/tools/supported/Makefile
 gendarme/tools/supported/gd2i/Makefile
+gendarme/tools/supported/templates/Makefile
 gendarme/tools/unsupported/Makefile
 gendarme/tools/unsupported/mapper/Makefile
 gendarme/tools/unsupported/typeref/Makefile
diff --git a/create-native-map/Makefile.in b/create-native-map/Makefile.in
index c1a3f3e..8fd07f6 100644
--- a/create-native-map/Makefile.in
+++ b/create-native-map/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,8 +57,9 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -49,12 +69,45 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -115,6 +168,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -128,9 +182,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -208,14 +265,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  create-native-map/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  create-native-map/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu create-native-map/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu create-native-map/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -233,6 +290,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -241,7 +299,7 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -258,7 +316,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -266,7 +324,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -292,16 +350,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -309,14 +367,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -328,7 +386,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -337,29 +395,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -380,29 +443,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -422,16 +497,22 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -450,6 +531,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -458,18 +541,28 @@ install-data-am:
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -490,8 +583,8 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic ctags \
@@ -506,6 +599,7 @@ uninstall-am:
 	mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
 	tags-recursive uninstall uninstall-am
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/create-native-map/bin/Makefile.in b/create-native-map/bin/Makefile.in
index ca3d769..e39f2b6 100644
--- a/create-native-map/bin/Makefile.in
+++ b/create-native-map/bin/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,9 +16,27 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -39,13 +58,45 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(bindir)"
-binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(bin_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -107,6 +158,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -120,9 +172,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -202,14 +257,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  create-native-map/bin/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  create-native-map/bin/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu create-native-map/bin/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu create-native-map/bin/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -227,25 +282,42 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-binSCRIPTS: $(bin_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-	    $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-binSCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
-	done
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -269,13 +341,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -296,10 +372,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -307,6 +388,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -325,6 +407,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -333,18 +417,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am: install-binSCRIPTS
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -382,6 +476,7 @@ uninstall-am: uninstall-binSCRIPTS
 create-native-map: create-native-map.in
 	cp $(srcdir)/$@.in $@
 	chmod +x $@
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/create-native-map/lib/Makefile.in b/create-native-map/lib/Makefile.in
index ca81da2..9ba5061 100644
--- a/create-native-map/lib/Makefile.in
+++ b/create-native-map/lib/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,8 +57,9 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -49,12 +69,45 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -115,6 +168,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -128,9 +182,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -208,14 +265,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  create-native-map/lib/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  create-native-map/lib/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu create-native-map/lib/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu create-native-map/lib/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -233,6 +290,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -241,7 +299,7 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -258,7 +316,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -266,7 +324,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -292,16 +350,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -309,14 +367,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -328,7 +386,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -337,29 +395,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -380,29 +443,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -422,16 +497,22 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -450,6 +531,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -458,18 +541,28 @@ install-data-am:
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -490,8 +583,8 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic ctags \
@@ -506,6 +599,7 @@ uninstall-am:
 	mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
 	tags-recursive uninstall uninstall-am
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/create-native-map/lib/create-native-map/Makefile.in b/create-native-map/lib/create-native-map/Makefile.in
index c84365d..789f2d9 100644
--- a/create-native-map/lib/create-native-map/Makefile.in
+++ b/create-native-map/lib/create-native-map/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 # do nothing
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -40,10 +59,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -105,6 +130,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -118,9 +144,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  create-native-map/lib/create-native-map/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  create-native-map/lib/create-native-map/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu create-native-map/lib/create-native-map/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu create-native-map/lib/create-native-map/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -297,6 +337,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -305,18 +347,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -349,6 +401,7 @@ uninstall-am:
 	maintainer-clean maintainer-clean-generic mostlyclean \
 	mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/create-native-map/lib/pkgconfig/Makefile.in b/create-native-map/lib/pkgconfig/Makefile.in
index b479da0..83132e2 100644
--- a/create-native-map/lib/pkgconfig/Makefile.in
+++ b/create-native-map/lib/pkgconfig/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,9 +16,27 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -40,18 +59,44 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES = create-native-map.pc
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(pkgconfigdir)"
-pkgconfigDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(pkgconfig_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
@@ -114,6 +159,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -127,9 +173,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -210,14 +259,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  create-native-map/lib/pkgconfig/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  create-native-map/lib/pkgconfig/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu create-native-map/lib/pkgconfig/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu create-native-map/lib/pkgconfig/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -235,25 +284,30 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 create-native-map.pc: $(top_builddir)/config.status $(srcdir)/create-native-map.pc.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-pkgconfigDATA: $(pkgconfig_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
-	@list='$(pkgconfig_DATA)'; for p in $$list; do \
+	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
-	  $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
 	done
 
 uninstall-pkgconfigDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(pkgconfig_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \
-	done
+	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -277,13 +331,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -304,16 +362,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -333,6 +397,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -341,18 +407,28 @@ install-data-am: install-pkgconfigDATA
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -386,6 +462,7 @@ uninstall-am: uninstall-pkgconfigDATA
 	mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
 	uninstall-am uninstall-pkgconfigDATA
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/create-native-map/man/Makefile.in b/create-native-map/man/Makefile.in
index d9c6ca0..4c5069f 100644
--- a/create-native-map/man/Makefile.in
+++ b/create-native-map/man/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,43 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 man1dir = $(mandir)/man1
 am__installdirs = "$(DESTDIR)$(man1dir)"
 NROFF = nroff
@@ -107,6 +159,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -120,9 +173,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -201,14 +257,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  create-native-map/man/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  create-native-map/man/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu create-native-map/man/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu create-native-map/man/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -226,51 +282,50 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-install-man1: $(man1_MANS) $(man_MANS)
+$(am__aclocal_m4_deps):
+install-man1: $(man_MANS)
 	@$(NORMAL_INSTALL)
-	test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
-	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-	for i in $$l2; do \
-	  case "$$i" in \
-	    *.1*) list="$$list $$i" ;; \
-	  esac; \
+	@list1=''; \
+	list2='$(man_MANS)'; \
+	test -n "$(man1dir)" \
+	  && test -n "`echo $$list1$$list2`" \
+	  || exit 0; \
+	echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+	$(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+	{ for i in $$list1; do echo "$$i"; done;  \
+	if test -n "$$list2"; then \
+	  for i in $$list2; do echo "$$i"; done \
+	    | sed -n '/\.1[a-z]*$$/p'; \
+	fi; \
+	} | while read p; do \
+	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; echo "$$p"; \
+	done | \
+	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+	sed 'N;N;s,\n, ,g' | { \
+	list=; while read file base inst; do \
+	  if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+	    echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+	    $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+	  fi; \
 	done; \
-	for i in $$list; do \
-	  if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
-	  else file=$$i; fi; \
-	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-	  case "$$ext" in \
-	    1*) ;; \
-	    *) ext='1' ;; \
-	  esac; \
-	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
-	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-	  echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
-	  $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
-	done
+	for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+	while read files; do \
+	  test -z "$$files" || { \
+	    echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+	    $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+	done; }
+
 uninstall-man1:
 	@$(NORMAL_UNINSTALL)
-	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-	for i in $$l2; do \
-	  case "$$i" in \
-	    *.1*) list="$$list $$i" ;; \
-	  esac; \
-	done; \
-	for i in $$list; do \
-	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-	  case "$$ext" in \
-	    1*) ;; \
-	    *) ext='1' ;; \
-	  esac; \
-	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
-	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-	  echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
-	  rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
-	done
+	@list=''; test -n "$(man1dir)" || exit 0; \
+	files=`{ for i in $$list; do echo "$$i"; done; \
+	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+	  sed -n '/\.1[a-z]*$$/p'; \
+	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+	dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -279,6 +334,19 @@ CTAGS:
 
 
 distdir: $(DISTFILES)
+	@list='$(MANS)'; if test -n "$$list"; then \
+	  list=`for p in $$list; do \
+	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+	  if test -n "$$list" && \
+	    grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+	    echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
+	    echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
+	    exit 1; \
+	  else :; fi; \
+	else :; fi
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -294,13 +362,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -321,16 +393,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -349,6 +427,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -357,18 +437,28 @@ install-data-am: install-man
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man: install-man1
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -404,6 +494,7 @@ uninstall-man: uninstall-man1
 	mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
 	uninstall-am uninstall-man uninstall-man1
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/create-native-map/src/Makefile.in b/create-native-map/src/Makefile.in
index 1332bb4..3f15b9b 100644
--- a/create-native-map/src/Makefile.in
+++ b/create-native-map/src/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,9 +16,27 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -39,18 +58,44 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(assemblydir)"
-assemblyDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(assembly_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
@@ -113,6 +158,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -126,9 +172,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -222,14 +271,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  create-native-map/src/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  create-native-map/src/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu create-native-map/src/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu create-native-map/src/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -247,23 +296,28 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-assemblyDATA: $(assembly_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(assemblydir)" || $(MKDIR_P) "$(DESTDIR)$(assemblydir)"
-	@list='$(assembly_DATA)'; for p in $$list; do \
+	@list='$(assembly_DATA)'; test -n "$(assemblydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(assemblydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(assemblydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(assemblyDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(assemblydir)/$$f'"; \
-	  $(assemblyDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(assemblydir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(assemblydir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(assemblydir)" || exit $$?; \
 	done
 
 uninstall-assemblyDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(assembly_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(assemblydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(assemblydir)/$$f"; \
-	done
+	@list='$(assembly_DATA)'; test -n "$(assemblydir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(assemblydir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -287,13 +341,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -314,10 +372,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -325,6 +388,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -343,6 +407,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -351,18 +417,28 @@ install-data-am: install-assemblyDATA
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -437,6 +513,7 @@ libtest.so: test.c
 
 test-overflow: test-overflow.c test-overflow.h test.c
 	gcc -o $@ $< `pkg-config --libs --cflags glib-2.0`
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/docbrowser/Makefile.am b/docbrowser/Makefile.am
index a1a2626..065c430 100644
--- a/docbrowser/Makefile.am
+++ b/docbrowser/Makefile.am
@@ -40,6 +40,7 @@ browser_sources   = \
 	$(srcdir)/list.cs 		\
 	$(srcdir)/elabel.cs 		\
 	$(srcdir)/history.cs 		\
+	$(srcdir)/editing.cs            \
 	$(srcdir)/Contributions.cs	\
 	$(srcdir)/XmlNodeWriter.cs	\
 	$(srcdir)/IHtmlRender.cs	\
@@ -67,7 +68,7 @@ admin_sources = \
 	$(srcdir)/admin.cs		\
 	$(srcdir)/Contributions.cs
 
-browser_assemblies = $(GTK_SHARP_LIBS) $(MONODOC_LIBS) $(GNOME_SHARP_LIBS) -r:System.Web.Services
+browser_assemblies = $(GTK_SHARP_LIBS) $(MONODOC_LIBS) $(GNOME_SHARP_LIBS) -r:System.Web.Services -r:System.Web
 # we insert gtkhtml libs if we have them for printing 
 geckorender_assemblies = $(GTK_SHARP_LIBS) $(GTKHTML_SHARP_LIBS) $(GECKO_SHARP_LIBS) $(GNOME_SHARP_LIBS) $(MONODOC_LIBS) -r:browser.exe
 gtkhtmlrender_assemblies = $(GTK_SHARP_LIBS) $(GTKHTML_SHARP_LIBS) $(GNOME_SHARP_LIBS) $(MONODOC_LIBS) -r:browser.exe
diff --git a/docbrowser/Makefile.in b/docbrowser/Makefile.in
index f8ffbf6..1e59542 100644
--- a/docbrowser/Makefile.in
+++ b/docbrowser/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES = monodoc AssemblyInfo.cs
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(desktopdir)" \
 	"$(DESTDIR)$(monodocdir)" "$(DESTDIR)$(pixmapdir)"
-binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(bin_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,22 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-desktopDATA_INSTALL = $(INSTALL_DATA)
-monodocDATA_INSTALL = $(INSTALL_DATA)
-pixmapDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(desktop_DATA) $(monodoc_DATA) $(noinst_DATA) $(pixmap_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -132,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -145,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -236,6 +310,7 @@ browser_sources = \
 	$(srcdir)/list.cs 		\
 	$(srcdir)/elabel.cs 		\
 	$(srcdir)/history.cs 		\
+	$(srcdir)/editing.cs            \
 	$(srcdir)/Contributions.cs	\
 	$(srcdir)/XmlNodeWriter.cs	\
 	$(srcdir)/IHtmlRender.cs	\
@@ -262,7 +337,7 @@ admin_sources = \
 	$(srcdir)/admin.cs		\
 	$(srcdir)/Contributions.cs
 
-browser_assemblies = $(GTK_SHARP_LIBS) $(MONODOC_LIBS) $(GNOME_SHARP_LIBS) -r:System.Web.Services
+browser_assemblies = $(GTK_SHARP_LIBS) $(MONODOC_LIBS) $(GNOME_SHARP_LIBS) -r:System.Web.Services -r:System.Web
 # we insert gtkhtml libs if we have them for printing 
 geckorender_assemblies = $(GTK_SHARP_LIBS) $(GTKHTML_SHARP_LIBS) $(GECKO_SHARP_LIBS) $(GNOME_SHARP_LIBS) $(MONODOC_LIBS) -r:browser.exe
 gtkhtmlrender_assemblies = $(GTK_SHARP_LIBS) $(GTKHTML_SHARP_LIBS) $(GNOME_SHARP_LIBS) $(MONODOC_LIBS) -r:browser.exe
@@ -293,14 +368,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  docbrowser/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  docbrowser/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docbrowser/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu docbrowser/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -318,80 +393,109 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 monodoc: $(top_builddir)/config.status $(srcdir)/monodoc.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 AssemblyInfo.cs: $(top_builddir)/config.status $(srcdir)/AssemblyInfo.cs.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-binSCRIPTS: $(bin_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-	    $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-binSCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
-	done
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
 install-desktopDATA: $(desktop_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(desktopdir)" || $(MKDIR_P) "$(DESTDIR)$(desktopdir)"
-	@list='$(desktop_DATA)'; for p in $$list; do \
+	@list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(desktopdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(desktopdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(desktopDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(desktopdir)/$$f'"; \
-	  $(desktopDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(desktopdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(desktopdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(desktopdir)" || exit $$?; \
 	done
 
 uninstall-desktopDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(desktop_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(desktopdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(desktopdir)/$$f"; \
-	done
+	@list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(desktopdir)'; $(am__uninstall_files_from_dir)
 install-monodocDATA: $(monodoc_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(monodocdir)" || $(MKDIR_P) "$(DESTDIR)$(monodocdir)"
-	@list='$(monodoc_DATA)'; for p in $$list; do \
+	@list='$(monodoc_DATA)'; test -n "$(monodocdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(monodocdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(monodocdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(monodocDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(monodocdir)/$$f'"; \
-	  $(monodocDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(monodocdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(monodocdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(monodocdir)" || exit $$?; \
 	done
 
 uninstall-monodocDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(monodoc_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(monodocdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(monodocdir)/$$f"; \
-	done
+	@list='$(monodoc_DATA)'; test -n "$(monodocdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(monodocdir)'; $(am__uninstall_files_from_dir)
 install-pixmapDATA: $(pixmap_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(pixmapdir)" || $(MKDIR_P) "$(DESTDIR)$(pixmapdir)"
-	@list='$(pixmap_DATA)'; for p in $$list; do \
+	@list='$(pixmap_DATA)'; test -n "$(pixmapdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(pixmapdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(pixmapdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(pixmapDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pixmapdir)/$$f'"; \
-	  $(pixmapDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pixmapdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pixmapdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pixmapdir)" || exit $$?; \
 	done
 
 uninstall-pixmapDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(pixmap_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(pixmapdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(pixmapdir)/$$f"; \
-	done
+	@list='$(pixmap_DATA)'; test -n "$(pixmapdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(pixmapdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -400,7 +504,7 @@ uninstall-pixmapDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -417,7 +521,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -425,7 +529,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -451,16 +555,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -468,14 +572,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -487,7 +591,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -496,29 +600,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -539,29 +648,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -584,10 +705,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -595,6 +721,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -614,6 +741,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -623,18 +752,28 @@ install-data-am: install-desktopDATA install-monodocDATA \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am: install-binSCRIPTS
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -656,8 +795,8 @@ ps-am:
 uninstall-am: uninstall-binSCRIPTS uninstall-desktopDATA \
 	uninstall-monodocDATA uninstall-pixmapDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic ctags \
@@ -706,6 +845,7 @@ c: admin.exe
 
 monodoc.desktop: monodoc.desktop.in
 	sed -e "s|\@bindir\@|$(bindir)|" $< > $@
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/docbrowser/browser.cs b/docbrowser/browser.cs
index 5cc85e2..b9eb66f 100644
--- a/docbrowser/browser.cs
+++ b/docbrowser/browser.cs
@@ -60,7 +60,7 @@ class Driver {
 				v => sources.Add (v) },
 			{ "edit=",
 				"Edit mdoc(5) XML documentation found within {PATH}.",
-				v => RootTree.UncompiledHelpSources.Add (v) },
+				v => RootTree.AddUncompiledSource (v) },
 			{ "engine=",
 				"Specify which HTML rendering {ENGINE} to use:\n" + 
 					"  " + string.Join ("\n  ", engines) + "\n" +
@@ -119,6 +119,9 @@ class Driver {
 
 		List<string> topics = p.Parse (args);
 
+		if (basedir == null)
+			basedir = Directory.GetParent (System.Reflection.Assembly.GetExecutingAssembly ().Location).FullName;
+
 		if (show_version) {
 			Console.WriteLine ("Mono Documentation Browser");
 			Version ver = Assembly.GetExecutingAssembly ().GetName ().Version;
@@ -132,7 +135,7 @@ class Driver {
 			return r;
 		}
 
-		if (mergeConfigFile != null) {
+		/*if (mergeConfigFile != null) {
 			ArrayList targetDirs = new ArrayList ();
 			
 			for (int i = 0; i < topics.Count; i++)
@@ -145,7 +148,7 @@ class Driver {
 
 			e.Merge ();
 			return 0;
-		}
+		}*/
 		
 		if (r != 0 || !show_gui)
 			return r;
@@ -257,6 +260,7 @@ public class Browser {
 	TreeView search_tree;
 	TreeStore search_store;
 	SearchableIndex search_index;
+	ArrayList searchResults = new ArrayList (20);
 	string highlight_text;
 	[Glade.Widget] VBox search_vbox;
 	ProgressPanel ppanel;
@@ -578,6 +582,7 @@ public class Browser {
 		Result r = search_index.Search (term);
 		if (r == null)
 			return; //There was a problem with the index
+		searchResults.Add (r);
 		//insert the results in the tree
 		TreeIter iter;
 					
@@ -622,7 +627,7 @@ public class Browser {
 			return;
 		int i_0 = p.Indices [0];
 		int i_1 = p.Indices [1];
-		Result res = (Result) search_index.Results [i_0];
+		Result res = (Result) searchResults [i_0];
 		TreeIter parent;
 		model.IterParent (out parent, iter);
 		string term = (string) search_store.GetValue (parent, 0);
@@ -648,21 +653,21 @@ public class Browser {
 	void TextLarger (object obj, EventArgs args)
 	{
 		SettingsHandler.Settings.preferred_font_size += 10;
-		HelpSource.CssCode = null;
+		//HelpSource.CssCode = null;
 		Reload ();
 		SettingsHandler.Save ();
 	}
 	void TextSmaller (object obj, EventArgs args)
 	{
 		SettingsHandler.Settings.preferred_font_size -= 10;
-		HelpSource.CssCode = null;
+		//HelpSource.CssCode = null;
 		Reload ();
 		SettingsHandler.Save ();
 	}
 	void TextNormal (object obj, EventArgs args)
 	{
 		SettingsHandler.Settings.preferred_font_size = 100;
-		HelpSource.CssCode = null;
+		//HelpSource.CssCode = null;
 		Reload ();
 		SettingsHandler.Save ();
 	}
@@ -733,6 +738,15 @@ public class Browser {
 		
 		Node node;
 		
+		/*
+		 * The webkit library converts the url titles (N:, T:, etc.) to lower case (n:, t:, etc.)
+		 * when clicking on a link. Therefore we need to convert them to upper case, since the
+		 * monodoc backend only understands upper case titles (except for root:, afaik).
+		 */
+		string[] urlParts = url.Split (':');
+		if (urlParts [0].Length == 1)
+			url = urlParts [0].ToUpper () + url.Substring (1);
+			
 		Console.Error.WriteLine ("Trying: {0}", url);
 		try {
 			string res = Browser.GetHtml (url, null, help_tree, out node);
@@ -785,8 +799,8 @@ public class Browser {
 			//
 			string tabTitle;
 			tabTitle = matched_node.Caption; //Normal title
-			string[] parts = matched_node.URL.Split('/', '#');
-			if(matched_node.URL != null && matched_node.URL.StartsWith("ecma:")) {
+			string[] parts = matched_node.PublicUrl.Split('/', '#');
+			if(matched_node.PublicUrl != null && matched_node.PublicUrl.StartsWith("ecma:")) {
 				if(parts.Length == 3 && parts[2] != String.Empty) { //List of Members, properties, events, ...
 					tabTitle = parts[1] + ": " + matched_node.Caption;
 				} else if(parts.Length >= 4) { //Showing a concrete Member, property, ...					
@@ -937,6 +951,7 @@ ExtLoop:
 	void delete_event_cb (object o, DeleteEventArgs args)
 	{
 		Application.Quit ();
+		args.RetVal = true;
 	}
 	void on_print_activate (object sender, EventArgs e) 
 	{
@@ -1691,7 +1706,7 @@ ExtLoop:
 
 		void OnOkClicked (object sender, EventArgs a)
 		{
-			CommentService service = new CommentService();
+			//CommentService service = new CommentService();
 			// todo
 			newcomment.Hide ();
 		}
@@ -2010,7 +2025,7 @@ public class TreeBrowser {
 		if (tree_view.Selection.GetSelected (out model, out iter)){
 			Node n = (Node) iter_to_node [iter];
 			
-			string url = n.URL;
+			string url = n.PublicUrl;
 			Node match;
 			string s;
 
@@ -2038,7 +2053,7 @@ public class TreeBrowser {
 				return;
 			}
 
-			((Browser)browser).Render ("<h1>Unhandled URL</h1>" + "<p>Functionality to view the resource <i>" + n.URL + "</i> is not available on your system or has not yet been implemented.</p>", null, url);
+			((Browser)browser).Render ("<h1>Unhandled URL</h1>" + "<p>Functionality to view the resource <i>" + n.PublicUrl + "</i> is not available on your system or has not yet been implemented.</p>", null, url);
 		}
 	}
 }
@@ -2702,7 +2717,7 @@ public class Tab : Notebook {
 		string [] uSplit = EditingUtils.ParseEditUrl (edit_url);
 		
 		if (uSplit[0].StartsWith ("monodoc:"))
-			EditingUtils.SaveChange (edit_url, browser.help_tree, edit_node, EcmaHelpSource.GetNiceUrl (browser.CurrentTab.CurrentNode));
+			EditingUtils.SaveChange (edit_url, browser.help_tree, edit_node, GetNiceUrl (browser.CurrentTab.CurrentNode));
 		else if (uSplit[0].StartsWith ("file:"))
 			EditingUtils.SaveChange (edit_url, browser.help_tree, edit_node, String.Empty);
 		else
@@ -2711,6 +2726,49 @@ public class Tab : Notebook {
 		history.ActivateCurrent ();
 	}
 
+	public static string GetNiceUrl (Node node) {
+		if (node.Element.StartsWith("N:"))
+			return node.Element;
+		string name, full;
+		int bk_pos = node.Caption.IndexOf (' ');
+		// node from an overview
+		if (bk_pos != -1) {
+			name = node.Caption.Substring (0, bk_pos);
+			full = node.Parent.Caption + "." + name.Replace ('.', '+');
+			return "T:" + full;
+		}
+		// node that lists constructors, methods, fields, ...
+		if ((node.Caption == "Constructors") || (node.Caption == "Fields") || (node.Caption == "Events") 
+			|| (node.Caption == "Members") || (node.Caption == "Properties") || (node.Caption == "Methods")
+			|| (node.Caption == "Operators")) {
+			bk_pos = node.Parent.Caption.IndexOf (' ');
+			name = node.Parent.Caption.Substring (0, bk_pos);
+			full = node.Parent.Parent.Caption + "." + name.Replace ('.', '+');
+			return "T:" + full + "/" + node.Element; 
+		}
+		int pr_pos = node.Caption.IndexOf ('(');
+		// node from a constructor
+		if (node.Parent.Element == "C") {
+			name = node.Parent.Parent.Parent.Caption;
+			int idx = node.PublicUrl.IndexOf ('/');
+			return node.PublicUrl[idx+1] + ":" + name + "." + node.Caption.Replace ('.', '+');
+		// node from a method with one signature, field, property, operator
+		} else if (pr_pos == -1) {
+			bk_pos = node.Parent.Parent.Caption.IndexOf (' ');
+			name = node.Parent.Parent.Caption.Substring (0, bk_pos);
+			full = node.Parent.Parent.Parent.Caption + "." + name.Replace ('.', '+');
+			int idx = node.PublicUrl.IndexOf ('/');
+			return node.PublicUrl[idx+1] + ":" + full + "." + node.Caption;
+		// node from a method with several signatures
+		} else {
+			bk_pos = node.Parent.Parent.Parent.Caption.IndexOf (' ');
+			name = node.Parent.Parent.Parent.Caption.Substring (0, bk_pos);
+			full = node.Parent.Parent.Parent.Parent.Caption + "." + name.Replace ('.', '+');
+			int idx = node.PublicUrl.IndexOf ('/');
+			return node.PublicUrl[idx+1] + ":" + full + "." + node.Caption;
+		}
+	}
+
 	void OnCancelEdits (object sender, EventArgs a)
 	{
 		SetMode (Mode.Viewer);
@@ -2737,6 +2795,7 @@ public class Tab : Notebook {
 			
 			StringWriter sw = new StringWriter ();
 			XmlWriter w = new XmlTextWriter (sw);
+			var converter = new Monodoc.Generators.Html.Ecma2Html ();
 			
 			try {
 				edit_node.InnerXml = text_editor.Buffer.Text;
@@ -2750,7 +2809,7 @@ public class Tab : Notebook {
 			}
 			browser.statusbar.Pop (browser.context_id);
 			browser.statusbar.Push (browser.context_id, "XML OK");
-			string s = HelpSource.BuildHtml (EcmaHelpSource.css_ecma_code, sw.ToString ());
+			string s = converter.Export (sw.ToString (), new Dictionary<string, string> ());
 			html_preview.Render(s);
 
 			return false;
diff --git a/docbrowser/editing.cs b/docbrowser/editing.cs
new file mode 100644
index 0000000..d7c1e32
--- /dev/null
+++ b/docbrowser/editing.cs
@@ -0,0 +1,519 @@
+//
+// editing.cs
+//
+// Author:
+//   Ben Maurer (bmaurer at users.sourceforge.net)
+//
+// (C) 2003 Ben Maurer
+//
+
+using System;
+using System.Collections;
+using System.Collections.Specialized;
+using System.IO;
+using System.Text;
+using System.Xml;
+using System.Xml.Serialization;
+using System.Xml.XPath;
+using System.Web;
+
+namespace Monodoc {
+	public class EditingUtils {
+		
+		public static string FormatEditUri (string document_identifier, string xpath)
+		{
+			return String.Format ("edit:{0}@{1}", HttpUtility.UrlEncode (document_identifier),
+				HttpUtility.UrlEncode (xpath));
+		}
+		
+		public static string GetXPath (XPathNavigator n)
+		{
+			switch (n.NodeType) {
+				case XPathNodeType.Root: return "/";
+				case XPathNodeType.Attribute: {
+					string ret = "@" + n.Name;
+					n.MoveToParent ();
+					string s = GetXPath (n);
+					return s + (s == "/" ? "" : "/") + ret;
+				}
+
+				case XPathNodeType.Element: {
+					string ret = n.Name;
+					int i = 1;
+					while (n.MoveToPrevious ()) {
+						if (n.NodeType == XPathNodeType.Element && n.Name == ret)
+							i++;
+					}
+					ret += "[" + i + "]";
+					if (n.MoveToParent ()) {
+						string s = GetXPath (n);
+						return s + (s == "/" ? "" : "/") + ret;
+					}
+				}
+				break;
+			}
+			throw new Exception ("node type not supported for editing");
+			
+		}
+		
+		public static XmlNode GetNodeFromUrl (string url, RootTree tree)
+		{
+			Console.WriteLine ("Url is: {0}", url);
+			string [] uSplit = ParseEditUrl (url);
+			Console.WriteLine ("Results are: {0}\n{1}\n{2}", uSplit [0], uSplit [1], uSplit [2]);
+			
+			string xp = uSplit [2];
+			string id =  uSplit [1];
+			
+			XmlDocument d;
+			
+			if (uSplit[0].StartsWith("monodoc:///")) {
+				int prov = int.Parse (uSplit [0].Substring("monodoc:///".Length));
+				d = tree.GetHelpSourceFromId (prov).GetHelpXmlWithChanges (id);
+			} else if (uSplit[0].StartsWith("file:")) {
+				d = new XmlDocument();
+				d.PreserveWhitespace = true;
+				d.Load(uSplit[0].Substring(5));
+			} else {
+				throw new NotImplementedException("Don't know how to load " + url); 
+			}			
+			
+			return d.SelectSingleNode (xp);
+				
+		}
+		
+		public static void SaveChange (string url, RootTree tree, XmlNode node, string node_url)
+		{
+			/*string [] uSplit = ParseEditUrl (url);
+		
+			string xp = uSplit [2];
+			string id =  uSplit [1];
+						
+			if (uSplit[0].StartsWith("monodoc:///")) {
+				int prov = int.Parse (uSplit [0].Substring("monodoc:///".Length));
+				HelpSource hs = tree.GetHelpSourceFromId (prov);
+				
+				changes.AddChange (hs.Name, hs.GetRealPath (id), xp, node, node_url);
+				changes.Save ();
+			} else if (uSplit[0].StartsWith("file:")) {
+				uSplit[0] = uSplit[0].Substring(5);
+				
+				XmlDocument d = new XmlDocument();
+				d.PreserveWhitespace = true;
+				d.Load(uSplit[0]);
+				
+				XmlNode original = d.SelectSingleNode(xp);
+				original.ParentNode.ReplaceChild(d.ImportNode(node, true), original);
+				
+				d.Save(uSplit[0]);
+			} else {				
+				throw new NotImplementedException("Don't know how to save to " + url); 
+			}*/
+		}
+
+		public static void RemoveChange (string url, RootTree tree)
+		{
+			/*string [] uSplit = ParseEditUrl (url);
+		
+			string xp = uSplit [2];
+			string id = uSplit [1];
+						
+			if (uSplit[0].StartsWith("monodoc:///")) {
+				int prov = int.Parse (uSplit [0].Substring("monodoc:///".Length));
+				HelpSource hs = tree.GetHelpSourceFromId (prov);
+				
+				changes.RemoveChange (hs.Name, hs.GetRealPath (id), xp);
+				changes.Save ();
+			} else if (uSplit[0].StartsWith("file:")) {
+				//TODO: Not implemented
+			}*/
+		}
+		
+		public static void RenderEditPreview (string url, RootTree tree, XmlNode new_node, XmlWriter w)
+		{
+			string [] uSplit = ParseEditUrl (url);
+		
+			if (uSplit[0].StartsWith("monodoc:///")) {
+				int prov = int.Parse (uSplit [0].Substring("monodoc:///".Length));
+				HelpSource hs = tree.GetHelpSourceFromId (prov);
+				hs.RenderPreviewDocs (new_node, w);
+			} else {
+				foreach (HelpSource hs in tree.HelpSources) {
+					if (hs is Monodoc.Providers.EcmaUncompiledHelpSource) {
+						// It doesn't matter which EcmaHelpSource is chosen.
+						hs.RenderPreviewDocs (new_node, w);
+						break;
+					}
+				}				
+			}
+		}
+		
+		public static string [] ParseEditUrl (string url)
+		{
+			if (!url.StartsWith ("edit:"))
+				throw new Exception ("wtf");
+			
+			string [] parts = url.Split ('@');
+			if (parts.Length != 2)
+				throw new Exception (String.Format ("invalid editing url {0}", parts.Length));
+			
+			string xp = HttpUtility.UrlDecode (parts [1]);
+			parts = HttpUtility.UrlDecode (parts [0]).Substring ("edit:".Length).Split ('@');
+			if (parts.Length == 1) {
+				string p = parts[0];
+				parts = new string[2];
+				parts[0] = p;
+				parts[1] = "";
+			}
+			
+			return new string [] {parts [0], parts [1], xp};
+		}
+		
+		public static void AccountForChanges (XmlDocument d, string doc_set, string real_file)
+		{
+			try {
+				FileChangeset fcs = changes.GetChangeset (doc_set, real_file);
+				if (fcs == null)
+					return;
+				
+				foreach (Change c in fcs.Changes) {
+					// Filter out old changes
+					if (c.FromVersion != RootTree.MonodocVersion)
+						continue;
+					
+					XmlNode old = d.SelectSingleNode (c.XPath);
+					if (old != null)
+						old.ParentNode.ReplaceChild (d.ImportNode (c.NewNode, true), old);
+				}
+			} catch {
+				return;
+			}
+		}
+	
+		public static GlobalChangeset changes = GlobalChangeset.Load ();
+
+		static public GlobalChangeset GetChangesFrom (int starting_serial_id)
+		{
+			return changes.GetFrom (starting_serial_id);
+		}
+	}
+
+#region Data Model
+	public class GlobalChangeset {
+
+		public static XmlSerializer serializer = new XmlSerializer (typeof (GlobalChangeset));
+		static string changeset_file = Path.Combine (SettingsHandler.Path, "changeset.xml");
+		static string changeset_backup_file = Path.Combine (SettingsHandler.Path, "changeset.xml~");
+	
+		public static GlobalChangeset Load ()
+		{
+			try {
+				if (File.Exists (changeset_file))
+					return LoadFromFile (changeset_file);
+			} catch {}
+			
+			return new GlobalChangeset ();
+		}
+		
+		public static GlobalChangeset LoadFromFile (string fileName)
+		{
+			using (Stream s = File.OpenRead (fileName)) {
+				return (GlobalChangeset) serializer.Deserialize (s);
+			}
+		}			
+		
+		public void Save ()
+		{
+			SettingsHandler.EnsureSettingsDirectory ();
+
+			try {    
+				if (File.Exists(changeset_file))  // create backup copy
+					File.Copy (changeset_file, changeset_backup_file, true);
+           
+				using (FileStream fs = File.Create (changeset_file)){
+					serializer.Serialize (fs, this);
+				}
+			} catch (Exception e) {
+				Console.WriteLine ("Error while saving changes. " + e);
+				if (File.Exists(changeset_backup_file))  // if saving fails then use backup if we have one				
+					File.Copy (changeset_backup_file, changeset_file, true);
+				else
+					File.Delete (changeset_file);   // if no backup, delete invalid changeset 
+			}
+		}
+		
+		static void VerifyDirectoryExists (DirectoryInfo d) {
+			if (d.Exists)
+				return;
+
+			VerifyDirectoryExists (d.Parent);
+			d.Create ();
+		}
+
+		[XmlElement ("DocSetChangeset", typeof (DocSetChangeset))]
+		public ArrayList DocSetChangesets = new ArrayList ();
+
+		public FileChangeset GetChangeset (string doc_set, string real_file)
+		{
+			foreach (DocSetChangeset dscs in DocSetChangesets) {
+				if (dscs.DocSet != doc_set) 
+					continue;
+			
+				foreach (FileChangeset fcs in dscs.FileChangesets) {
+					if (fcs.RealFile == real_file)
+						return fcs;
+				}
+			}
+			
+			return null;
+		}
+
+		public int Count {
+			get {
+				int count = 0;
+				
+				foreach (DocSetChangeset dscs in DocSetChangesets){
+					foreach (FileChangeset fcs in dscs.FileChangesets){
+						count += fcs.Changes.Count;
+					}
+				}
+
+				return count;
+			}
+		}
+
+		Change NewChange (string xpath, XmlNode new_node, string node_url)
+		{
+			Change new_change = new Change ();
+			new_change.XPath = xpath;
+			new_change.NewNode = new_node;
+			new_change.NodeUrl = node_url;
+
+			Console.WriteLine ("New serial:" + SettingsHandler.Settings.SerialNumber);
+			new_change.Serial = SettingsHandler.Settings.SerialNumber;
+
+			return new_change;
+		}
+		
+		public void AddChange (string doc_set, string real_file, string xpath, XmlNode new_node, string node_url)
+		{
+			FileChangeset new_file_change_set;
+			Change new_change = NewChange (xpath, new_node, node_url);
+			
+			if (real_file == null)
+				throw new Exception ("Could not find real_file. Please talk to Miguel or Ben about this");
+			
+			foreach (DocSetChangeset dscs in DocSetChangesets) {
+				if (dscs.DocSet != doc_set) 
+					continue;
+
+				foreach (FileChangeset fcs in dscs.FileChangesets) {
+					if (fcs.RealFile != real_file)
+						continue;
+					
+					foreach (Change c in fcs.Changes) {
+						if (c.XPath == xpath) {
+							c.NewNode = new_node;
+							c.Serial = SettingsHandler.Settings.SerialNumber;
+							return;
+						}
+					}
+
+					fcs.Changes.Add (new_change);
+					return;
+					
+				}
+				
+				new_file_change_set = new FileChangeset ();
+				new_file_change_set.RealFile = real_file;
+				new_file_change_set.Changes.Add (new_change);
+				dscs.FileChangesets.Add (new_file_change_set);
+				return;
+					
+			}
+			
+			DocSetChangeset new_dcs = new DocSetChangeset ();
+			new_dcs.DocSet = doc_set;
+			
+			new_file_change_set = new FileChangeset ();
+			new_file_change_set.RealFile = real_file;
+			
+			new_file_change_set.Changes.Add (new_change);
+			new_dcs.FileChangesets.Add (new_file_change_set);
+			DocSetChangesets.Add (new_dcs);
+		}
+
+		public void RemoveChange (string doc_set, string real_file, string xpath)
+		{
+			if (real_file == null)
+				throw new Exception ("Could not find real_file. Please talk to Miguel or Ben about this");
+			
+			for (int i = 0; i < DocSetChangesets.Count; i++) {
+				DocSetChangeset dscs = DocSetChangesets [i] as DocSetChangeset;
+				if (dscs.DocSet != doc_set) 
+					continue;
+
+				for (int j = 0; j < dscs.FileChangesets.Count; j++) {
+					FileChangeset fcs = dscs.FileChangesets [j] as FileChangeset;
+					if (fcs.RealFile != real_file)
+						continue;
+
+					for (int k = 0; k < fcs.Changes.Count; k++) {
+						Change c = fcs.Changes [k] as Change;
+						if (c.XPath == xpath) {
+							fcs.Changes.Remove (c);
+							break;
+						}
+					}
+					if (fcs.Changes.Count == 0)
+						dscs.FileChangesets.Remove (fcs);
+				}
+
+				if (dscs.FileChangesets.Count == 0)
+					DocSetChangesets.Remove (dscs);
+			}
+		}
+
+		public GlobalChangeset GetFrom (int starting_serial_id)
+		{
+			GlobalChangeset s = null;
+			
+			foreach (DocSetChangeset dscs in DocSetChangesets){
+				object o = dscs.GetFrom (starting_serial_id);
+				if (o == null)
+					continue;
+				if (s == null)
+					s = new GlobalChangeset ();
+				s.DocSetChangesets.Add (o);
+			}
+			return s;
+		}
+	}
+	
+	public class DocSetChangeset {
+		[XmlAttribute] public string DocSet;
+		
+		[XmlElement ("FileChangeset", typeof (FileChangeset))]
+		public ArrayList FileChangesets = new ArrayList ();
+
+		public DocSetChangeset GetFrom (int starting_serial_id)
+		{
+			DocSetChangeset dsc = null;
+			
+			foreach (FileChangeset fcs in FileChangesets){
+				object o = fcs.GetFrom (starting_serial_id);
+				if (o == null)
+					continue;
+				if (dsc == null){
+					dsc = new DocSetChangeset ();
+					dsc.DocSet = DocSet;
+				}
+				dsc.FileChangesets.Add (o);
+			}
+			return dsc;
+		}
+	}
+	
+	public class FileChangeset {
+		[XmlAttribute] public string RealFile;
+		
+		[XmlElement ("Change", typeof (Change))]
+		public ArrayList Changes = new ArrayList ();
+
+		public FileChangeset GetFrom (int starting_serial_id)
+		{
+			FileChangeset fcs = null;
+
+			foreach (Change c in Changes){
+				if (c.Serial < starting_serial_id)
+					continue;
+				if (fcs == null){
+					fcs = new FileChangeset ();
+					fcs.RealFile = RealFile;
+				}
+				fcs.Changes.Add (c);
+			}
+			return fcs;
+		}
+	}
+	
+	public class Change {
+		[XmlAttribute] public string XPath;
+		[XmlAttribute] public int FromVersion = RootTree.MonodocVersion;
+		[XmlAttribute] public string NodeUrl;
+		
+		public XmlNode NewNode;
+
+		public int Serial;
+
+		bool applied = false;
+		
+		//
+		// These are not a property, because we dont want them serialized;
+		// Only used by the Admin Client.
+		//
+		public bool Applied ()
+		{
+			return applied;
+		}
+
+		public void SetApplied (bool value)
+		{
+			applied = value;
+		}
+	}
+#endregion
+	
+	public class EditMerger {
+		GlobalChangeset changeset;
+		ArrayList targetDirs;
+		
+		public EditMerger (GlobalChangeset changeset, ArrayList targetDirs)
+		{
+			this.changeset = changeset;
+			this.targetDirs = targetDirs;
+		}
+		
+		public void Merge ()
+		{
+			foreach (DocSetChangeset dsc in changeset.DocSetChangesets) {
+				bool merged = false;
+				foreach (string path in targetDirs) {
+					if (File.Exists (Path.Combine (path, dsc.DocSet + ".source"))) {
+						Merge (dsc, path);
+						merged = true;
+						break;
+					}
+				}
+				if (!merged) Console.WriteLine ("Could not merge docset {0}", dsc.DocSet);
+			}
+		}
+		
+		void Merge (DocSetChangeset dsc, string path)
+		{
+			Console.WriteLine ("Merging changes in {0} ({1})", dsc.DocSet, path);
+			
+			foreach (FileChangeset fcs in dsc.FileChangesets) {
+				if (File.Exists (Path.Combine (path, fcs.RealFile)))
+					Merge (fcs, path);
+				else
+					Console.WriteLine ("\tCould not find file {0}", Path.Combine (path, fcs.RealFile));
+			}
+		}
+		
+		void Merge (FileChangeset fcs, string path)
+		{
+			XmlDocument d = new XmlDocument ();
+			d.Load (Path.Combine (path, fcs.RealFile));
+			
+			foreach (Change c in fcs.Changes) {
+				XmlNode old = d.SelectSingleNode (c.XPath);
+				if (old != null)
+					old.ParentNode.ReplaceChild (d.ImportNode (c.NewNode, true), old);
+			}
+			
+			d.Save (Path.Combine (path, fcs.RealFile));
+		}
+	}
+}
+
diff --git a/docbrowser/monodoc.in b/docbrowser/monodoc.in
index a532918..806b163 100644
--- a/docbrowser/monodoc.in
+++ b/docbrowser/monodoc.in
@@ -75,7 +75,7 @@ elif test x at MOZILLA_HOME@ != x; then
     if [ -f @MOZILLA_HOME@/chrome/comm.jar ]; then
         MOZILLA_HOME=@MOZILLA_HOME@
     fi 
-elif grep GRE_PATH /etc/gre.d/*.conf > /dev/null ; then
+elif grep -qs GRE_PATH /etc/gre.d/*.conf > /dev/null ; then
 	MOZILLA_HOME=$(grep -h GRE_PATH= /etc/gre.d/*.conf | cut -d '"' -f 2 -d = | head -n 1)
 elif [ $(which xulrunner 2> /dev/null) ] > /dev/null ; then
     MOZILLA_FIVE_HOME=`getdirectory xulrunner`
diff --git a/docbrowser/theme-icons/Makefile.in b/docbrowser/theme-icons/Makefile.in
index d24efb1..76667e3 100644
--- a/docbrowser/theme-icons/Makefile.in
+++ b/docbrowser/theme-icons/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -218,14 +247,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  docbrowser/theme-icons/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  docbrowser/theme-icons/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docbrowser/theme-icons/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu docbrowser/theme-icons/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -243,6 +272,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -266,13 +296,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -290,16 +324,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -318,6 +358,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -326,18 +368,28 @@ install-data-am: install-data-local
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -359,7 +411,6 @@ ps-am:
 uninstall-am:
 	@$(NORMAL_INSTALL)
 	$(MAKE) $(AM_MAKEFLAGS) uninstall-hook
-
 .MAKE: install-am install-strip uninstall-am
 
 .PHONY: all all-am check check-am clean clean-generic distclean \
@@ -379,6 +430,7 @@ install-data-local:
 
 uninstall-hook:
 	@-$(install_icon_exec) -u $(theme_icons)
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/AssemblyInfo.cs b/gendarme/AssemblyInfo.cs
index 542321e..8ab9cb3 100644
--- a/gendarme/AssemblyInfo.cs
+++ b/gendarme/AssemblyInfo.cs
@@ -9,4 +9,4 @@
 
 using System.Reflection;
 
-[assembly: AssemblyVersion ("2.10.0.0")]
+[assembly: AssemblyVersion ("2.11.0.0")]
diff --git a/gendarme/AssemblyStaticInfo.cs b/gendarme/AssemblyStaticInfo.cs
index 2ca215e..130eb9d 100644
--- a/gendarme/AssemblyStaticInfo.cs
+++ b/gendarme/AssemblyStaticInfo.cs
@@ -18,10 +18,9 @@ using System.Security.Permissions;
 [assembly: AssemblyCopyright ("Copyright (C) 2005-2011 Novell, Inc. and contributors")]
 [assembly: AssemblyCompany ("Novell, Inc.")]
 
-[assembly: PermissionSet (SecurityAction.RequestMinimum, Unrestricted = true)]
 [assembly: CLSCompliant (false)]
 [assembly: ComVisible (false)]
 
 #if RELEASE
-[assembly: AssemblyVersion ("2.10.0.0")]
+[assembly: AssemblyVersion ("2.11.0.0")]
 #endif
diff --git a/gendarme/MIT.X11 b/gendarme/MIT.X11
index 8d90e9d..b3e59de 100644
--- a/gendarme/MIT.X11
+++ b/gendarme/MIT.X11
@@ -1,4 +1,4 @@
-Copyright (c) 2005-2010 Novell, Inc and the individuals listed on the 
+Copyright (c) 2005-2011 Novell, Inc and the individuals listed on the 
 ChangeLog entries.
 
 Permission is hereby granted, free of charge, to any person obtaining
diff --git a/gendarme/Makefile.am b/gendarme/Makefile.am
index 890f0f2..2d96376 100644
--- a/gendarme/Makefile.am
+++ b/gendarme/Makefile.am
@@ -45,7 +45,8 @@ check-test: all bin/gendarme.exe.config test
 		--ignore=unit-test.ignore --severity=all --confidence=all @unit-test.list
 
 test-regress: all
-	mono --debug bin/gendarme.exe --config rules/rules.xml --set self-test --log regress.log testcases/*.dll testcases/*.exe
+	mono --debug bin/gendarme.exe --config rules/rules.xml --set self-test --log regress.log \
+		--severity=all --confidence=all testcases/*.dll testcases/*.exe
 	
 TEST1 ?= AvoidVisibleConstantFieldTest
 test1_file = $(shell find rules -name "\.svn" -prune -o  -name "*$(TEST1)*" -print)
@@ -101,16 +102,3 @@ zip-bin: bin extra-bin
 	cd ..; \
 	rm -rf gendarme.$(GENDARME_VERSION);
 
-instruct.xsd:
-	wget http://www.ohloh.net/instruct.xsd
-
-push: instruct.xsd
-	xmllint --schema instruct.xsd gendarme.xml
-#	scp gendarme-2.8preview1-bin.zip $(USER)@upload.ohloh.net:gendarme/files; \
-#	scp gendarme-2.8preview1-win32-setup.zip $(USER)@upload.ohloh.net:gendarme/files; \
-#	scp gendarme.xml $(USER)@upload.ohloh.net:gendarme/instructs
-
-pull-log:
-	scp $(USER)@upload.ohloh.net:gendarme/logs/upload.log .
-	cat upload.log
-
diff --git a/gendarme/Makefile.in b/gendarme/Makefile.in
index 006a5f7..2cddcac 100644
--- a/gendarme/Makefile.in
+++ b/gendarme/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -43,10 +62,37 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES = AssemblyInfo.cs gendarme gendarme-wizard gd2i
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pixmapdir)"
-binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(bin_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -57,20 +103,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-pixmapDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(pixmap_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -131,6 +203,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -144,9 +217,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -238,14 +314,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -263,6 +339,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 AssemblyInfo.cs: $(top_builddir)/config.status $(srcdir)/AssemblyInfo.cs.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 gendarme: $(top_builddir)/config.status $(srcdir)/gendarme.in
@@ -273,40 +350,60 @@ gd2i: $(top_builddir)/config.status $(srcdir)/gd2i.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-binSCRIPTS: $(bin_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-	    $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-binSCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
-	done
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
 install-pixmapDATA: $(pixmap_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(pixmapdir)" || $(MKDIR_P) "$(DESTDIR)$(pixmapdir)"
-	@list='$(pixmap_DATA)'; for p in $$list; do \
+	@list='$(pixmap_DATA)'; test -n "$(pixmapdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(pixmapdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(pixmapdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(pixmapDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pixmapdir)/$$f'"; \
-	  $(pixmapDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pixmapdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pixmapdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pixmapdir)" || exit $$?; \
 	done
 
 uninstall-pixmapDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(pixmap_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(pixmapdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(pixmapdir)/$$f"; \
-	done
+	@list='$(pixmap_DATA)'; test -n "$(pixmapdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(pixmapdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -315,7 +412,7 @@ uninstall-pixmapDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -332,7 +429,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -340,7 +437,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -366,16 +463,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -383,14 +480,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -402,7 +499,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -411,29 +508,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -454,29 +556,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -499,10 +613,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -510,6 +629,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -529,6 +649,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -537,18 +659,28 @@ install-data-am: install-pixmapDATA
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am: install-binSCRIPTS
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -569,8 +701,8 @@ ps-am:
 
 uninstall-am: uninstall-binSCRIPTS uninstall-pixmapDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic ctags \
@@ -618,7 +750,8 @@ check-test: all bin/gendarme.exe.config test
 		--ignore=unit-test.ignore --severity=all --confidence=all @unit-test.list
 
 test-regress: all
-	mono --debug bin/gendarme.exe --config rules/rules.xml --set self-test --log regress.log testcases/*.dll testcases/*.exe
+	mono --debug bin/gendarme.exe --config rules/rules.xml --set self-test --log regress.log \
+		--severity=all --confidence=all testcases/*.dll testcases/*.exe
 
 TEST1 ?= AvoidVisibleConstantFieldTest
 
@@ -671,18 +804,6 @@ zip-bin: bin extra-bin
 	cd ..; \
 	rm -rf gendarme.$(GENDARME_VERSION);
 
-instruct.xsd:
-	wget http://www.ohloh.net/instruct.xsd
-
-push: instruct.xsd
-	xmllint --schema instruct.xsd gendarme.xml
-#	scp gendarme-2.8preview1-bin.zip $(USER)@upload.ohloh.net:gendarme/files; \
-#	scp gendarme-2.8preview1-win32-setup.zip $(USER)@upload.ohloh.net:gendarme/files; \
-#	scp gendarme.xml $(USER)@upload.ohloh.net:gendarme/instructs
-
-pull-log:
-	scp $(USER)@upload.ohloh.net:gendarme/logs/upload.log .
-	cat upload.log
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/console/ConsoleRunner.cs b/gendarme/console/ConsoleRunner.cs
index 97afccb..bf9814c 100644
--- a/gendarme/console/ConsoleRunner.cs
+++ b/gendarme/console/ConsoleRunner.cs
@@ -29,6 +29,7 @@
 using System;
 using System.Collections.Generic;
 using System.Diagnostics;
+using System.Globalization;
 using System.IO;
 using System.Linq;
 using System.Reflection;
@@ -53,21 +54,23 @@ namespace Gendarme {
 		private string log_file;
 		private string xml_file;
 		private string ignore_file;
-		private string limit;
-		private string severity_filter;
-		private string confidence_filter;
 		private bool help;
 		private bool quiet;
 		private bool version;
+		private bool console;
 		private List<string> assembly_names;
 
+		static string [] SplitOptions (string value)
+		{
+			return value.ToUpperInvariant ().Split (new char [] { ',' }, StringSplitOptions.RemoveEmptyEntries);
+		}
+
 		// parse severity filter
 		// e.g. Audit,High+ == Audit, High and Critical
-		void ParseSeverity ()
+		bool ParseSeverity (string filter)
 		{
 			SeverityBitmask.ClearAll ();
-			string [] options = severity_filter.ToUpperInvariant ().Split (',');
-			foreach (string option in options) {
+			foreach (string option in SplitOptions (filter)) {
 				Severity severity;
 
 				switch (option) {
@@ -101,28 +104,26 @@ namespace Gendarme {
 					SeverityBitmask.SetAll ();
 					continue;
 				default:
-					continue;
+					string msg = String.Format (CultureInfo.CurrentCulture, "Unknown severity level '{0}'", option);
+					throw new OptionException (msg, "severity");
 				}
 
 				char end = option [option.Length - 1];
 				if (end == '+') {
 					SeverityBitmask.SetDown (severity);
-					Console.WriteLine ("SetDown {0} -> {1}", severity, SeverityBitmask);
 				} else if (end == '-') {
 					SeverityBitmask.SetUp (severity);
-					Console.WriteLine ("SetUp {0} -> {1}", severity, SeverityBitmask);
 				} else {
 					SeverityBitmask.Set (severity);
-					Console.WriteLine ("Set {0} -> {1}", severity, SeverityBitmask);
 				}
 			}
+			return true;
 		}
 
-		void ParseConfidence ()
+		bool ParseConfidence (string filter)
 		{
 			ConfidenceBitmask.ClearAll ();
-			string [] options = confidence_filter.ToUpperInvariant ().Split (',');
-			foreach (string option in options) {
+			foreach (string option in SplitOptions (filter)) {
 				Confidence confidence;
 
 				switch (option) {
@@ -151,7 +152,8 @@ namespace Gendarme {
 					ConfidenceBitmask.SetAll ();
 					continue;
 				default:
-					continue;
+					string msg = String.Format (CultureInfo.CurrentCulture, "Unknown confidence level '{0}'", option);
+					throw new OptionException (msg, "confidence");
 				}
 
 				char end = option [option.Length - 1];
@@ -163,48 +165,104 @@ namespace Gendarme {
 					ConfidenceBitmask.Set (confidence);
 				}
 			}
+			return true;
+		}
+
+		static string ValidateInputFile (string option, string file)
+		{
+			if (!File.Exists (file)) {
+				string msg = String.Format (CultureInfo.CurrentCulture, "File '{0}' could not be found", file);
+				throw new OptionException (msg, option);
+			}
+			return file;
+		}
+
+		static string ValidateOutputFile (string option, string file)
+		{
+			string msg = String.Empty;
+			if (file.Length > 0) {
+				string path = Path.GetDirectoryName (file);
+				if (path.Length > 0) {
+					if (path.IndexOfAny (Path.GetInvalidPathChars ()) != -1)
+						msg = String.Format (CultureInfo.CurrentCulture, "Invalid path '{0}'", file);
+					else if (!Directory.Exists (path))
+						msg = String.Format (CultureInfo.CurrentCulture, "Path '{0}' does not exists", file);
+				}
+			}
+
+			string fname = Path.GetFileName (file);
+			if ((fname.Length == 0) || (fname.IndexOfAny (Path.GetInvalidFileNameChars ()) != -1)) {
+				msg = String.Format (CultureInfo.CurrentCulture, "Filename '{0}' is not valid", fname);
+			}
+
+			if (msg.Length > 0)
+				throw new OptionException (msg, option);
+
+			return file;
+		}
+
+		static string ValidateRuleSet (string ruleSet)
+		{
+			if (String.IsNullOrEmpty (ruleSet)) {
+				throw new OptionException ("Missing rule set name", "set");
+			}
+			return ruleSet;
+		}
+
+		static int ValidateLimit (string limit)
+		{
+			int defects_limit;
+			if (String.IsNullOrEmpty (limit) || !Int32.TryParse (limit, out defects_limit)) {
+				string msg = String.Format (CultureInfo.CurrentCulture, "Invalid value '{0}' to limit defects", limit);
+				throw new OptionException (msg, "limit");
+			}
+			return defects_limit;
 		}
 
 		byte Parse (string [] args)
 		{
+			bool severity = false;
+			bool confidence = false;
+			// if supplied, use the user limit on defects (otherwise 2^31 is used)
+			DefectsLimit = Int32.MaxValue;
+
 			var p = new OptionSet () {
-				{ "config=",	v => config_file = v },
-				{ "set=",	v => rule_set = v },
-				{ "log=",	v => log_file = v },
-				{ "xml=",	v => xml_file = v },
-				{ "html=",	v => html_file = v },
-				{ "ignore=",	v => ignore_file = v },
-				{ "limit=",	v => limit = v },
-				{ "severity=",	v => severity_filter = v },
-				{ "confidence=",v => confidence_filter = v },
+				{ "config=",	v => config_file = ValidateInputFile ("config", v) },
+				{ "set=",	v => rule_set = ValidateRuleSet (v) },
+				{ "log=",	v => log_file = ValidateOutputFile ("log", v) },
+				{ "xml=",	v => xml_file = ValidateOutputFile ("xml", v) },
+				{ "html=",	v => html_file = ValidateOutputFile ("html", v) },
+				{ "ignore=",	v => ignore_file = ValidateInputFile ("ignore", v) },
+				{ "limit=",	v => DefectsLimit = ValidateLimit (v) },
+				{ "severity=",	v => severity = ParseSeverity (v) },
+				{ "confidence=",v => confidence = ParseConfidence (v) },
 				{ "v|verbose",  v => ++VerbosityLevel },
+				{ "console",	v => console = v != null },
 				{ "quiet",	v => quiet = v != null },
 				{ "version",	v => version = v != null },
 				{ "h|?|help",	v => help = v != null },
 			};
-			assembly_names = p.Parse (args);
 
-			// if supplied, use the user limit on defects (otherwise 2^31 is used)
-			int defects_limit;
-			if (String.IsNullOrEmpty (limit) || !Int32.TryParse (limit, out defects_limit))
-				defects_limit = Int32.MaxValue;
-			DefectsLimit = defects_limit;
+			try {
+				assembly_names = p.Parse (args);
+			}
+			catch (OptionException e) {
+				Console.WriteLine ("Error parsing option '{0}' : {1}", e.OptionName, e.Message);
+				Console.WriteLine ();
+				return 1;
+			}
 
 			// by default the runner will ignore Audit and Low severity defects
-			if (String.IsNullOrEmpty (severity_filter)) {
+			if (!severity) {
 				SeverityBitmask.SetAll ();
 				SeverityBitmask.Clear (Severity.Audit);
 				SeverityBitmask.Clear (Severity.Low);
-			} else {
-				ParseSeverity ();
 			}
 
 			// by default the runner will ignore Low confidence defects
-			if (String.IsNullOrEmpty (confidence_filter)) {
+			if (!confidence) {
 				ConfidenceBitmask.SetAll ();
 				ConfidenceBitmask.Clear (Confidence.Low);
-			} else {
-				ParseConfidence ();
 			}
 
 			return (byte) ((assembly_names.Count > 0) ? 0 : 1);
@@ -281,7 +339,7 @@ namespace Gendarme {
 			}
 
 			// generate text report (default, to console, if xml and html aren't specified)
-			if ((log_file != null) || ((xml_file == null) && (html_file == null))) {
+			if (console || (log_file != null) || ((xml_file == null) && (html_file == null))) {
 				using (TextResultWriter writer = new TextResultWriter (this, log_file)) {
 					writer.Report ();
 				}
@@ -380,7 +438,7 @@ namespace Gendarme {
 		private static string TimeToString (TimeSpan time)
 		{
 			if (time >= TimeSpan.FromMilliseconds (100))
-				return string.Format ("{0:0.0} seconds", time.TotalSeconds);
+				return String.Format (CultureInfo.CurrentCulture, "{0:0.0} seconds", time.TotalSeconds);
 			else
 				return "<0.1 seconds";
 		}
@@ -441,9 +499,10 @@ namespace Gendarme {
 				if (null != log_file || null != xml_file || null != html_file) {
 					List<string> files = new List<string> (new string [] { log_file, xml_file, html_file });
 					files.RemoveAll (string.IsNullOrEmpty);
-					hint = string.Format ("Report{0} written to: {1}.",
+					hint = String.Format (CultureInfo.CurrentCulture, "Report{0} written to: {1}.",
 						(files.Count > 1) ? "s" : string.Empty,
-						string.Join (",", files.Select (file => string.Format ("`{0}'", file)).ToArray ()));
+						string.Join (",", files.Select (file => 
+							String.Format (CultureInfo.CurrentCulture, "`{0}'", file)).ToArray ()));
 				}
 
 				if (Defects.Count == 0)
@@ -519,6 +578,7 @@ namespace Gendarme {
 			Console.WriteLine ("  --confidence [all | [[low | normal | high | total][+|-]],...");
 			Console.WriteLine ("\t\t\tFilter defects for the specified confidence levels.");
 			Console.WriteLine ("\t\t\tDefault is 'normal+'");
+			Console.WriteLine ("  --console\t\tShow defects on the console even if --log, --xml or --html are specified.");
 			Console.WriteLine ("  --quiet\t\tUsed to disable progress and other information which is normally written to stdout.");
 			Console.WriteLine ("  --v\t\t\tWhen present additional progress information is written to stdout (can be used multiple times).");
 			Console.WriteLine ("  assemblies\t\tSpecify the assemblies to verify.");
diff --git a/gendarme/console/Helpers.cs b/gendarme/console/Helpers.cs
index c399452..3ef8361 100644
--- a/gendarme/console/Helpers.cs
+++ b/gendarme/console/Helpers.cs
@@ -38,7 +38,7 @@ namespace Gendarme {
 		{
 			Assembly executing = Assembly.GetExecutingAssembly ();
 			foreach (string resource in executing.GetManifestResourceNames ()) {
-				if (resource.EndsWith (resourceName))
+				if (resource.EndsWith (resourceName, StringComparison.Ordinal))
 					return executing.GetManifestResourceStream (resource);
 			}
 			return null;
diff --git a/gendarme/console/IgnoreFileList.cs b/gendarme/console/IgnoreFileList.cs
index acf0d1d..b714ded 100644
--- a/gendarme/console/IgnoreFileList.cs
+++ b/gendarme/console/IgnoreFileList.cs
@@ -61,13 +61,13 @@ namespace Gendarme {
 
 		private void Parse ()
 		{
+			char [] buffer = new char [4096];
 			while (files.Count > 0) {
 				string fileName = files.Pop ();
-				using (StreamReader sr = new StreamReader (fileName)) {
-					string s = sr.ReadLine ();
-					while (s != null) {
-						ProcessLine (s);
-						s = sr.ReadLine ();
+				using (StreamLineReader sr = new StreamLineReader (fileName)) {
+					while (!sr.EndOfStream) {
+						int length = sr.ReadLine (buffer, 0, buffer.Length);
+						ProcessLine (buffer, length);
 					}
 				}
 			}
@@ -87,19 +87,33 @@ namespace Gendarme {
 			rules.Add (rule);
 		}
 
-		private void ProcessLine (string line)
+		static string GetString (char [] buffer, int length)
 		{
-			if (line.Length < 1)
+			// skip the 'type' + ':' characters when looking for whitespace separator(s)
+			int start = 2;
+			while (Char.IsWhiteSpace (buffer [start]) && (start < buffer.Length))
+				start++;
+
+			int end = length;
+			while (Char.IsWhiteSpace (buffer [end]) && (end >= start))
+				end--;
+
+			return new string (buffer, start, end - start);
+		}
+
+		private void ProcessLine (char [] buffer, int length)
+		{
+			if (length < 1)
 				return;
 
-			switch (line [0]) {
+			switch (buffer [0]) {
 			case '#': // comment
 				break;
 			case 'R': // rule
-				current_rule = line.Substring (line.LastIndexOf (' ') + 1);
+				current_rule = GetString (buffer, length);
 				break;
 			case 'A': // assembly - we support Name, FullName and *
-				string target = line.Substring (2).Trim ();
+				string target = GetString (buffer, length);
 				if (target == "*") {
 					foreach (AssemblyDefinition assembly in Runner.Assemblies) {
 						Add (assemblies, current_rule, assembly.Name.FullName);
@@ -109,19 +123,19 @@ namespace Gendarme {
 				}
 				break;
 			case 'T': // type (no space allowed)
-				Add (types, current_rule, line.Substring (line.LastIndexOf (' ') + 1));
+				Add (types, current_rule, GetString (buffer, length));
 				break;
 			case 'M': // method
-				Add (methods, current_rule, line.Substring (2).Trim ());
+				Add (methods, current_rule, GetString (buffer, length));
 				break;
 			case 'N': // namespace - special case (no need to resolve)
-				base.Add (current_rule, NamespaceDefinition.GetDefinition (line.Substring (2).Trim ()));
+				base.Add (current_rule, NamespaceDefinition.GetDefinition (GetString (buffer, length)));
 				break;
 			case '@': // include file
-				files.Push (line.Substring (2).Trim ());
+				files.Push (GetString (buffer, length));
 				break;
 			default:
-				Console.Error.WriteLine ("Bad ignore entry : '{0}'", line);
+				Console.Error.WriteLine ("Bad ignore entry : '{0}'", new string (buffer));
 				break;
 			}
 		}
@@ -148,14 +162,13 @@ namespace Gendarme {
 
 				foreach (ModuleDefinition module in assembly.Modules) {
 					foreach (TypeDefinition type in module.GetAllTypes ()) {
-						if (types.TryGetValue (type.FullName, out rules)) {
+						if (types.TryGetValue (type.GetFullName (), out rules)) {
 							AddList (type, rules);
 						}
 
 						if (type.HasMethods) {
 							foreach (MethodDefinition method in type.Methods) {
-								// FIXME avoid (allocations in) ToString call
-								if (methods.TryGetValue (method.ToString (), out rules)) {
+								if (methods.TryGetValue (method.GetFullName (), out rules)) {
 									AddList (method, rules);
 								}
 							}
diff --git a/gendarme/console/Makefile.am b/gendarme/console/Makefile.am
index f74ab23..43c0a4a 100644
--- a/gendarme/console/Makefile.am
+++ b/gendarme/console/Makefile.am
@@ -30,7 +30,7 @@ gendarme_prefix_resources = $(addprefix $(srcdir)/, $(gendarme_resources))
 gendarme_build_resources = $(foreach res,$(gendarme_prefix_resources), $(addprefix -resource:,$(res)),$(notdir $(res)))
 
 ../bin/gendarme.exe: $(gendarme_build_sources) $(gendarme_prefix_resources)
-	$(GMCS) $(GENDARME_OPTIONS) -r:$(CECIL_ASM) -r:System.Xml.Linq -r:../bin/Gendarme.Framework.dll \
+	$(MCS) $(GENDARME_OPTIONS) -r:$(CECIL_ASM) -r:System.Xml.Linq -r:../bin/Gendarme.Framework.dll \
 		-out:$@ $(gendarme_build_sources) $(gendarme_build_resources)
 
 self-test: ../bin/gendarme.exe
diff --git a/gendarme/console/Makefile.in b/gendarme/console/Makefile.in
index d41172d..85b2b66 100644
--- a/gendarme/console/Makefile.in
+++ b/gendarme/console/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,9 +16,27 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,13 +60,45 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES = gendarme.exe.config
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(gendarmedir)"
-gendarmeSCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(gendarme_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -109,6 +160,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -122,9 +174,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -234,14 +289,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/console/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/console/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/console/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/console/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -251,6 +306,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -259,27 +315,44 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 gendarme.exe.config: $(top_builddir)/config.status $(srcdir)/gendarme.exe.config.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-gendarmeSCRIPTS: $(gendarme_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(gendarmedir)" || $(MKDIR_P) "$(DESTDIR)$(gendarmedir)"
-	@list='$(gendarme_SCRIPTS)'; for p in $$list; do \
+	@list='$(gendarme_SCRIPTS)'; test -n "$(gendarmedir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(gendarmedir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(gendarmedir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(gendarmeSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(gendarmedir)/$$f'"; \
-	    $(gendarmeSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(gendarmedir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(gendarmedir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(gendarmedir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-gendarmeSCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(gendarme_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(gendarmedir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(gendarmedir)/$$f"; \
-	done
+	@list='$(gendarme_SCRIPTS)'; test -n "$(gendarmedir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(gendarmedir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -303,13 +376,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -330,10 +407,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -341,6 +423,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -360,6 +443,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -368,18 +453,28 @@ install-data-am: install-gendarmeSCRIPTS
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -416,11 +511,12 @@ uninstall-am: uninstall-gendarmeSCRIPTS
 
 
 ../bin/gendarme.exe: $(gendarme_build_sources) $(gendarme_prefix_resources)
-	$(GMCS) $(GENDARME_OPTIONS) -r:$(CECIL_ASM) -r:System.Xml.Linq -r:../bin/Gendarme.Framework.dll \
+	$(MCS) $(GENDARME_OPTIONS) -r:$(CECIL_ASM) -r:System.Xml.Linq -r:../bin/Gendarme.Framework.dll \
 		-out:$@ $(gendarme_build_sources) $(gendarme_build_resources)
 
 self-test: ../bin/gendarme.exe
 	mono --debug ../bin/gendarme.exe ../bin/gendarme.exe
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/console/Settings.cs b/gendarme/console/Settings.cs
index 3ecafec..23b5429 100644
--- a/gendarme/console/Settings.cs
+++ b/gendarme/console/Settings.cs
@@ -4,7 +4,7 @@
 // Authors:
 //	Sebastien Pouliot <sebastien at ximian.com>
 //
-// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2008, 2011 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 using System.IO;
 using System.Reflection;
 using System.Collections.Generic;
@@ -150,7 +151,8 @@ namespace Gendarme {
 
 		private void OnValidationErrors (object sender, ValidationEventArgs args)
 		{
-			validation_errors.Add (args.Exception.Message.Replace ("XmlSchema error", String.Format ("Error in the configuration file {0}", config_file)));
+			validation_errors.Add (args.Exception.Message.Replace ("XmlSchema error", 
+				String.Format (CultureInfo.CurrentCulture, "Error in the configuration file {0}", config_file)));
 		}
 
 		private void ValidateXmlDocument ()
@@ -228,7 +230,8 @@ namespace Gendarme {
 
 		static Exception GetException (string message, string ruleName, string propertyName, string value)
 		{
-			return new XmlException (String.Format (message + ".  Review your configuration file.", ruleName, propertyName, value));
+			return new XmlException (String.Format (CultureInfo.CurrentCulture, 
+				message + ".  Review your configuration file.", ruleName, propertyName, value));
 		}
 
 		public bool Load ()
diff --git a/gendarme/console/XmlResultWriter.cs b/gendarme/console/XmlResultWriter.cs
index 3a5e0f4..3dcdff1 100644
--- a/gendarme/console/XmlResultWriter.cs
+++ b/gendarme/console/XmlResultWriter.cs
@@ -31,6 +31,7 @@
 //
 
 using System;
+using System.Globalization;
 using System.IO;
 using System.Linq;
 using System.Text;
@@ -70,7 +71,7 @@ namespace Gendarme {
 		{
 			writer.WriteStartDocument ();
 			writer.WriteStartElement ("gendarme-output");
-			writer.WriteAttributeString ("date", DateTime.UtcNow.ToString ());
+			writer.WriteAttributeString ("date", DateTime.UtcNow.ToString (CultureInfo.InvariantCulture));
 		}
 
 		protected override void Write ()
diff --git a/gendarme/console/gendarme.csproj b/gendarme/console/gendarme.csproj
index 4f70bf5..eefae5e 100755
--- a/gendarme/console/gendarme.csproj
+++ b/gendarme/console/gendarme.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -12,9 +12,13 @@
     <AssemblyName>gendarme</AssemblyName>
     <FileUpgradeFlags>
     </FileUpgradeFlags>
-    <OldToolsVersion>2.0</OldToolsVersion>
+    <OldToolsVersion>3.5</OldToolsVersion>
     <UpgradeBackupLocation>
     </UpgradeBackupLocation>
+    <IsWebBootstrapper>true</IsWebBootstrapper>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <SignAssembly>false</SignAssembly>
+    <AssemblyOriginatorKeyFile>gendarme.snk</AssemblyOriginatorKeyFile>
     <PublishUrl>http://localhost/gendarme/</PublishUrl>
     <Install>true</Install>
     <InstallFrom>Web</InstallFrom>
@@ -27,12 +31,9 @@
     <MapFileExtensions>true</MapFileExtensions>
     <ApplicationRevision>0</ApplicationRevision>
     <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>true</IsWebBootstrapper>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
-    <SignAssembly>false</SignAssembly>
-    <AssemblyOriginatorKeyFile>gendarme.snk</AssemblyOriginatorKeyFile>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -42,6 +43,7 @@
     <DefineConstants>TRACE;DEBUG</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -50,6 +52,7 @@
     <DefineConstants>TRACE;RELEASE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -88,6 +91,10 @@
       <Project>{CD6818D5-B398-486C-B180-92A07B143AFD}</Project>
       <Name>Gendarme.Framework</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\..\cecil\symbols\mdb\Mono.Cecil.Mdb.csproj">
+      <Project>{8559DD7F-A16F-46D0-A05A-9139FAEBA8FD}</Project>
+      <Name>Mono.Cecil.Mdb</Name>
+    </ProjectReference>
   </ItemGroup>
   <ItemGroup>
     <None Include="ChangeLog" />
@@ -95,30 +102,53 @@
     <EmbeddedResource Include="gendarme.xsl" />
   </ItemGroup>
   <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
+  <Target Name="BeforeBuild">
+  </Target>
   -->
+  <Target Name="AfterBuild">
+    <Copy
+      SourceFiles="$(TargetDir)..\..\..\rules\rules.xml"
+      DestinationFolder="$(TargetDir)"
+      SkipUnchangedFiles="True"
+    />
+  </Target>
   <PropertyGroup>
     <PreBuildEvent>
     </PreBuildEvent>
-    <PostBuildEvent>copy "$(TargetDir)..\..\..\rules\rules.xml" "$(TargetDir)"
-copy "$(TargetDir)..\..\..\..\..\cecil\bin\net_3_5_Release\Mono.Cecil.Pdb.*" "$(TargetDir)"
-copy "$(TargetDir)..\..\..\..\..\cecil\bin\net_3_5_Release\Mono.Cecil.Mdb.*" "$(TargetDir)"</PostBuildEvent>
+    <PostBuildEvent>
+    </PostBuildEvent>
   </PropertyGroup>
   <ProjectExtensions>
     <MonoDevelop>
diff --git a/gendarme/framework/Gendarme.Framework.Engines/SuppressMessageEngine.cs b/gendarme/framework/Gendarme.Framework.Engines/SuppressMessageEngine.cs
index a98a6bc..70ef7ba 100644
--- a/gendarme/framework/Gendarme.Framework.Engines/SuppressMessageEngine.cs
+++ b/gendarme/framework/Gendarme.Framework.Engines/SuppressMessageEngine.cs
@@ -71,7 +71,7 @@ namespace Gendarme.Framework.Engines {
 		{
 			// we only need to check the custom attributes if [SuppressMessage] is referenced (note: won't work for mscorlib)
 			AssemblyDefinition assembly = (sender as AssemblyDefinition);
-			if (assembly.MainModule.HasTypeReference (SuppressMessage)) {
+			if (assembly.MainModule.AnyTypeReference ((TypeReference tr) => { return tr.IsNamed ("System.Diagnostics.CodeAnalysis", "SuppressMessageAttribute"); })) {
 				Controller.BuildingCustomAttributes += new EventHandler<EngineEventArgs> (OnCustomAttributes);
 			} else {
 				Controller.BuildingCustomAttributes -= new EventHandler<EngineEventArgs> (OnCustomAttributes);
@@ -103,7 +103,7 @@ namespace Gendarme.Framework.Engines {
 			foreach (CustomAttribute ca in cap.CustomAttributes) {
 				if (!ca.HasConstructorArguments)
 					continue;
-				if (ca.AttributeType.FullName != SuppressMessage)
+				if (!ca.AttributeType.IsNamed ("System.Diagnostics.CodeAnalysis", "SuppressMessageAttribute"))
 					continue;
 
 				var arguments = ca.ConstructorArguments;
@@ -200,7 +200,7 @@ namespace Gendarme.Framework.Engines {
 				foreach (ModuleDefinition module in assembly.Modules) {
 					// TODO ...
 					foreach (TypeDefinition type in module.GetAllTypes ()) {
-						if (targets.TryGetValue (type.FullName, out rules))
+						if (targets.TryGetValue (type.GetFullName (), out rules))
 							Add (type, rules);
 
 						if (type.HasMethods) {
@@ -213,11 +213,11 @@ namespace Gendarme.Framework.Engines {
 			targets.Clear ();
 		}
 
-		private void ResolveMethod (IMetadataTokenProvider method)
+		private void ResolveMethod (MemberReference method)
 		{
 			HashSet<string> rules;
 
-			string m = method.ToString ();
+			string m = method.GetFullName ();
 			m = m.Substring (m.IndexOf (' ') + 1);
 
 			if (targets.TryGetValue (m, out rules))
diff --git a/gendarme/framework/Gendarme.Framework.Helpers/Log.cs b/gendarme/framework/Gendarme.Framework.Helpers/Log.cs
index 262c7e9..759ba9f 100644
--- a/gendarme/framework/Gendarme.Framework.Helpers/Log.cs
+++ b/gendarme/framework/Gendarme.Framework.Helpers/Log.cs
@@ -30,6 +30,7 @@ using System.Diagnostics;
 using System.Collections.Generic;
 
 using Mono.Cecil;
+using Gendarme.Framework.Rocks;
 
 namespace Gendarme.Framework.Helpers {
 
@@ -83,9 +84,9 @@ namespace Gendarme.Framework.Helpers {
 		}
 		
 		[Conditional ("DEBUG")]
-		public static void WriteLine<T> (T category, MethodDefinition method)
+		public static void WriteLine<T> (T category, MemberReference member)
 		{
-			WriteLine (typeof (T).Name, method);
+			WriteLine (typeof (T).Name, member);
 		}
 		
 		// WriteLine (string)
@@ -104,10 +105,15 @@ namespace Gendarme.Framework.Helpers {
 		}
 		
 		[Conditional ("DEBUG")]
-		public static void WriteLine (string category, MethodDefinition method)
+		public static void WriteLine (string category, MemberReference member)
 		{
-			if (IsEnabled (category))
-				Debug.WriteLine (new MethodPrinter (method).ToString ());
+			if (IsEnabled (category)) {
+				MethodDefinition md = (member as MethodDefinition);
+				if (md != null)
+					Debug.WriteLine (new MethodPrinter (md).ToString ());
+				else
+					Debug.WriteLine (member.GetFullName ());
+			}
 		}
 		
 		// Misc
diff --git a/gendarme/framework/Gendarme.Framework.Helpers/MethodPrinter.cs b/gendarme/framework/Gendarme.Framework.Helpers/MethodPrinter.cs
index af3638c..ef40dcc 100644
--- a/gendarme/framework/Gendarme.Framework.Helpers/MethodPrinter.cs
+++ b/gendarme/framework/Gendarme.Framework.Helpers/MethodPrinter.cs
@@ -15,6 +15,7 @@ using System;
 using System.Collections;
 using System.Collections.Generic;
 using System.Diagnostics;
+using System.Globalization;
 using System.Text;
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -60,17 +61,28 @@ namespace Gendarme.Framework.Helpers {
 						buffer.Append ("* ");
 					else
 						buffer.Append ("  ");
-					buffer.AppendFormat ("  {0}: {1}", instr.Offset.ToString ("X4"),
-							instr.OpCode.Name);
+
+					buffer.Append ("  ");
+					buffer.Append (instr.Offset.ToString ("X4", CultureInfo.InvariantCulture));
+					buffer.Append (": ");
+					buffer.Append (instr.OpCode.Name);
+
 					int[] targets = BranchTargets (instr);
-					if (targets != null)
-						foreach (int target in targets)
-							buffer.AppendFormat (" {0}", target.ToString ("X4"));
-					else if (instr.Operand is string)
-						buffer.AppendFormat (" \"{0}\"", instr.Operand.ToString ());
-					else if (instr.Operand != null)
-						buffer.AppendFormat (" {0}", instr.Operand.ToString ());
-					buffer.AppendLine (string.Empty);
+					if (targets != null) {
+						foreach (int target in targets) {
+							buffer.Append (' ');
+							buffer.Append (target.ToString ("X4", CultureInfo.InvariantCulture));
+						}
+					} else if (instr.Operand is string) {
+						buffer.Append (" \"");
+						buffer.Append (instr.Operand);
+						buffer.Append ('"');
+					} else if (instr.Operand != null) {
+						buffer.Append (" ");
+						buffer.Append (instr.Operand);
+					}
+					buffer.AppendLine ();
+
 					prevInstr = instr;
 					if (EndsTryRegion (instr) != null)
 						buffer.AppendLine ("} (Try)");
diff --git a/gendarme/framework/Gendarme.Framework.Helpers/MethodSignature.cs b/gendarme/framework/Gendarme.Framework.Helpers/MethodSignature.cs
index e6fd265..a17ae07 100644
--- a/gendarme/framework/Gendarme.Framework.Helpers/MethodSignature.cs
+++ b/gendarme/framework/Gendarme.Framework.Helpers/MethodSignature.cs
@@ -34,6 +34,7 @@ using System.Collections.Generic;
 using System.Text;
 
 using Mono.Cecil;
+using Gendarme.Framework.Rocks;
 
 namespace Gendarme.Framework.Helpers {
 
@@ -49,7 +50,7 @@ namespace Gendarme.Framework.Helpers {
 	/// }
 	/// </code>
 	/// </example>
-	// <seealso cref="Gendarme.Framework.Helpers.MethodSignatures"/>
+	/// <seealso cref="Gendarme.Framework.Helpers.MethodSignatures"/>
 	public class MethodSignature {
 
 		/// <summary>
@@ -121,7 +122,7 @@ namespace Gendarme.Framework.Helpers {
 			if (Name != null && method.Name != Name)
 				return false;
 
-			if (ReturnType != null && method.ReturnType.FullName != ReturnType)
+			if (ReturnType != null && !method.ReturnType.IsNamed (ReturnType))
 				return false;
 
 			if (Parameters != null) {
@@ -132,7 +133,7 @@ namespace Gendarme.Framework.Helpers {
 					for (int i = 0; i < Parameters.Count; i++) {
 						if (Parameters [i] == null)
 							continue;//ignore parameter
-						if (Parameters [i] != pdc [i].ParameterType.FullName) {
+						if (!pdc [i].ParameterType.IsNamed (Parameters [i])) {
 							return false;
 						}
 					}
diff --git a/gendarme/framework/Gendarme.Framework.Helpers/MethodSignatures.cs b/gendarme/framework/Gendarme.Framework.Helpers/MethodSignatures.cs
index 3b8b4ad..27116fa 100644
--- a/gendarme/framework/Gendarme.Framework.Helpers/MethodSignatures.cs
+++ b/gendarme/framework/Gendarme.Framework.Helpers/MethodSignatures.cs
@@ -32,6 +32,7 @@ using System;
 using System.Collections.Generic;
 
 using Mono.Cecil;
+using Gendarme.Framework.Rocks;
 
 namespace Gendarme.Framework.Helpers {
 
@@ -120,19 +121,23 @@ namespace Gendarme.Framework.Helpers {
 		// TryParse
 		public static readonly MethodSignature TryParse = new MethodSignature ("TryParse",
 			delegate (MethodReference method) {
-				if (method.ReturnType.FullName != "System.Boolean")
+				if (!method.ReturnType.IsNamed ("System", "Boolean"))
 					return false;
 
 				IList<ParameterDefinition> pdc = method.Parameters;
-				if (pdc [0].ParameterType.FullName != "System.String")
+				if (!pdc [0].ParameterType.IsNamed ("System", "String"))
 					return false;
 
 				TypeReference last = pdc [pdc.Count - 1].ParameterType;
 				if (!last.IsByReference)
 					return false;
 
-				string pt_name = last.FullName;
-				return (String.Compare (pt_name, 0, method.DeclaringType.FullName, 0, pt_name.Length - 1) == 0);
+				TypeReference mtype = method.DeclaringType;
+				if (last.Namespace != mtype.Namespace)
+					return false;
+
+				string pt_name = last.Name;
+				return (String.Compare (pt_name, 0, mtype.Name, 0, pt_name.Length - 1, StringComparison.Ordinal) == 0);
 			}
 		);
 
@@ -141,9 +146,9 @@ namespace Gendarme.Framework.Helpers {
 			delegate (MethodReference method) {
 				if (!method.HasParameters)
 					return false;
-				if (method.ReturnType.FullName != method.DeclaringType.FullName)
+				if (!method.ReturnType.IsNamed (method.DeclaringType.Namespace, method.DeclaringType.Name))
 					return false;
-				return (method.Parameters [0].ParameterType.FullName == "System.String");
+				return method.Parameters [0].ParameterType.IsNamed ("System", "String");
 			}
 		);
 	}
diff --git a/gendarme/framework/Gendarme.Framework.Helpers/OpCodeBitmask.cs b/gendarme/framework/Gendarme.Framework.Helpers/OpCodeBitmask.cs
index f7ceeac..6058fbe 100644
--- a/gendarme/framework/Gendarme.Framework.Helpers/OpCodeBitmask.cs
+++ b/gendarme/framework/Gendarme.Framework.Helpers/OpCodeBitmask.cs
@@ -26,6 +26,7 @@
 //
 
 using System;
+using System.Globalization;
 using System.Text;
 
 using Mono.Cecil.Cil;
@@ -144,12 +145,12 @@ namespace Gendarme.Framework.Helpers {
 			return Equals (obj as OpCodeBitmask);
 		}
 
-		public bool Equals (OpCodeBitmask set)
+		public bool Equals (OpCodeBitmask other)
 		{
-			if (set == null)
+			if (other == null)
 				return false;
-			return ((mask [0] == set.mask [0]) || (mask [1] == set.mask [1]) ||
-				(mask [2] == set.mask [2]) || (mask [3] == set.mask [3]));
+			return ((mask [0] == other.mask [0]) || (mask [1] == other.mask [1]) ||
+				(mask [2] == other.mask [2]) || (mask [3] == other.mask [3]));
 		}
 
 		public override int GetHashCode ()
@@ -159,7 +160,8 @@ namespace Gendarme.Framework.Helpers {
 
 		public override string ToString ()
 		{
-			return String.Format ("0x{0:X}:0x{1:X}:0x{2:X}:0x{3:X}", mask [0], mask [1], mask [2], mask [3]);
+			return String.Format (CultureInfo.InvariantCulture, "0x{0:X}:0x{1:X}:0x{2:X}:0x{3:X}", 
+				mask [0], mask [1], mask [2], mask [3]);
 		}
 
 
diff --git a/gendarme/framework/Gendarme.Framework.Helpers/StackEntryAnalysis.cs b/gendarme/framework/Gendarme.Framework.Helpers/StackEntryAnalysis.cs
index 61d5f9b..156aef1 100644
--- a/gendarme/framework/Gendarme.Framework.Helpers/StackEntryAnalysis.cs
+++ b/gendarme/framework/Gendarme.Framework.Helpers/StackEntryAnalysis.cs
@@ -97,9 +97,9 @@ namespace Gendarme.Framework.Helpers {
 				return this == other;
 			}
 
-			public bool Equals (StoreSlot storeSlot)
+			public bool Equals (StoreSlot other)
 			{
-				return this == storeSlot;
+				return this == other;
 			}
 
 			public override int GetHashCode ()
@@ -182,40 +182,14 @@ namespace Gendarme.Framework.Helpers {
 				return false;
 			}
 
-			public bool Equals (InstructionWithLeave iwl)
+			public bool Equals (InstructionWithLeave other)
 			{
-				if (Instruction != iwl.Instruction)
-					return false;
-
-				if (LeaveStack == null)
-					return (iwl.LeaveStack == null);
-
-				if (iwl.LeaveStack == null)
-					return false;
-
-				if (LeaveStack.Length != iwl.LeaveStack.Length)
-					return false;
-
-				for (int i = 0; i < LeaveStack.Length; i++) {
-					if (LeaveStack [i] != iwl.LeaveStack [i])
-						return false;
-				}
-				return true;
+				return (Instruction == other.Instruction);
 			}
 
 			public override int GetHashCode ()
 			{
-				int hc = 0;
-				
-				unchecked {
-					hc ^= Instruction.GetHashCode ();
-					if (LeaveStack != null) {
-						foreach (Instruction ins in LeaveStack)
-							hc ^= ins.GetHashCode ();
-					}
-				}
-				
-				return hc;
+				return Instruction.GetHashCode ();
 			}
 
 			public static bool operator == (InstructionWithLeave left, InstructionWithLeave right)
@@ -527,7 +501,7 @@ namespace Gendarme.Framework.Helpers {
 				return new StoreSlot (StoreType.Argument, ins.OpCode.Code - Code.Ldarg_0);
 			case Code.Ldarg_S:
 			case Code.Ldarg: {
-					int sequence = ((ParameterDefinition) ins.Operand).GetSequence ();
+					int sequence = ((ParameterDefinition) ins.Operand).Index + 1;
 					if (!this.Method.HasThis)
 						sequence--;
 					return new StoreSlot (StoreType.Argument, sequence);
@@ -581,7 +555,7 @@ namespace Gendarme.Framework.Helpers {
 
 			case Code.Starg_S: //store arg (not ref / out etc)
 			case Code.Starg: {
-					int sequence = ((ParameterDefinition) ins.Operand).GetSequence ();
+					int sequence = ((ParameterDefinition) ins.Operand).Index + 1;
 					if (!this.Method.HasThis)
 						sequence--;
 					return new StoreSlot (StoreType.Argument, sequence);
diff --git a/gendarme/framework/Gendarme.Framework.Helpers/StackEntryUsageResult.cs b/gendarme/framework/Gendarme.Framework.Helpers/StackEntryUsageResult.cs
index 1fa302f..9c69872 100644
--- a/gendarme/framework/Gendarme.Framework.Helpers/StackEntryUsageResult.cs
+++ b/gendarme/framework/Gendarme.Framework.Helpers/StackEntryUsageResult.cs
@@ -61,9 +61,9 @@ namespace Gendarme.Framework.Helpers {
 			return false;
 		}
 
-		public bool Equals (StackEntryUsageResult usageResult)
+		public bool Equals (StackEntryUsageResult other)
 		{
-			return (Instruction == usageResult.Instruction) && (StackOffset == usageResult.StackOffset);
+			return (Instruction == other.Instruction) && (StackOffset == other.StackOffset);
 		}
 
 		public override int GetHashCode ()
diff --git a/gendarme/framework/Gendarme.Framework.Helpers/StreamLineReader.cs b/gendarme/framework/Gendarme.Framework.Helpers/StreamLineReader.cs
new file mode 100644
index 0000000..3242474
--- /dev/null
+++ b/gendarme/framework/Gendarme.Framework.Helpers/StreamLineReader.cs
@@ -0,0 +1,122 @@
+//
+// StreamLineReader - A StringReader-like class that avoid creating string
+//
+// Authors:
+//	Sebastien Pouliot <sebastien at ximian.com>
+//
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+
+namespace Gendarme.Framework.Helpers {
+
+	// note: inheriting from StreamReader was not possible since we cannot
+	// override EndOfStream and ensure integrity with other Read ops
+	public class StreamLineReader : IDisposable {
+
+		StreamReader sr;
+		char [] buff;
+		int n;
+		int max;
+
+		public StreamLineReader (string fileName)
+		{
+			sr = new StreamReader (fileName);
+			Initialize ();
+		}
+
+		public StreamLineReader (Stream stream)
+		{
+			sr = new StreamReader (stream);
+			Initialize ();
+		}
+
+		void Initialize ()
+		{
+			buff = new char [4096];
+			max = n = buff.Length;
+		}
+
+		public bool EndOfStream {
+			get { return (n == max || max == 0) && sr.EndOfStream; }
+		}
+
+		public int ReadLine (char [] buffer, int index, int count)
+		{
+			if (Disposed)
+				throw new ObjectDisposedException ("StreamLineReader");
+			if (buffer == null)
+				throw new ArgumentNullException ("buffer");
+			if (index < 0)
+				throw new ArgumentOutOfRangeException ("index", "< 0");
+			if (count < 0)
+				throw new ArgumentOutOfRangeException ("count", "< 0");
+			// ordered to avoid possible integer overflow
+			if (index > buffer.Length - count)
+				throw new ArgumentException ("index + count > buffer.Length");
+
+			int len = 0;
+			while (len < count) {
+				if (n == max) {
+					max = sr.ReadBlock (buff, 0, buff.Length);
+					if (max == 0) break;
+					n = 0;
+				}
+				char c = buff [n++];
+				switch (c) {
+				case '\r':
+					continue;
+				case '\n':
+					Array.Clear (buffer, len, buffer.Length - len);
+					return len;
+				default:
+					buffer [index++] = c;
+					len++;
+					break;
+				}
+			}
+			return len;
+		}
+
+		public void Dispose ()
+		{
+			Dispose (true);
+			GC.SuppressFinalize (this);
+		}
+
+		protected virtual void Dispose (bool disposing)
+		{
+			try {
+				if (!Disposed)
+					sr.Dispose ();
+			}
+			finally {
+				Disposed = true;
+			}
+		}
+
+		protected bool Disposed { get; private set; }
+	}
+}
+
diff --git a/gendarme/framework/Gendarme.Framework.Rocks/CecilRocks.cs b/gendarme/framework/Gendarme.Framework.Rocks/CecilRocks.cs
index a1b2cfc..12c6345 100644
--- a/gendarme/framework/Gendarme.Framework.Rocks/CecilRocks.cs
+++ b/gendarme/framework/Gendarme.Framework.Rocks/CecilRocks.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Collections.Generic;
 
 using Mono.Cecil;
 using Mono.Cecil.Metadata;
@@ -157,5 +158,30 @@ namespace Gendarme.Framework.Rocks {
 			// compare assemblies tokens (but do not recurse)
 			return other == null ? false : self_assembly.MetadataToken.Equals (other_assembly.MetadataToken);
 		}
+
+		static Dictionary<MemberReference, string> full_name_cache = new Dictionary<MemberReference, string> ();
+
+		/// <summary>
+		/// Get the string value of the MemberReference FullName property without the cost 
+		/// of allocating a new string for each (or most) calls. 
+		/// </summary>
+		/// <param name="self">The MemberReference instance where the method is applied.</param>
+		/// <returns>The cached FullName property of the MemberReference</returns>
+		/// <remarks>Cecil needs to rebuild most of the FullName properties on each call in order to
+		/// be able to write assemblies. However this is a waste of memory when an application, like 
+		/// Gendarme, use it for read-only purposes.</remarks>
+		public static string GetFullName (this MemberReference self)
+		{
+			if (self == null)
+				return String.Empty;
+
+			string full_name;
+			if (!full_name_cache.TryGetValue (self, out full_name)) {
+				full_name = self.FullName;
+				full_name_cache.Add (self, full_name);
+			}
+
+			return full_name;
+		}
 	}
 }
diff --git a/gendarme/framework/Gendarme.Framework.Rocks/CustomAttributeRocks.cs b/gendarme/framework/Gendarme.Framework.Rocks/CustomAttributeRocks.cs
index 26b6401..ebfb1ba 100644
--- a/gendarme/framework/Gendarme.Framework.Rocks/CustomAttributeRocks.cs
+++ b/gendarme/framework/Gendarme.Framework.Rocks/CustomAttributeRocks.cs
@@ -44,51 +44,16 @@ namespace Gendarme.Framework.Rocks {
 	/// </summary>
 	public static class CustomAttributeRocks {
 
-		internal static string [] GeneratedCodeAttributes = {
-			 "System.CodeDom.Compiler.GeneratedCodeAttribute",
-			 "System.Runtime.CompilerServices.CompilerGeneratedAttribute"
-		};
-
-		/// <summary>
-		/// Check if the custom attribute collection contains an attribute of a specified type.
-		/// </summary>
-		/// <param name="self">The CustomAttribute enumerable on which the extension method can be called.</param>
-		/// <param name="attributeTypeName">Full type name of the attribute class.</param>
-		/// <returns>True if the collection contains an attribute of the same name,
-		/// False otherwise.</returns>
-		public static bool ContainsType (this IEnumerable<CustomAttribute> self, string attributeTypeName)
+		internal static bool HasAnyGeneratedCodeAttribute (this ICustomAttributeProvider self)
 		{
-			if (attributeTypeName == null)
-				throw new ArgumentNullException ("attributeTypeName");
-			if (self == null)
+			if ((self == null) || !self.HasCustomAttributes)
 				return false;
 
-			foreach (CustomAttribute ca in self) {
-				if (ca.AttributeType.FullName == attributeTypeName)
+			foreach (CustomAttribute ca in self.CustomAttributes) {
+				TypeReference cat = ca.AttributeType;
+				if (cat.IsNamed ("System.CodeDom.Compiler", "GeneratedCodeAttribute") ||
+					cat.IsNamed ("System.Runtime.CompilerServices", "CompilerGeneratedAttribute")) {
 					return true;
-			}
-			return false;
-		}
-
-		/// <summary>
-		/// Check if the custom attribute collection contains any of the specified type.
-		/// </summary>
-		/// <param name="self">The CustomAttribute enumerable on which the extension method can be called.</param>
-		/// <param name="attributeTypeNames">A strings array of full type names of the attributes.</param>
-		/// <returns>True if the collection contains any attribute matching one specified,
-		/// False otherwise.</returns>
-		public static bool ContainsAnyType (this IEnumerable<CustomAttribute> self, string[] attributeTypeNames)
-		{
-			if (attributeTypeNames == null)
-				throw new ArgumentNullException ("attributeTypeNames");
-			if (self == null)
-				return false;
-
-			foreach (CustomAttribute ca in self) {
-				string fullname = ca.AttributeType.FullName;
-				foreach (string attribute_full_name in attributeTypeNames) {
-					if (fullname == attribute_full_name)
-						return true;
 				}
 			}
 			return false;
@@ -99,17 +64,25 @@ namespace Gendarme.Framework.Rocks {
 		/// </summary>
 		/// <param name="self">The ICustomAttributeProvider (e.g. AssemblyDefinition, TypeReference, MethodReference,
 		/// FieldReference...) on which the extension method can be called.</param>
-		/// <param name="attributeName">Full name of the attribute class</param>
+		/// <param name="nameSpace">The namespace of the attribute to be matched</param>
+		/// <param name="name">The name of the attribute to be matched</param>
 		/// <returns>True if the provider contains an attribute of the same name,
 		/// False otherwise.</returns>
-		public static bool HasAttribute (this ICustomAttributeProvider self, string attributeName)
+		public static bool HasAttribute (this ICustomAttributeProvider self, string nameSpace, string name)
 		{
-			if (attributeName == null)
-				throw new ArgumentNullException ("attributeName");
+			if (nameSpace == null)
+				throw new ArgumentNullException ("nameSpace");
+			if (name == null)
+				throw new ArgumentNullException ("name");
 
 			if ((self == null) || !self.HasCustomAttributes)
 				return false;
-			return self.CustomAttributes.ContainsType (attributeName);
+
+			foreach (CustomAttribute ca in self.CustomAttributes) {
+				if (ca.AttributeType.IsNamed (nameSpace, name))
+					return true;
+			}
+			return false;
 		}
 	}
 }
diff --git a/gendarme/framework/Gendarme.Framework.Rocks/FieldRocks.cs b/gendarme/framework/Gendarme.Framework.Rocks/FieldRocks.cs
index 39641f5..bf3b30b 100644
--- a/gendarme/framework/Gendarme.Framework.Rocks/FieldRocks.cs
+++ b/gendarme/framework/Gendarme.Framework.Rocks/FieldRocks.cs
@@ -49,10 +49,9 @@ namespace Gendarme.Framework.Rocks {
 			if (field == null)
 				return false;
 
-			if (field.HasCustomAttributes) {
-				if (field.CustomAttributes.ContainsAnyType (CustomAttributeRocks.GeneratedCodeAttributes))
-					return true;
-			}
+			if (field.HasAnyGeneratedCodeAttribute ())
+				return true;
+
 			return field.DeclaringType.IsGeneratedCode ();
 		}
 
diff --git a/gendarme/framework/Gendarme.Framework.Rocks/InstructionRocks.cs b/gendarme/framework/Gendarme.Framework.Rocks/InstructionRocks.cs
index 6c8aaf6..aef546a 100644
--- a/gendarme/framework/Gendarme.Framework.Rocks/InstructionRocks.cs
+++ b/gendarme/framework/Gendarme.Framework.Rocks/InstructionRocks.cs
@@ -27,6 +27,7 @@
 // THE SOFTWARE.
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -291,7 +292,7 @@ namespace Gendarme.Framework.Rocks {
 			case StackBehaviour.Varpop:
 				switch (self.OpCode.FlowControl) {
 				case FlowControl.Return:
-					return method.ReturnType.FullName == "System.Void" ? 0 : 1;
+					return method.ReturnType.IsNamed ("System", "Void") ? 0 : 1;
 
 				case FlowControl.Call:
 					IMethodSignature calledMethod = (IMethodSignature) self.Operand;
@@ -310,7 +311,8 @@ namespace Gendarme.Framework.Rocks {
 			case StackBehaviour.PopAll:
 				return -1;
 			default:
-				string unknown = String.Format ("'{0}' is not a valid value for instruction '{1}'.",
+				string unknown = String.Format (CultureInfo.InvariantCulture,
+					"'{0}' is not a valid value for instruction '{1}'.",
 					self.OpCode.StackBehaviourPush, self.OpCode);
 				throw new InvalidOperationException (unknown);
 			}
@@ -344,11 +346,12 @@ namespace Gendarme.Framework.Rocks {
 			case StackBehaviour.Varpush:
 				IMethodSignature calledMethod = (IMethodSignature) self.Operand;
 				if (calledMethod != null)
-					return (calledMethod.ReturnType.FullName == "System.Void") ? 0 : 1;
+					return calledMethod.ReturnType.IsNamed ("System", "Void") ? 0 : 1;
 
 				throw new NotImplementedException ("Varpush not supported for this Instruction.");
 			default:
-				string unknown = String.Format ("'{0}' is not a valid value for instruction '{1}'.",
+				string unknown = String.Format (CultureInfo.InvariantCulture,
+					"'{0}' is not a valid value for instruction '{1}'.",
 					self.OpCode.StackBehaviourPush, self.OpCode);
 				throw new InvalidOperationException (unknown);
 			}
diff --git a/gendarme/framework/Gendarme.Framework.Rocks/MethodRocks.cs b/gendarme/framework/Gendarme.Framework.Rocks/MethodRocks.cs
index f4a604c..eace40a 100644
--- a/gendarme/framework/Gendarme.Framework.Rocks/MethodRocks.cs
+++ b/gendarme/framework/Gendarme.Framework.Rocks/MethodRocks.cs
@@ -55,6 +55,15 @@ namespace Gendarme.Framework.Rocks {
 	/// </summary>
 	public static class MethodRocks {
 
+		public static bool IsNamed (this MemberReference self, string nameSpace, string typeName, string methodName)
+		{
+			if (methodName == null)
+				throw new ArgumentNullException ("methodName");
+			if (self == null)
+				return false;
+			return ((self.Name == methodName) && self.DeclaringType.IsNamed (nameSpace, typeName));
+		}
+
 		/// <summary>
 		/// Check if the MethodReference is defined as the entry point of it's assembly.
 		/// </summary>
@@ -76,7 +85,7 @@ namespace Gendarme.Framework.Rocks {
 				return false;
 
 			return (self.HasThis && !self.HasParameters && (self.Name == "Finalize") &&
-				(self.ReturnType.FullName == "System.Void"));
+				self.ReturnType.IsNamed ("System", "Void"));
 		}
 
 		/// <summary>
@@ -91,10 +100,9 @@ namespace Gendarme.Framework.Rocks {
 				return false;
 
 			MethodDefinition method = self.Resolve ();
-			if ((method != null) && method.HasCustomAttributes) {
-				if (method.CustomAttributes.ContainsAnyType (CustomAttributeRocks.GeneratedCodeAttributes))
-					return true;
-			}
+			if (method.HasAnyGeneratedCodeAttribute ())
+				return true;
+
 			return self.DeclaringType.IsGeneratedCode ();
 		}
 
@@ -161,27 +169,10 @@ namespace Gendarme.Framework.Rocks {
 			TypeDefinition parent = declaring.BaseType != null ? declaring.BaseType.Resolve () : null;
 			while (parent != null) {
 				string name = method.Name;
-				string retval = method.ReturnType.FullName;
-				int pcount = method.HasParameters ? method.Parameters.Count : 0;
 				foreach (MethodDefinition md in parent.Methods) {
 					if (name != md.Name)
 						continue;
-					if (retval != md.ReturnType.FullName)
-						continue;
-					if (md.HasParameters && (pcount == 0))
-						continue;
-					IList<ParameterDefinition> ppdc = md.Parameters;
-					if (pcount != ppdc.Count)
-						continue;
-
-					bool ok = true;
-					for (int i = 0; i < pcount; i++) {
-						if (method.Parameters [i].ParameterType.FullName != ppdc [i].ParameterType.FullName) {
-							ok = false;
-							break;
-						}
-					}
-					if (!ok)
+					if (!method.CompareSignature (md))
 						continue;
 
 					return md.IsVirtual;
@@ -246,11 +237,11 @@ namespace Gendarme.Framework.Rocks {
 			TypeReference type = parameters [1].ParameterType;
 			GenericParameter gp = (type as GenericParameter);
 			if (gp == null)
-				return type.Inherits ("System.EventArgs");
+				return type.Inherits ("System", "EventArgs");
 
 			if (gp.HasConstraints) {
 				IList<TypeReference> cc = gp.Constraints;
-				return ((cc.Count == 1) && (cc [0].FullName == "System.EventArgs"));
+				return ((cc.Count == 1) && cc [0].IsNamed ("System", "EventArgs"));
 			}
 
 			return false;
@@ -283,7 +274,7 @@ namespace Gendarme.Framework.Rocks {
 
 		private static bool AreSameElementTypes (TypeReference a, TypeReference b)
 		{
-			return a.GetElementType ().FullName == b.GetElementType ().FullName;
+			return a.IsGenericParameter || b.IsGenericParameter || b.IsNamed (a.Namespace, a.Name);
 		}
 
 		/// <summary>
diff --git a/gendarme/framework/Gendarme.Framework.Rocks/ModuleRocks.cs b/gendarme/framework/Gendarme.Framework.Rocks/ModuleRocks.cs
index 06a946c..3aad117 100644
--- a/gendarme/framework/Gendarme.Framework.Rocks/ModuleRocks.cs
+++ b/gendarme/framework/Gendarme.Framework.Rocks/ModuleRocks.cs
@@ -4,7 +4,7 @@
 // Authors:
 //	Sebastien Pouliot  <sebastien at ximian.com>
 //
-// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2008, 2011 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
@@ -155,19 +155,58 @@ namespace Gendarme.Framework.Rocks {
 				yield return type;
 		}
 
-		public static bool HasAnyTypeReference (this ModuleDefinition self, string [] typeNames)
+		static Dictionary<ModuleDefinition, IEnumerable<MemberReference>> member_ref_cache = new Dictionary<ModuleDefinition, IEnumerable<MemberReference>> ();
+
+		/// <summary>
+		/// Check if any MemberReference, referenced by the current ModuleDefinition, satisfies the
+		/// specified predicate.
+		/// </summary>
+		/// <param name="self">The ModuleDefinition on which the extension method can be called.</param>
+		/// <param name="predicate">The condition to execute on a provided MemberReference</param>
+		/// <returns>True if 'predicate' returns true for any MemberReference in the module's referenced types.</returns>
+		/// <remarks>Cecil's GetMemberReferences method will allocate a new array each time it is called.
+		/// This extension method will cache the IEnumerable, on the first use, to reduce memory consumption.</remarks>
+		public static bool AnyMemberReference (this ModuleDefinition self, Func<MemberReference, bool> predicate)
 		{
 			if (self == null)
 				return false;
 
-			if (typeNames == null)
-				throw new ArgumentNullException ("typeNames");
+			// since ModuleDefinition.GetMemberReferences allocates an array (always identical if the
+			// assembly is opened "read-only", like Gendarme does) we'll cache and retrieve the array
+			IEnumerable<MemberReference> refs;
+			if (!member_ref_cache.TryGetValue (self, out refs)) {
+				refs = self.GetMemberReferences ();
+				member_ref_cache.Add (self, refs);
+			}
+
+			return refs.Any (predicate);
+		}
+
+		static Dictionary<ModuleDefinition, IEnumerable<TypeReference>> type_ref_cache = new Dictionary<ModuleDefinition, IEnumerable<TypeReference>> ();
 
-			foreach (var typeName in typeNames)
-				if (self.HasTypeReference (typeName))
-					return true;
+		/// <summary>
+		/// Check if any TypeReference, referenced by the current ModuleDefinition, satisfies the
+		/// specified predicate.
+		/// </summary>
+		/// <param name="self">The ModuleDefinition on which the extension method can be called.</param>
+		/// <param name="predicate">The condition to execute on a provided TypeReference</param>
+		/// <returns>True if 'predicate' returns true for any TypeReference in the module's referenced types.</returns>
+		/// <remarks>Cecil's GetTypeReferences method will allocate a new array each time it is called.
+		/// This extension method will cache the IEnumerable, on the first use, to reduce memory consumption.</remarks>
+		public static bool AnyTypeReference (this ModuleDefinition self, Func<TypeReference, bool> predicate)
+		{
+			if (self == null)
+				return false;
+
+			// since ModuleDefinition.GetTypeReferences allocates an array (always identical if the
+			// assembly is opened "read-only", like Gendarme does) we'll cache and retrieve the array
+			IEnumerable<TypeReference> refs;
+			if (!type_ref_cache.TryGetValue (self, out refs)) {
+				refs = self.GetTypeReferences ();
+				type_ref_cache.Add (self, refs);
+			}
 
-			return false;
+			return refs.Any (predicate);
 		}
 	}
 }
diff --git a/gendarme/framework/Gendarme.Framework.Rocks/ParameterRocks.cs b/gendarme/framework/Gendarme.Framework.Rocks/ParameterRocks.cs
index cfc87ca..7a41c01 100644
--- a/gendarme/framework/Gendarme.Framework.Rocks/ParameterRocks.cs
+++ b/gendarme/framework/Gendarme.Framework.Rocks/ParameterRocks.cs
@@ -39,22 +39,7 @@ namespace Gendarme.Framework.Rocks {
 		/// <returns>True if the parameter represents a list of parameters, false otherwise.</returns>
 		public static bool IsParams (this ParameterDefinition self)
 		{
-			if (self == null || !self.HasCustomAttributes)
-				return false;
-			return self.CustomAttributes.ContainsType ("System.ParamArrayAttribute");
-		}
-
-		/// <summary>
-		/// Returns the sequence number as found in the metadata
-		/// </summary>
-		/// <param name="self">The ParameterDefinition on which the extension method can be called.</param>
-		/// <returns>The integer value of the sequence number of the parameter.</returns>
-		public static int GetSequence (this ParameterReference self)
-		{
-			if (self == null)
-				return -1;
-
-			return self.Index + 1;
+			return self.HasAttribute ("System", "ParamArrayAttribute");
 		}
 	}
 }
diff --git a/gendarme/framework/Gendarme.Framework.Rocks/PropertyRocks.cs b/gendarme/framework/Gendarme.Framework.Rocks/PropertyRocks.cs
index 293f9db..112d323 100644
--- a/gendarme/framework/Gendarme.Framework.Rocks/PropertyRocks.cs
+++ b/gendarme/framework/Gendarme.Framework.Rocks/PropertyRocks.cs
@@ -59,10 +59,9 @@ namespace Gendarme.Framework.Rocks {
 			if (self == null)
 				return false;
 
-			if (self.HasCustomAttributes) {
-				if (self.CustomAttributes.ContainsAnyType (CustomAttributeRocks.GeneratedCodeAttributes))
-					return true;
-			}
+			if (self.HasAnyGeneratedCodeAttribute ())
+				return true;
+
 			return self.DeclaringType.IsGeneratedCode ();
 		}
 	}
diff --git a/gendarme/framework/Gendarme.Framework.Rocks/TypeRocks.cs b/gendarme/framework/Gendarme.Framework.Rocks/TypeRocks.cs
index d549c63..efdcc0f 100644
--- a/gendarme/framework/Gendarme.Framework.Rocks/TypeRocks.cs
+++ b/gendarme/framework/Gendarme.Framework.Rocks/TypeRocks.cs
@@ -84,51 +84,6 @@ namespace Gendarme.Framework.Rocks {
 		}
 
 		/// <summary>
-		/// Check if a type reference collection contains a type of a specific name.
-		/// </summary>
-		/// <param name="self">The TypeReferenceCollection on which the extension method can be called.</param>
-		/// <param name="typeName">Full name of the type.</param>
-		/// <returns>True if the collection contains an type of the same name,
-		/// False otherwise.</returns>
-		public static bool ContainsType (this IEnumerable<TypeReference> self, string typeName)
-		{
-			if (typeName == null)
-				throw new ArgumentNullException ("typeName");
-			if (self == null)
-				return false;
-
-			foreach (TypeReference type in self) {
-				if (type.FullName == typeName)
-					return true;
-			}
-			return false;
-		}
-
-		/// <summary>
-		/// Check if a type reference collection contains any of the specified type names.
-		/// </summary>
-		/// <param name="self">The TypeReferenceCollection on which the extension method can be called.</param>
-		/// <param name="typeNames">A string array of full type names.</param>
-		/// <returns>True if the collection contains any types matching one specified,
-		/// False otherwise.</returns>
-		public static bool ContainsAnyType (this IEnumerable<TypeReference> self, string [] typeNames)
-		{
-			if (typeNames == null)
-				throw new ArgumentNullException ("typeNames");
-			if (self == null)
-				return false;
-
-			foreach (TypeReference type in self) {
-				string fullname = type.FullName;
-				foreach (string type_full_name in typeNames) {
-					if (fullname == type_full_name)
-						return true;
-				}
-			}
-			return false;
-		}
-
-		/// <summary>
 		/// Returns the first MethodDefinition that satisfies a given MethodSignature.
 		/// </summary>
 		/// <param name="self">The TypeReference on which the extension method can be called.</param>
@@ -177,7 +132,7 @@ namespace Gendarme.Framework.Rocks {
 					continue;
 				if ((method.Attributes & attributes) != attributes)
 					continue;
-				if (returnType != null && method.ReturnType.FullName != returnType)
+				if (returnType != null && !method.ReturnType.IsNamed (returnType))
 					continue;
 				if (parameters != null) {
 					if (method.HasParameters) {
@@ -188,7 +143,7 @@ namespace Gendarme.Framework.Rocks {
 						for (int i = 0; i < parameters.Length; i++) {
 							if (parameters [i] == null)
 								continue;//ignore parameter
-							if (parameters [i] != pdc [i].ParameterType.GetElementType ().FullName) {
+							if (!pdc [i].ParameterType.GetElementType ().IsNamed (parameters [i])) {
 								parameterError = true;
 								break;
 							}
@@ -284,13 +239,16 @@ namespace Gendarme.Framework.Rocks {
 		/// where the information resides could be unavailable. False is returned in this case.
 		/// </summary>
 		/// <param name="self">The TypeDefinition on which the extension method can be called.</param>
-		/// <param name="interfaceName">Full name of the interface</param>
+		/// <param name="nameSpace">The namespace of the interface to be matched</param>
+		/// <param name="name">The name of the interface to be matched</param>
 		/// <returns>True if we found that the type implements the interface, False otherwise (either it
 		/// does not implement it, or we could not find where it does).</returns>
-		public static bool Implements (this TypeReference self, string interfaceName)
+		public static bool Implements (this TypeReference self, string nameSpace, string name)
 		{
-			if (interfaceName == null)
-				throw new ArgumentNullException ("interfaceName");
+			if (nameSpace == null)
+				throw new ArgumentNullException ("nameSpace");
+			if (name == null)
+				throw new ArgumentNullException ("name");
 			if (self == null)
 				return false;
 
@@ -299,23 +257,22 @@ namespace Gendarme.Framework.Rocks {
 				return false;	// not enough information available
 
 			// special case, check if we implement ourselves
-			if (type.IsInterface && (type.FullName == interfaceName))
+			if (type.IsInterface && type.IsNamed (nameSpace, name))
 				return true;
 
-			return Implements (type, interfaceName, (interfaceName.IndexOf ('`') >= 0));
+			return Implements (type, nameSpace, name);
 		}
 
-		private static bool Implements (TypeDefinition type, string interfaceName, bool generic)
+		private static bool Implements (TypeDefinition type, string nameSpace, string iname)
 		{
 			while (type != null) {
 				// does the type implements it itself
 				if (type.HasInterfaces) {
 					foreach (TypeReference iface in type.Interfaces) {
-						string fullname = (generic) ? iface.GetElementType ().FullName : iface.FullName;
-						if (fullname == interfaceName)
+						if (iface.IsNamed (nameSpace, iname))
 							return true;
 						//if not, then maybe one of its parent interfaces does
-						if (Implements (iface.Resolve (), interfaceName, generic))
+						if (Implements (iface.Resolve (), nameSpace, iname))
 							return true;
 					}
 				}
@@ -331,21 +288,23 @@ namespace Gendarme.Framework.Rocks {
 		/// where the information resides could be unavailable.
 		/// </summary>
 		/// <param name="self">The TypeReference on which the extension method can be called.</param>
-		/// <param name="className">Full name of the base class</param>
+		/// <param name="nameSpace">The namespace of the base class to be matched</param>
+		/// <param name="name">The name of the base class to be matched</param>
 		/// <returns>True if the type inherits from specified class, False otherwise</returns>
-		public static bool Inherits (this TypeReference self, string className)
+		public static bool Inherits (this TypeReference self, string nameSpace, string name)
 		{
-			if (className == null)
-				throw new ArgumentNullException ("className");
+			if (nameSpace == null)
+				throw new ArgumentNullException ("nameSpace");
+			if (name == null)
+				throw new ArgumentNullException ("name");
 			if (self == null)
 				return false;
 
 			TypeReference current = self.Resolve ();
 			while (current != null) {
-				string fullname = current.FullName;
-				if (fullname == className)
+				if (current.IsNamed (nameSpace, name))
 					return true;
-				if (fullname == "System.Object")
+				if (current.IsNamed ("System", "Object"))
 					return false;
 
 				TypeDefinition td = current.Resolve ();
@@ -357,6 +316,70 @@ namespace Gendarme.Framework.Rocks {
 		}
 
 		/// <summary>
+		/// Check if the type and its namespace are named like the provided parameters.
+		/// This is preferred to checking the FullName property since the later can allocate (string) memory.
+		/// </summary>
+		/// <param name="self">The TypeReference on which the extension method can be called.</param>
+		/// <param name="nameSpace">The namespace to be matched</param>
+		/// <param name="name">The type name to be matched</param>
+		/// <returns>True if the type is namespace and name match the arguments, False otherwise</returns>
+		public static bool IsNamed (this TypeReference self, string nameSpace, string name)
+		{
+			if (nameSpace == null)
+				throw new ArgumentNullException ("nameSpace");
+			if (name == null)
+				throw new ArgumentNullException ("name");
+			if (self == null)
+				return false;
+
+			if (self.IsNested) {
+				int spos = name.LastIndexOf ('/');
+				if (spos == -1)
+					return false;
+				// GetFullName could be optimized away but it's a fairly uncommon case
+				return (nameSpace + "." + name == self.GetFullName ());
+			}
+
+			return ((self.Namespace == nameSpace) && (self.Name == name));
+		}
+
+		/// <summary>
+		/// Check if the type full name match the provided parameter.
+		/// Note: prefer the overload where the namespace and type name can be supplied individually
+		/// </summary>
+		/// <param name="self">The TypeReference on which the extension method can be called.</param>
+		/// <param name="fullName">The full name to be matched</param>
+		/// <returns>True if the type is namespace and name match the arguments, False otherwise</returns>
+		public static bool IsNamed (this TypeReference self, string fullName)
+		{
+			if (fullName == null)
+				throw new ArgumentNullException ("fullName");
+			if (self == null)
+				return false;
+
+			if (self.IsNested) {
+				int spos = fullName.LastIndexOf ('/');
+				if (spos == -1)
+					return false;
+				// FIXME: GetFullName could be optimized away but it's a fairly uncommon case
+				return (fullName == self.GetFullName ());
+			}
+
+			int dpos = fullName.LastIndexOf ('.');
+			string nspace = self.Namespace;
+			if (dpos != nspace.Length)
+				return false;
+
+			if (String.CompareOrdinal (nspace, 0, fullName, 0, dpos) != 0)
+				return false;
+
+			string name = self.Name;
+			if (fullName.Length - dpos - 1 != name.Length)
+				return false;
+			return (String.CompareOrdinal (name, 0, fullName, dpos + 1, fullName.Length - dpos - 1) == 0);
+		}
+
+		/// <summary>
 		/// Checks if type is attribute. Note that it is possible that
 		/// we might now be able to know all inheritance since the assembly where 
 		/// the information resides could be unavailable.
@@ -369,7 +392,7 @@ namespace Gendarme.Framework.Rocks {
 			if (self == null)
 				return false;
 
-			return self.Inherits ("System.Attribute");
+			return self.Inherits ("System", "Attribute");
 		}
 
 		/// <summary>
@@ -387,13 +410,11 @@ namespace Gendarme.Framework.Rocks {
 			if (null == type || type.BaseType == null)
 				return false;
 
-			switch (type.BaseType.FullName) {
-			case "System.Delegate":
-			case "System.MulticastDelegate":
-				return true;
-			default:
+			if (type.BaseType.Namespace != "System")
 				return false;
-			}
+
+			string name = type.BaseType.Name;
+			return ((name == "Delegate") || (name == "MulticastDelegate"));
 		}
 
 		/// <summary>
@@ -410,7 +431,7 @@ namespace Gendarme.Framework.Rocks {
 			if ((type == null) || !type.IsEnum || !type.HasCustomAttributes)
 				return false;
 
-			return type.HasAttribute ("System.FlagsAttribute");
+			return type.HasAttribute ("System", "FlagsAttribute");
 		}
 
 		/// <summary>
@@ -423,9 +444,11 @@ namespace Gendarme.Framework.Rocks {
 			if (self == null)
 				return false;
 
-			string full_name = self.FullName;
-			return ((full_name == "System.Single") ||
-				(full_name == "System.Double"));
+			if (self.Namespace != "System")
+				return false;
+
+			string name = self.Name;
+			return ((name == "Single") || (name == "Double"));
 		}
 
 		/// <summary>
@@ -443,7 +466,7 @@ namespace Gendarme.Framework.Rocks {
 				TypeDefinition type = self.Resolve ();
 				// both helpful attributes only exists in 2.0 and more recent frameworks
 				if (type.Module.Runtime >= TargetRuntime.Net_2_0) {
-					if (type.CustomAttributes.ContainsAnyType (CustomAttributeRocks.GeneratedCodeAttributes))
+					if (type.HasAnyGeneratedCodeAttribute ())
 						return true;
 				}
 			}
@@ -471,14 +494,11 @@ namespace Gendarme.Framework.Rocks {
 			if (self == null)
 				return false;
 
-			switch (self.FullName) {
-			case "System.IntPtr":
-			case "System.UIntPtr":
-			case "System.Runtime.InteropServices.HandleRef":
-				return true;
-			default:
-				return false;
+			if (self.Namespace == "System") {
+				string name = self.Name;
+				return ((name == "IntPtr") || (name == "UIntPtr"));
 			}
+			return self.IsNamed ("System.Runtime.InteropServices", "HandleRef");
 		}
 
 		/// <summary>
diff --git a/gendarme/framework/Gendarme.Framework.Rocks/VariableDefinitionRocks.cs b/gendarme/framework/Gendarme.Framework.Rocks/VariableDefinitionRocks.cs
index 6749ebd..73e03e4 100644
--- a/gendarme/framework/Gendarme.Framework.Rocks/VariableDefinitionRocks.cs
+++ b/gendarme/framework/Gendarme.Framework.Rocks/VariableDefinitionRocks.cs
@@ -24,8 +24,9 @@
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
-using Mono.Cecil.Cil;
 using System;
+using System.Globalization;
+using Mono.Cecil.Cil;
 
 namespace Gendarme.Framework.Rocks {
 	
@@ -53,7 +54,7 @@ namespace Gendarme.Framework.Rocks {
 		{
 			if (self == null)
 				return String.Empty;
-			return !string.IsNullOrEmpty (self.Name) ? self.Name : "V_" + self.Index.ToString ();
+			return !string.IsNullOrEmpty (self.Name) ? self.Name : "V_" + self.Index.ToString (CultureInfo.InvariantCulture);
 		}
 	}
 }
diff --git a/gendarme/framework/Gendarme.Framework.csproj b/gendarme/framework/Gendarme.Framework.csproj
index f9976af..ff5851b 100755
--- a/gendarme/framework/Gendarme.Framework.csproj
+++ b/gendarme/framework/Gendarme.Framework.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -12,9 +12,11 @@
     <AssemblyName>Gendarme.Framework</AssemblyName>
     <FileUpgradeFlags>
     </FileUpgradeFlags>
-    <OldToolsVersion>2.0</OldToolsVersion>
+    <OldToolsVersion>3.5</OldToolsVersion>
     <UpgradeBackupLocation>
     </UpgradeBackupLocation>
+    <IsWebBootstrapper>true</IsWebBootstrapper>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <PublishUrl>http://localhost/Gendarme.Framework/</PublishUrl>
     <Install>true</Install>
     <InstallFrom>Web</InstallFrom>
@@ -27,10 +29,9 @@
     <MapFileExtensions>true</MapFileExtensions>
     <ApplicationRevision>0</ApplicationRevision>
     <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>true</IsWebBootstrapper>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -41,6 +42,7 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>3</WarningLevel>
     <StartupObject />
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -50,6 +52,7 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
     <StartupObject />
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -58,12 +61,17 @@
     </Reference>
   </ItemGroup>
   <ItemGroup>
+    <ProjectReference Include="..\..\..\cecil\Mono.Cecil.csproj">
+      <Project>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</Project>
+      <Name>Mono.Cecil</Name>
+    </ProjectReference>
   </ItemGroup>
   <ItemGroup>
     <Compile Include="..\AssemblyStaticInfo.cs" />
     <Compile Include="Gendarme.Framework.Engines\SuppressMessageEngine.cs" />
     <Compile Include="Gendarme.Framework.Helpers\Log.cs" />
     <Compile Include="Gendarme.Framework.Helpers\MethodPrinter.cs" />
+    <Compile Include="Gendarme.Framework.Helpers\StreamLineReader.cs" />
     <Compile Include="Gendarme.Framework.Rocks\ParameterRocks.cs" />
     <Compile Include="Gendarme.Framework.Rocks\PropertyRocks.cs" />
     <Compile Include="Gendarme.Framework.Rocks\VariableDefinitionRocks.cs" />
@@ -118,21 +126,34 @@
     <None Include="ChangeLog" />
   </ItemGroup>
   <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\..\cecil\Mono.Cecil.csproj">
-      <Project>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</Project>
-      <Name>Mono.Cecil</Name>
-    </ProjectReference>
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
diff --git a/gendarme/framework/Gendarme.Framework/Symbols.cs b/gendarme/framework/Gendarme.Framework/Symbols.cs
index 5e76c20..f572643 100644
--- a/gendarme/framework/Gendarme.Framework/Symbols.cs
+++ b/gendarme/framework/Gendarme.Framework/Symbols.cs
@@ -39,7 +39,7 @@ namespace Gendarme.Framework {
 		// http://blogs.msdn.com/jmstall/archive/2005/06/19/FeeFee_SequencePoints.aspx
 		private const int PdbHiddenLine = 0xFEEFEE;
 
-		private static string AlmostEqualTo = new string (new char [] { '\u2248' });
+		private const string AlmostEqualTo = "\u2248";
 
 		private static Instruction ExtractFirst (TypeDefinition type)
 		{
@@ -55,7 +55,7 @@ namespace Gendarme.Framework {
 
 		private static Instruction ExtractFirst (MethodDefinition method)
 		{
-			if ((method == null) || !method.HasBody)
+			if ((method == null) || !method.HasBody || method.Body.Instructions.Count == 0)
 				return null;
 			Instruction ins = method.Body.Instructions [0];
 			// note that the first instruction often does not have a sequence point
@@ -69,11 +69,11 @@ namespace Gendarme.Framework {
 		{
 			MethodDefinition method = (location as MethodDefinition);
 			if (method != null)
-				return (method.DeclaringType as TypeDefinition);
+				return method.DeclaringType;
 
 			FieldDefinition field = (location as FieldDefinition);
 			if (field != null)
-				return (field.DeclaringType as TypeDefinition);
+				return field.DeclaringType;
 
 			ParameterDefinition parameter = (location as ParameterDefinition);
 			if (parameter != null)
@@ -112,7 +112,7 @@ namespace Gendarme.Framework {
 		// include line and column.
 		private static string FormatSequencePoint (string document, int line, int column, bool exact)
 		{
-			string sline = (line == PdbHiddenLine) ? "unavailable" : line.ToString ();
+			string sline = (line == PdbHiddenLine) ? "unavailable" : line.ToString (CultureInfo.InvariantCulture);
 
 			// MDB (mono symbols) does not provide any column information (so we don't show any)
 			// there's also no point in showing a column number if we're not totally sure about the line
@@ -177,7 +177,7 @@ namespace Gendarme.Framework {
 					return FormatSource (candidate);
 
 				// we may still be lucky to find the (a) source file for the type itself
-				type = (method.DeclaringType as TypeDefinition);
+				type = method.DeclaringType;
 			}
 
 			// TypeDefinition, FieldDefinition
diff --git a/gendarme/framework/Gendarme.Framework/ThreadModelAttribute.cs b/gendarme/framework/Gendarme.Framework/ThreadModelAttribute.cs
index e40e34c..4c76f63 100644
--- a/gendarme/framework/Gendarme.Framework/ThreadModelAttribute.cs
+++ b/gendarme/framework/Gendarme.Framework/ThreadModelAttribute.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 
 // Note that these types are extended version of what we recommend
 // that users use. See DecorateThreadsRule documentation for a smaller version
@@ -82,7 +83,7 @@ namespace Gendarme.Framework {
 		public override string ToString ()
 		{
 			if (AllowsEveryCaller)
-				return string.Format ("{0} | AllowEveryCaller", Model);
+				return String.Format (CultureInfo.InvariantCulture, "{0} | AllowEveryCaller", Model);
 				
 			return Model.ToString ();
 		}
@@ -96,9 +97,9 @@ namespace Gendarme.Framework {
 			return this == rhs;
 		}
 		
-		public bool Equals (ThreadModelAttribute rhs)
+		public bool Equals (ThreadModelAttribute other)
 		{
-			return this == rhs;
+			return this == other;
 		}
 		
 		public static bool operator== (ThreadModelAttribute lhs, ThreadModelAttribute rhs)
diff --git a/gendarme/framework/Makefile.am b/gendarme/framework/Makefile.am
index afbf5d9..13cbf9e 100644
--- a/gendarme/framework/Makefile.am
+++ b/gendarme/framework/Makefile.am
@@ -40,6 +40,7 @@ framework_sources =  \
 	Gendarme.Framework.Helpers/PrimitiveReferences.cs \
 	Gendarme.Framework.Helpers/StackEntryAnalysis.cs \
 	Gendarme.Framework.Helpers/StackEntryUsageResult.cs \
+	Gendarme.Framework.Helpers/StreamLineReader.cs \
 	Gendarme.Framework.Rocks/AssemblyRocks.cs \
 	Gendarme.Framework.Rocks/CecilRocks.cs \
 	Gendarme.Framework.Rocks/CommonRocks.cs \
@@ -86,7 +87,7 @@ framework_build_sources += $(framework_generated_sources)
 
 ../bin/Gendarme.Framework.dll: $(framework_build_sources) $(CECIL_ASM)
 	test -d ../bin || mkdir ../bin
-	$(GMCS) $(GENDARME_OPTIONS) -target:library -doc:$(framework_SCRIPTS).doc -r:$(CECIL_ASM) \
+	$(MCS) $(GENDARME_OPTIONS) -target:library -doc:$(framework_SCRIPTS).doc -r:$(CECIL_ASM) \
 		-out:$@ $(framework_build_sources)
 
 framework_test_sources = \
@@ -108,14 +109,14 @@ framework_test_sources = \
 framework_test_build_sources = $(addprefix $(srcdir)/Test/, $(framework_test_sources))
 
 Test.Framework.dll: $(framework_test_build_sources) $(framework_rules_SCRIPTS) ../bin/Gendarme.Framework.dll $(CECIL_ASM)
-	$(GMCS) $(TESTS_OPTIONS) -target:library -d:CODE_ANALYSIS -pkg:mono-nunit \
+	$(MCS) $(TESTS_OPTIONS) -target:library -d:CODE_ANALYSIS -pkg:mono-nunit \
 		-r:$(CECIL_ASM) -r:../bin/Gendarme.Framework.dll -r:../rules/Test.Rules/Test.Rules.dll \
 		-out:$@ $(framework_test_build_sources)
 
 test: Test.Framework.dll
 
 run-test: test
-	MONO_PATH=../bin/:../rules/Test.Rules/:$(MONO_PATH) nunit-console2 -noshadow Test.Framework.dll
+	MONO_PATH=../bin/:../rules/Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe Test.Framework.dll
 
 self-test: $(framework_SCRIPTS)
 	mono --debug ../bin/gendarme.exe $(framework_SCRIPTS)
diff --git a/gendarme/framework/Makefile.in b/gendarme/framework/Makefile.in
index 34ac465..7f5c901 100644
--- a/gendarme/framework/Makefile.in
+++ b/gendarme/framework/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -42,12 +61,39 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES = gendarme-framework.pc
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(frameworkdir)" \
 	"$(DESTDIR)$(framework_documentationdir)" \
 	"$(DESTDIR)$(pkgconfigdir)"
-frameworkSCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(framework_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -58,21 +104,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-framework_documentationDATA_INSTALL = $(INSTALL_DATA)
-pkgconfigDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(framework_documentation_DATA) $(pkgconfig_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -133,6 +204,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -146,9 +218,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -258,6 +333,7 @@ framework_sources = \
 	Gendarme.Framework.Helpers/PrimitiveReferences.cs \
 	Gendarme.Framework.Helpers/StackEntryAnalysis.cs \
 	Gendarme.Framework.Helpers/StackEntryUsageResult.cs \
+	Gendarme.Framework.Helpers/StreamLineReader.cs \
 	Gendarme.Framework.Rocks/AssemblyRocks.cs \
 	Gendarme.Framework.Rocks/CecilRocks.cs \
 	Gendarme.Framework.Rocks/CommonRocks.cs \
@@ -326,14 +402,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/framework/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/framework/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/framework/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/framework/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -343,6 +419,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -351,61 +428,86 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 gendarme-framework.pc: $(top_builddir)/config.status $(srcdir)/gendarme-framework.pc.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-frameworkSCRIPTS: $(framework_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(frameworkdir)" || $(MKDIR_P) "$(DESTDIR)$(frameworkdir)"
-	@list='$(framework_SCRIPTS)'; for p in $$list; do \
+	@list='$(framework_SCRIPTS)'; test -n "$(frameworkdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(frameworkdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(frameworkdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(frameworkSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(frameworkdir)/$$f'"; \
-	    $(frameworkSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(frameworkdir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(frameworkdir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(frameworkdir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-frameworkSCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(framework_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(frameworkdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(frameworkdir)/$$f"; \
-	done
+	@list='$(framework_SCRIPTS)'; test -n "$(frameworkdir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(frameworkdir)'; $(am__uninstall_files_from_dir)
 install-framework_documentationDATA: $(framework_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(framework_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(framework_documentationdir)"
-	@list='$(framework_documentation_DATA)'; for p in $$list; do \
+	@list='$(framework_documentation_DATA)'; test -n "$(framework_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(framework_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(framework_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(framework_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(framework_documentationdir)/$$f'"; \
-	  $(framework_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(framework_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(framework_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(framework_documentationdir)" || exit $$?; \
 	done
 
 uninstall-framework_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(framework_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(framework_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(framework_documentationdir)/$$f"; \
-	done
+	@list='$(framework_documentation_DATA)'; test -n "$(framework_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(framework_documentationdir)'; $(am__uninstall_files_from_dir)
 install-pkgconfigDATA: $(pkgconfig_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
-	@list='$(pkgconfig_DATA)'; for p in $$list; do \
+	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
-	  $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
 	done
 
 uninstall-pkgconfigDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(pkgconfig_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \
-	done
+	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -414,7 +516,7 @@ uninstall-pkgconfigDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -431,7 +533,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -439,7 +541,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -465,16 +567,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -482,14 +584,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -501,7 +603,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -510,29 +612,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -553,29 +660,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -598,10 +717,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -609,6 +733,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -628,6 +753,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -637,18 +764,28 @@ install-data-am: install-frameworkSCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -670,8 +807,8 @@ ps-am:
 uninstall-am: uninstall-frameworkSCRIPTS \
 	uninstall-framework_documentationDATA uninstall-pkgconfigDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -692,18 +829,18 @@ uninstall-am: uninstall-frameworkSCRIPTS \
 
 ../bin/Gendarme.Framework.dll: $(framework_build_sources) $(CECIL_ASM)
 	test -d ../bin || mkdir ../bin
-	$(GMCS) $(GENDARME_OPTIONS) -target:library -doc:$(framework_SCRIPTS).doc -r:$(CECIL_ASM) \
+	$(MCS) $(GENDARME_OPTIONS) -target:library -doc:$(framework_SCRIPTS).doc -r:$(CECIL_ASM) \
 		-out:$@ $(framework_build_sources)
 
 Test.Framework.dll: $(framework_test_build_sources) $(framework_rules_SCRIPTS) ../bin/Gendarme.Framework.dll $(CECIL_ASM)
-	$(GMCS) $(TESTS_OPTIONS) -target:library -d:CODE_ANALYSIS -pkg:mono-nunit \
+	$(MCS) $(TESTS_OPTIONS) -target:library -d:CODE_ANALYSIS -pkg:mono-nunit \
 		-r:$(CECIL_ASM) -r:../bin/Gendarme.Framework.dll -r:../rules/Test.Rules/Test.Rules.dll \
 		-out:$@ $(framework_test_build_sources)
 
 test: Test.Framework.dll
 
 run-test: test
-	MONO_PATH=../bin/:../rules/Test.Rules/:$(MONO_PATH) nunit-console2 -noshadow Test.Framework.dll
+	MONO_PATH=../bin/:../rules/Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe Test.Framework.dll
 
 self-test: $(framework_SCRIPTS)
 	mono --debug ../bin/gendarme.exe $(framework_SCRIPTS)
@@ -723,6 +860,7 @@ $(framework_doc_source):
 
 clean-local:
 	rm -fr doc/
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/framework/Test/Gendarme.Framework.Rocks/AssemblyRocksTest.cs b/gendarme/framework/Test/Gendarme.Framework.Rocks/AssemblyRocksTest.cs
index c4bbafd..061bccd 100644
--- a/gendarme/framework/Test/Gendarme.Framework.Rocks/AssemblyRocksTest.cs
+++ b/gendarme/framework/Test/Gendarme.Framework.Rocks/AssemblyRocksTest.cs
@@ -49,16 +49,23 @@ namespace Test.Framework.Rocks {
 
 		[Test]
 		[ExpectedException (typeof (ArgumentNullException))]
-		public void HasAttribute_Null ()
+		public void HasAttribute_Namespace_Null ()
 		{
-			assembly.HasAttribute (null);
+			assembly.HasAttribute (null, "a");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void HasAttribute_Name_Null ()
+		{
+			assembly.HasAttribute ("a", null);
 		}
 
 		[Test]
 		public void HasAttribute ()
 		{
-			Assert.IsTrue (assembly.HasAttribute ("System.Runtime.CompilerServices.RuntimeCompatibilityAttribute"), "System.Runtime.CompilerServices.RuntimeCompatibilityAttribute");
-			Assert.IsFalse (assembly.HasAttribute ("NUnit.Framework.TestFixtureAttribute"), "TestFixtureAttribute");
+			Assert.IsTrue (assembly.HasAttribute ("System.Runtime.CompilerServices", "RuntimeCompatibilityAttribute"), "System.Runtime.CompilerServices.RuntimeCompatibilityAttribute");
+			Assert.IsFalse (assembly.HasAttribute ("NUnit.Framework", "TestFixtureAttribute"), "TestFixtureAttribute");
 		}
 	}
 }
diff --git a/gendarme/framework/Test/Gendarme.Framework.Rocks/CustomAttributeRocksTest.cs b/gendarme/framework/Test/Gendarme.Framework.Rocks/CustomAttributeRocksTest.cs
index 65a868e..78c6f81 100644
--- a/gendarme/framework/Test/Gendarme.Framework.Rocks/CustomAttributeRocksTest.cs
+++ b/gendarme/framework/Test/Gendarme.Framework.Rocks/CustomAttributeRocksTest.cs
@@ -50,59 +50,29 @@ namespace Test.Framework.Rocks {
 
 		[Test]
 		[ExpectedException (typeof (ArgumentNullException))]
-		public void Contains_Null ()
-		{
-			Collection<CustomAttribute> cac = new Collection<CustomAttribute> ();
-			cac.ContainsType ((string) null);
-		}
-
-		[Test]
-		public void Contains ()
-		{
-			TypeDefinition type = assembly.MainModule.GetType ("Test.Framework.Rocks.CustomAttributeRocksTest");
-			Collection<CustomAttribute> cac = type.CustomAttributes;
-			Assert.IsTrue (cac.ContainsType ("NUnit.Framework.TestFixtureAttribute"), "NUnit.Framework.TestFixtureAttribute");
-			Assert.IsFalse (cac.ContainsType ("NUnit.Framework.TestFixture"), "NUnit.Framework.TestFixture");
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void ContainsAny_Null ()
-		{
-			Collection<CustomAttribute> cac = new Collection<CustomAttribute> ();
-			cac.ContainsAnyType (null);
-		}
-
-		[Test]
-		public void ContainsAny ()
+		public void HasAttribute_Namespace_Null ()
 		{
 			TypeDefinition type = assembly.MainModule.GetType ("Test.Framework.Rocks.CustomAttributeRocksTest");
-			Collection<CustomAttribute> cac = type.CustomAttributes;
-			Assert.IsTrue (cac.ContainsAnyType (new string[] {
-				"NUnit.Framework.TestFixtureAttribute",
-				null,
-				"System.ICloneable"
-			}), "NUnit.Framework.TestFixtureAttribute");
-			Assert.IsFalse (cac.ContainsAnyType (new string[] {}), "NUnit.Framework.TestFixture");
+			type.HasAttribute (null, "a");
 		}
 
 		[Test]
 		[ExpectedException (typeof (ArgumentNullException))]
-		public void HasAttribute_Null ()
+		public void HasAttribute_Name_Null ()
 		{
 			TypeDefinition type = assembly.MainModule.GetType ("Test.Framework.Rocks.CustomAttributeRocksTest");
-			type.HasAttribute (null);
+			type.HasAttribute ("a", null);
 		}
 		
 		[Test]
 		public void HasAttribute ()
 		{
 			TypeDefinition type = null;
-			Assert.IsFalse (type.HasAttribute ("NUnit.Framework.TestFixtureAttribute"), "null-type");
+			Assert.IsFalse (type.HasAttribute ("NUnit.Framework", "TestFixtureAttribute"), "null-type");
 
 			type = assembly.MainModule.GetType ("Test.Framework.Rocks.CustomAttributeRocksTest");
-			Assert.IsTrue (type.HasAttribute ("NUnit.Framework.TestFixtureAttribute"), "true");
-			Assert.IsFalse (type.HasAttribute ("NUnit.Framework.TestAttribute"), "false");
+			Assert.IsTrue (type.HasAttribute ("NUnit.Framework", "TestFixtureAttribute"), "true");
+			Assert.IsFalse (type.HasAttribute ("NUnit.Framework", "TestAttribute"), "false");
 		}
 	}
 }
diff --git a/gendarme/framework/Test/Gendarme.Framework.Rocks/FieldRocksTest.cs b/gendarme/framework/Test/Gendarme.Framework.Rocks/FieldRocksTest.cs
index a790ed2..69ea851 100644
--- a/gendarme/framework/Test/Gendarme.Framework.Rocks/FieldRocksTest.cs
+++ b/gendarme/framework/Test/Gendarme.Framework.Rocks/FieldRocksTest.cs
@@ -74,16 +74,23 @@ namespace Test.Framework.Rocks {
 
 		[Test]
 		[ExpectedException (typeof (ArgumentNullException))]
-		public void HasAttribute_Null ()
+		public void HasAttribute_Namespace_Null ()
 		{
-			GetField ("assembly").HasAttribute (null);
+			GetField ("assembly").HasAttribute (null, "a");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void HasAttribute_Name_Null ()
+		{
+			GetField ("assembly").HasAttribute ("a", null);
 		}
 
 		[Test]
 		public void HasAttribute ()
 		{
-			Assert.IsTrue (GetField ("cga").HasAttribute ("System.Runtime.CompilerServices.CompilerGeneratedAttribute"), "CompilerGeneratedAttribute");
-			Assert.IsFalse (GetField ("cga").HasAttribute ("NUnit.Framework.TestFixtureAttribute"), "TestFixtureAttribute");
+			Assert.IsTrue (GetField ("cga").HasAttribute ("System.Runtime.CompilerServices", "CompilerGeneratedAttribute"), "CompilerGeneratedAttribute");
+			Assert.IsFalse (GetField ("cga").HasAttribute ("NUnit.Framework", "TestFixtureAttribute"), "TestFixtureAttribute");
 		}
 
 		[Test]
diff --git a/gendarme/framework/Test/Gendarme.Framework.Rocks/MethodRocksTest.cs b/gendarme/framework/Test/Gendarme.Framework.Rocks/MethodRocksTest.cs
index c43d680..3202358 100644
--- a/gendarme/framework/Test/Gendarme.Framework.Rocks/MethodRocksTest.cs
+++ b/gendarme/framework/Test/Gendarme.Framework.Rocks/MethodRocksTest.cs
@@ -112,18 +112,26 @@ namespace Test.Framework.Rocks {
 
 		[Test]
 		[ExpectedException (typeof (ArgumentNullException))]
-		public void HasAttribute_Null ()
+		public void HasAttribute_Namespace_Null ()
 		{
 			MethodDefinition method = GetMethod ("FixtureSetUp");
-			method.HasAttribute ((string) null);
+			method.HasAttribute (null, "a");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void HasAttribute_Name_Null ()
+		{
+			MethodDefinition method = GetMethod ("FixtureSetUp");
+			method.HasAttribute ("a", null);
 		}
 
 		[Test]
 		public void HasAttribute ()
 		{
 			MethodDefinition method = GetMethod ("FixtureSetUp");
-			Assert.IsTrue (method.HasAttribute ("NUnit.Framework.TestFixtureSetUpAttribute"), "NUnit.Framework.TestFixtureSetUpAttribute");
-			Assert.IsFalse (method.HasAttribute ("NUnit.Framework.TestFixtureSetUp"), "NUnit.Framework.TestFixtureSetUp");
+			Assert.IsTrue (method.HasAttribute ("NUnit.Framework", "TestFixtureSetUpAttribute"), "NUnit.Framework.TestFixtureSetUpAttribute");
+			Assert.IsFalse (method.HasAttribute ("NUnit.Framework", "TestFixtureSetUp"), "NUnit.Framework.TestFixtureSetUp");
 		}
 
 		[Test]
diff --git a/gendarme/framework/Test/Gendarme.Framework.Rocks/RocksTest.cs b/gendarme/framework/Test/Gendarme.Framework.Rocks/RocksTest.cs
index ed62b9c..4c746fa 100644
--- a/gendarme/framework/Test/Gendarme.Framework.Rocks/RocksTest.cs
+++ b/gendarme/framework/Test/Gendarme.Framework.Rocks/RocksTest.cs
@@ -49,6 +49,9 @@ namespace Test.Framework.Rocks {
 			public abstract void PublicMethod ();
 			protected abstract void ProtectedMethod ();
 			private void PrivateMethod () { }
+
+			public abstract class NestedNestedPublicType {
+			}
 		}
 
 		protected abstract class NestedProtectedType {
diff --git a/gendarme/framework/Test/Gendarme.Framework.Rocks/TypeRocksTest.cs b/gendarme/framework/Test/Gendarme.Framework.Rocks/TypeRocksTest.cs
index 51f782f..99366be 100644
--- a/gendarme/framework/Test/Gendarme.Framework.Rocks/TypeRocksTest.cs
+++ b/gendarme/framework/Test/Gendarme.Framework.Rocks/TypeRocksTest.cs
@@ -179,20 +179,27 @@ namespace Test.Framework.Rocks {
 
 		[Test]
 		[ExpectedException (typeof (ArgumentNullException))]
-		public void HasAttribute_Null ()
+		public void HasAttribute_Namespace_Null ()
 		{
-			GetType (String.Empty).HasAttribute (null);
+			GetType (String.Empty).HasAttribute (null, "a");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void HasAttribute_Name_Null ()
+		{
+			GetType (String.Empty).HasAttribute ("a", null);
 		}
 
 		[Test]
 		public void HasAttribute ()
 		{
-			Assert.IsTrue (GetType (String.Empty).HasAttribute ("NUnit.Framework.TestFixtureAttribute"), "TypeRocksTest");
-			Assert.IsFalse (GetType ("/Enum").HasAttribute ("System.FlagsAttribute"), "Enum/System.FlagsAttribute");
-			Assert.IsTrue (GetType ("/Flags").HasAttribute ("System.FlagsAttribute"), "Flags/System.FlagsAttribute");
+			Assert.IsTrue (GetType (String.Empty).HasAttribute ("NUnit.Framework", "TestFixtureAttribute"), "TypeRocksTest");
+			Assert.IsFalse (GetType ("/Enum").HasAttribute ("System", "FlagsAttribute"), "Enum/System.FlagsAttribute");
+			Assert.IsTrue (GetType ("/Flags").HasAttribute ("System", "FlagsAttribute"), "Flags/System.FlagsAttribute");
 			// fullname is required
-			Assert.IsFalse (GetType ("/Flags").HasAttribute ("System.Flags"), "Flags/System.Flags");
-			Assert.IsFalse (GetType ("/Flags").HasAttribute ("FlagsAttribute"), "Flags/FlagsAttribute");
+			Assert.IsFalse (GetType ("/Flags").HasAttribute ("System", "Flags"), "Flags/System.Flags");
+			Assert.IsFalse (GetType ("/Flags").HasAttribute ("", "FlagsAttribute"), "Flags/FlagsAttribute");
 		}
 
 		[Test]
@@ -204,51 +211,65 @@ namespace Test.Framework.Rocks {
 
 		[Test]
 		[ExpectedException (typeof (ArgumentNullException))]
-		public void Implements_Null ()
+		public void Implements_Namespace_Null ()
+		{
+			GetType (String.Empty).Implements (null, "a");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void Implements_Name_Null ()
 		{
-			GetType (String.Empty).Implements (null);
+			GetType (String.Empty).Implements ("a", null);
 		}
 
 		[Test]
 		public void Implements ()
 		{
-			Assert.IsFalse (GetType (String.Empty).Implements ("System.ICloneable"), "ICloneable");
-			Assert.IsTrue (GetType ("/IDeepCloneable").Implements ("Test.Framework.Rocks.TypeRocksTest/IDeepCloneable"), "itself");
-			Assert.IsTrue (GetType ("/IDeepCloneable").Implements ("System.ICloneable"), "interface inheritance");
-			Assert.IsTrue (GetType ("/Deep").Implements ("Test.Framework.Rocks.TypeRocksTest/IDeepCloneable"), "IDeepCloneable");
-			Assert.IsTrue (GetType ("/Deep").Implements ("System.ICloneable"), "second-level ICloneable");
-			Assert.IsTrue (GetType ("/Mixin").Implements ("Test.Framework.Rocks.TypeRocksTest/IDeepCloneable"), "parent interface inheritance");
+			Assert.IsFalse (GetType (String.Empty).Implements ("System", "ICloneable"), "ICloneable");
+			Assert.IsTrue (GetType ("/IDeepCloneable").Implements ("Test.Framework.Rocks", "TypeRocksTest/IDeepCloneable"), "itself");
+			Assert.IsTrue (GetType ("/IDeepCloneable").Implements ("System", "ICloneable"), "interface inheritance");
+			Assert.IsTrue (GetType ("/Deep").Implements ("Test.Framework.Rocks", "TypeRocksTest/IDeepCloneable"), "IDeepCloneable");
+			Assert.IsTrue (GetType ("/Deep").Implements ("System", "ICloneable"), "second-level ICloneable");
+			Assert.IsTrue (GetType ("/Mixin").Implements ("Test.Framework.Rocks", "TypeRocksTest/IDeepCloneable"), "parent interface inheritance");
 		}
 
 		[Test]
 		[ExpectedException (typeof (ArgumentNullException))]
-		public void Inherits_Null ()
+		public void Inherits_Namespace_Null ()
 		{
-			GetType (String.Empty).Inherits (null);
+			GetType (String.Empty).Inherits (null, "a");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void Inherits_Name_Null ()
+		{
+			GetType (String.Empty).Inherits ("a", null);
 		}
 
 		[Test]
 		public void Inherits ()
 		{
-			Assert.IsFalse (GetType ("/NotAttribute").Inherits ("System.Attribute"), "NotAttribute");
-			Assert.IsTrue (GetType ("/AnAttribute").Inherits ("System.Attribute"), "AnAttribute");
-			Assert.IsFalse (GetType ("/ClassInheritsNotAttribute").Inherits ("System.Attribute"), "ClassInheritsNotAttribute");
-			Assert.IsTrue (GetType ("/AttributeInheritsAnAttribute").Inherits ("System.Attribute"), "AttributeInheritsAnAttribute");
+			Assert.IsFalse (GetType ("/NotAttribute").Inherits ("System", "Attribute"), "NotAttribute");
+			Assert.IsTrue (GetType ("/AnAttribute").Inherits ("System", "Attribute"), "AnAttribute");
+			Assert.IsFalse (GetType ("/ClassInheritsNotAttribute").Inherits ("System", "Attribute"), "ClassInheritsNotAttribute");
+			Assert.IsTrue (GetType ("/AttributeInheritsAnAttribute").Inherits ("System", "Attribute"), "AttributeInheritsAnAttribute");
 		}
 
 		[Test]
 		public void Inherits_FromAnotherAssembly ()
 		{
 			// we can't be sure here so to avoid false positives return false
-			Assert.IsTrue (GetType ("/AttributeInheritsOuterAttribute").Inherits ("System.Attribute"), "AttributeInheritsOuterAttribute");
-			Assert.IsTrue (GetType ("/AttributeInheritsOuterAttributeDerivingAttribute").Inherits ("System.Attribute"), "AttributeInheritsOuterAttributeDerivingAttribute");
+			Assert.IsTrue (GetType ("/AttributeInheritsOuterAttribute").Inherits ("System", "Attribute"), "AttributeInheritsOuterAttribute");
+			Assert.IsTrue (GetType ("/AttributeInheritsOuterAttributeDerivingAttribute").Inherits ("System", "Attribute"), "AttributeInheritsOuterAttributeDerivingAttribute");
 		}
 
 		[Test]
 		public void Inherits_Itself ()
 		{
 			TypeDefinition type = GetType (String.Empty);
-			Assert.IsTrue (type.Inherits (type.FullName), "itself");
+			Assert.IsTrue (type.Inherits (type.Namespace, type.Name), "itself");
 		}
 
 		[Test]
@@ -322,6 +343,50 @@ namespace Test.Framework.Rocks {
 		}
 
 		[Test]
+		public void IsNamed ()
+		{
+			string name = "Test.Framework.Rocks.PublicType";
+			TypeDefinition type = assembly.MainModule.GetType (name);
+
+			Assert.IsTrue (type.IsNamed ( "Test.Framework.Rocks.PublicType"));
+			Assert.IsFalse (type.IsNamed ("Test.Framework.Rocks.P"));//Missing Text
+			Assert.IsFalse (type.IsNamed ("Test.Framework.Rocks.PublicTypeExtraText"));
+
+			Assert.IsTrue (type.IsNamed ("Test.Framework.Rocks", "PublicType"));
+			Assert.IsFalse (type.IsNamed ("Test.Framework.Rocks", "P"));//Missing Text
+			Assert.IsFalse (type.IsNamed ("Test.Framework.Rocks", "PublicTypeExtraText"));
+		}
+
+		[Test]
+		public void IsNamedNestedType ()
+		{
+			string name = "Test.Framework.Rocks.PublicType/NestedPublicType";
+			TypeDefinition type = assembly.MainModule.GetType (name);
+
+			Assert.IsTrue (type.IsNamed ("Test.Framework.Rocks.PublicType/NestedPublicType"));
+			Assert.IsFalse (type.IsNamed ("Test.Framework.Rocks.PublicType/N"));//Missing Text
+			Assert.IsFalse (type.IsNamed ("Test.Framework.Rocks.PublicType/NestedPublicTypeExtaStuff"));
+
+			Assert.IsTrue (type.IsNamed ("Test.Framework.Rocks", "PublicType/NestedPublicType"));
+			Assert.IsFalse (type.IsNamed ("Test.Framework.Rocks", "PublicType/N"));//Missing Text
+			Assert.IsFalse (type.IsNamed ("Test.Framework.Rocks", "PublicType/NestedPublicTypeExtraText"));
+
+			Assert.IsFalse (type.IsNamed ("Test.Framework.Rocks", "NestedPublicType"));
+			Assert.IsFalse (type.IsNamed ("", "NestedPublicType"));
+		}
+
+		[Test]
+		public void IsNamedDoubleNestedType ()
+		{
+			string name = "Test.Framework.Rocks.PublicType/NestedPublicType/NestedNestedPublicType";
+			TypeDefinition type = assembly.MainModule.GetType (name);
+
+			Assert.IsTrue (type.IsNamed ("Test.Framework.Rocks.PublicType/NestedPublicType/NestedNestedPublicType"));
+			
+			Assert.IsTrue (type.IsNamed ("Test.Framework.Rocks", "PublicType/NestedPublicType/NestedNestedPublicType"));
+		}
+
+		[Test]
 		public void IsVisible ()
 		{
 			string name = "Test.Framework.Rocks.PublicType";
diff --git a/gendarme/framework/Test/Makefile.in b/gendarme/framework/Test/Makefile.in
index 7a3413f..eebc133 100644
--- a/gendarme/framework/Test/Makefile.in
+++ b/gendarme/framework/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -196,14 +225,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/framework/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/framework/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/framework/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/framework/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -221,6 +250,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -244,13 +274,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -268,16 +302,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -297,6 +337,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -305,18 +347,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -351,6 +403,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/man/Makefile.in b/gendarme/man/Makefile.in
index ee55615..7e6c436 100644
--- a/gendarme/man/Makefile.in
+++ b/gendarme/man/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,9 +16,27 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,23 +60,49 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES = gendarme.1 gendarme.5 gd2i.1
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 man1dir = $(mandir)/man1
 am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
 man5dir = $(mandir)/man5
 NROFF = nroff
 MANS = $(man_MANS)
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(rules_documentation_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
@@ -120,6 +165,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -133,9 +179,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -218,14 +267,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/man/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/man/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/man/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/man/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -243,119 +292,120 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 gendarme.1: $(top_builddir)/config.status $(srcdir)/gendarme.1.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 gendarme.5: $(top_builddir)/config.status $(srcdir)/gendarme.5.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 gd2i.1: $(top_builddir)/config.status $(srcdir)/gd2i.1.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-install-man1: $(man1_MANS) $(man_MANS)
+install-man1: $(man_MANS)
 	@$(NORMAL_INSTALL)
-	test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
-	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-	for i in $$l2; do \
-	  case "$$i" in \
-	    *.1*) list="$$list $$i" ;; \
-	  esac; \
+	@list1=''; \
+	list2='$(man_MANS)'; \
+	test -n "$(man1dir)" \
+	  && test -n "`echo $$list1$$list2`" \
+	  || exit 0; \
+	echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+	$(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+	{ for i in $$list1; do echo "$$i"; done;  \
+	if test -n "$$list2"; then \
+	  for i in $$list2; do echo "$$i"; done \
+	    | sed -n '/\.1[a-z]*$$/p'; \
+	fi; \
+	} | while read p; do \
+	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; echo "$$p"; \
+	done | \
+	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+	sed 'N;N;s,\n, ,g' | { \
+	list=; while read file base inst; do \
+	  if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+	    echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+	    $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+	  fi; \
 	done; \
-	for i in $$list; do \
-	  if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
-	  else file=$$i; fi; \
-	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-	  case "$$ext" in \
-	    1*) ;; \
-	    *) ext='1' ;; \
-	  esac; \
-	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
-	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-	  echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
-	  $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
-	done
+	for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+	while read files; do \
+	  test -z "$$files" || { \
+	    echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+	    $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+	done; }
+
 uninstall-man1:
 	@$(NORMAL_UNINSTALL)
-	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-	for i in $$l2; do \
-	  case "$$i" in \
-	    *.1*) list="$$list $$i" ;; \
-	  esac; \
-	done; \
-	for i in $$list; do \
-	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-	  case "$$ext" in \
-	    1*) ;; \
-	    *) ext='1' ;; \
-	  esac; \
-	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
-	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-	  echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
-	  rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
-	done
-install-man5: $(man5_MANS) $(man_MANS)
+	@list=''; test -n "$(man1dir)" || exit 0; \
+	files=`{ for i in $$list; do echo "$$i"; done; \
+	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+	  sed -n '/\.1[a-z]*$$/p'; \
+	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+	dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+install-man5: $(man_MANS)
 	@$(NORMAL_INSTALL)
-	test -z "$(man5dir)" || $(MKDIR_P) "$(DESTDIR)$(man5dir)"
-	@list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \
-	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-	for i in $$l2; do \
-	  case "$$i" in \
-	    *.5*) list="$$list $$i" ;; \
-	  esac; \
+	@list1=''; \
+	list2='$(man_MANS)'; \
+	test -n "$(man5dir)" \
+	  && test -n "`echo $$list1$$list2`" \
+	  || exit 0; \
+	echo " $(MKDIR_P) '$(DESTDIR)$(man5dir)'"; \
+	$(MKDIR_P) "$(DESTDIR)$(man5dir)" || exit 1; \
+	{ for i in $$list1; do echo "$$i"; done;  \
+	if test -n "$$list2"; then \
+	  for i in $$list2; do echo "$$i"; done \
+	    | sed -n '/\.5[a-z]*$$/p'; \
+	fi; \
+	} | while read p; do \
+	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; echo "$$p"; \
+	done | \
+	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+	sed 'N;N;s,\n, ,g' | { \
+	list=; while read file base inst; do \
+	  if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+	    echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \
+	    $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \
+	  fi; \
 	done; \
-	for i in $$list; do \
-	  if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
-	  else file=$$i; fi; \
-	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-	  case "$$ext" in \
-	    5*) ;; \
-	    *) ext='5' ;; \
-	  esac; \
-	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
-	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-	  echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \
-	  $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst"; \
-	done
+	for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+	while read files; do \
+	  test -z "$$files" || { \
+	    echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \
+	    $(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \
+	done; }
+
 uninstall-man5:
 	@$(NORMAL_UNINSTALL)
-	@list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \
-	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-	for i in $$l2; do \
-	  case "$$i" in \
-	    *.5*) list="$$list $$i" ;; \
-	  esac; \
-	done; \
-	for i in $$list; do \
-	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-	  case "$$ext" in \
-	    5*) ;; \
-	    *) ext='5' ;; \
-	  esac; \
-	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
-	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-	  echo " rm -f '$(DESTDIR)$(man5dir)/$$inst'"; \
-	  rm -f "$(DESTDIR)$(man5dir)/$$inst"; \
-	done
+	@list=''; test -n "$(man5dir)" || exit 0; \
+	files=`{ for i in $$list; do echo "$$i"; done; \
+	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+	  sed -n '/\.5[a-z]*$$/p'; \
+	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+	dir='$(DESTDIR)$(man5dir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -364,6 +414,19 @@ CTAGS:
 
 
 distdir: $(DISTFILES)
+	@list='$(MANS)'; if test -n "$$list"; then \
+	  list=`for p in $$list; do \
+	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+	  if test -n "$$list" && \
+	    grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+	    echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
+	    echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
+	    exit 1; \
+	  else :; fi; \
+	else :; fi
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -379,13 +442,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -406,10 +473,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -417,6 +489,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -436,6 +509,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -444,18 +519,28 @@ install-data-am: install-man install-rules_documentationDATA
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man: install-man1 install-man5
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -499,6 +584,7 @@ all: gendarme.tree gendarme.zip
 gendarme.zip : gendarme.tree
 gendarme.tree: gendarme.config Makefile
 	mdoc assemble -o gendarme -f man $<
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/man/gendarme.1.in b/gendarme/man/gendarme.1.in
index 0389780..cc1989f 100644
--- a/gendarme/man/gendarme.1.in
+++ b/gendarme/man/gendarme.1.in
@@ -33,8 +33,7 @@ Specify the rule sets and rule settings. Default is 'rules.xml'.
 Specify a rule set from configfile. Defaults to 'default'.
 .TP
 .I "--log file"
-Save the report to the specified file. If none of --log, --xml, or --html are used
-then the report is written to stdout.
+Save the report, as a text file, to the specified file.
 .TP
 .I "--xml file"
 Save the report, formatted as XML, to the specified file.
@@ -42,6 +41,11 @@ Save the report, formatted as XML, to the specified file.
 .I "--html file"
 Save the report, formatted as HTML, to the specified file.
 .TP
+.I "--console"
+Write the defects on stdout. This is the default (implicit) behavior if none of
+--log, --xml, or --html options are specified. If (explicitely) specified then 
+the defects will be shown on both stdout and inside text/xml/html report(s).
+.TP
 .I "--ignore ignore-file"
 Do not report defects listed in the specified file.
 .TP
diff --git a/gendarme/mono-options.ignore b/gendarme/mono-options.ignore
index c48ca1a..aa1799a 100644
--- a/gendarme/mono-options.ignore
+++ b/gendarme/mono-options.ignore
@@ -67,3 +67,15 @@ T: NDesk.Options.OptionSet
 R: Gendarme.Rules.Smells.AvoidCodeDuplicatedInSameClassRule
 T: NDesk.Options.OptionSet
 
+R: Gendarme.Rules.Globalization.PreferStringComparisonOverrideRule
+M: System.String NDesk.Options.OptionSet::GetArgumentName(System.Int32,System.Int32,System.String)
+
+R: Gendarme.Rules.Globalization.PreferIFormatProviderOverrideRule
+M: System.Void NDesk.Options.Option::AddSeparators(System.String,System.Int32,System.Collections.Generic.ICollection`1<System.String>)
+M: System.Boolean NDesk.Options.OptionSet::ParseBundledValue(System.String,System.String,NDesk.Options.OptionContext)
+M: System.Void NDesk.Options.OptionValueCollection::AssertValid(System.Int32)
+M: System.Void NDesk.Options.Option::.ctor(System.String,System.String,System.Int32)
+M: NDesk.Options.OptionValueType NDesk.Options.Option::ParsePrototype()
+M: T NDesk.Options.Option::Parse(System.String,NDesk.Options.OptionContext)
+M: System.Void NDesk.Options.OptionSet::ParseValue(System.String,NDesk.Options.OptionContext)
+
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/AvoidAssemblyVersionMismatchRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/AvoidAssemblyVersionMismatchRule.cs
index 3b2ba33..dc43d09 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/AvoidAssemblyVersionMismatchRule.cs
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/AvoidAssemblyVersionMismatchRule.cs
@@ -25,6 +25,7 @@
 // THE SOFTWARE.
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -61,26 +62,6 @@ namespace Gendarme.Rules.BadPractice {
 	[Solution ("This situation can be confusing once deployed. Make sure both version are identical.")]
 	public class AvoidAssemblyVersionMismatchRule : Rule, IAssemblyRule {
 
-		static bool VersionTryParse (string input, out Version result)
-		{
-			result = null;
-			if (String.IsNullOrEmpty (input))
-				return false;
-
-			try {
-				result = new Version (input);
-				return true;
-			}
-			catch (ArgumentException) {
-				// also cover ArgumentOutOfRangeException
-			}
-			catch (FormatException) {
-			}
-			catch (OverflowException) {
-			}
-			return false;
-		}
-
 		public RuleResult CheckAssembly (AssemblyDefinition assembly)
 		{
 			if (!assembly.HasCustomAttributes)
@@ -100,11 +81,10 @@ namespace Gendarme.Rules.BadPractice {
 				// any attribute without arguments can be skipped
 				if (!ca.HasConstructorArguments)
 					continue;
-				if (ca.AttributeType.FullName != "System.Reflection.AssemblyFileVersionAttribute")
+				if (!ca.AttributeType.IsNamed ("System.Reflection", "AssemblyFileVersionAttribute"))
 					continue;
 
-				// FIXME: replace with Version.TryParse once we upgrade to FX4.0
-				VersionTryParse (ca.ConstructorArguments [0].Value as string, out file_version);
+				Version.TryParse (ca.ConstructorArguments [0].Value as string, out file_version);
 				break;
 			}
 
@@ -127,9 +107,11 @@ namespace Gendarme.Rules.BadPractice {
 			else if (assembly_version.Revision == file_version.Revision)
 				return RuleResult.Success;
 
-			string msg = String.Format ("Assembly version is '{0}' while file version is '{1}'.", assembly_version, file_version);
+			string msg = String.Format (CultureInfo.InvariantCulture,
+				"Assembly version is '{0}' while file version is '{1}'.", assembly_version, file_version);
 			Runner.Report (assembly, s, Confidence.High, msg);
 			return RuleResult.Failure;
 		}
 	}
 }
+
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/AvoidCallingProblematicMethodsRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/AvoidCallingProblematicMethodsRule.cs
index 777cc02..87d00c2 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/AvoidCallingProblematicMethodsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/AvoidCallingProblematicMethodsRule.cs
@@ -27,8 +27,9 @@
 //
 
 using System;
-using System.Reflection;
+using System.Globalization;
 using System.Collections.Generic;
+using System.Reflection;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -100,22 +101,22 @@ namespace Gendarme.Rules.BadPractice {
 		public AvoidCallingProblematicMethodsRule ()
 		{
 			problematicMethods.Add ("Collect", (m, i) => 
-				(m.DeclaringType.FullName == "System.GC") ? Severity.Critical : (Severity?) null);
+				m.DeclaringType.IsNamed ("System", "GC") ? Severity.Critical : (Severity?) null);
 			problematicMethods.Add ("Suspend", (m, i) => 
-				(m.DeclaringType.FullName == "System.Threading.Thread") ? Severity.Medium : (Severity?) null);
+				m.DeclaringType.IsNamed ("System.Threading", "Thread") ? Severity.Medium : (Severity?) null);
 			problematicMethods.Add ("Resume", (m, i) => 
-				(m.DeclaringType.FullName == "System.Threading.Thread") ? Severity.Medium : (Severity?) null);
+				m.DeclaringType.IsNamed ("System.Threading", "Thread") ? Severity.Medium : (Severity?) null);
 			problematicMethods.Add ("DangerousGetHandle", (m, i) => 
-				(m.DeclaringType.FullName == "System.Runtime.InteropServices.SafeHandle") ? Severity.Critical : (Severity?) null);
+				m.DeclaringType.IsNamed ("System.Runtime.InteropServices", "SafeHandle") ? Severity.Critical : (Severity?) null);
 			problematicMethods.Add ("LoadFrom", (m, i) => 
-				(m.DeclaringType.FullName == "System.Reflection.Assembly") ? Severity.High : (Severity?) null);
+				m.DeclaringType.IsNamed ("System.Reflection", "Assembly") ? Severity.High : (Severity?) null);
 			problematicMethods.Add ("LoadFile", (m, i) => 
-				(m.DeclaringType.FullName == "System.Reflection.Assembly") ? Severity.High : (Severity?) null);
+				m.DeclaringType.IsNamed ("System.Reflection", "Assembly") ? Severity.High : (Severity?) null);
 			problematicMethods.Add ("LoadWithPartialName", (m, i) => 
-				(m.DeclaringType.FullName == "System.Reflection.Assembly") ? Severity.High : (Severity?) null);
+				m.DeclaringType.IsNamed ("System.Reflection", "Assembly") ? Severity.High : (Severity?) null);
 			problematicMethods.Add ("InvokeMember", (m, i) => 
-				(m.DeclaringType.FullName != "System.Type") ? (Severity?) null :
-				IsAccessingWithNonPublicModifiers (i) ? Severity.Critical : (Severity?) null);
+				!m.DeclaringType.IsNamed ("System", "Type") ? (Severity?) null :
+					IsAccessingWithNonPublicModifiers (i) ? Severity.Critical : (Severity?) null);
 		}
 
 		private static bool OperandIsNonPublic (BindingFlags operand)
@@ -166,7 +167,8 @@ namespace Gendarme.Rules.BadPractice {
 
 				Severity? severity = IsProblematicCall (instruction);
 				if (severity.HasValue) {
-					string msg = String.Format ("You are calling to {0}, which is a potentially problematic method", 
+					string msg = String.Format (CultureInfo.InvariantCulture,
+						"You are calling to {0}, which is a potentially problematic method", 
 						instruction.Operand);
 					Runner.Report (method, instruction, severity.Value, Confidence.High, msg);
 				}
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/AvoidNullCheckWithAsOperatorRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/AvoidNullCheckWithAsOperatorRule.cs
new file mode 100644
index 0000000..26394d9
--- /dev/null
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/AvoidNullCheckWithAsOperatorRule.cs
@@ -0,0 +1,141 @@
+//
+// Gendarme.Rules.BadPractice.AvoidNullCheckWithAsOperatorRule
+//
+// Authors:
+//	Sebastien Pouliot <sebastien at ximian.com>
+//
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Mono.Cecil;
+using Mono.Cecil.Cil;
+
+using Gendarme.Framework;
+using Gendarme.Framework.Engines;
+using Gendarme.Framework.Helpers;
+using Gendarme.Framework.Rocks;
+
+namespace Gendarme.Rules.BadPractice {
+
+	/// <summary>
+	/// The rule will detect if a null check is done before using the <c>as</c> operator. 
+	/// This null check is not needed, a <c>null</c> instance will return <c>null</c>,
+	/// and the code will need to deal with <c>as</c> returning a null value anyway.
+	/// </summary>
+	/// <example>
+	/// Bad example:
+	/// <code>
+	/// public string AsString (object obj)
+	/// {
+	///	return (o == null) ? null : o as string;
+	/// }
+	/// </code>
+	/// </example>
+	/// <example>
+	/// Good example:
+	/// <code>
+	/// public string AsString (object obj)
+	/// {
+	///	return (o as string);
+	/// }
+	/// </code>
+	/// </example>
+	// as suggested in https://bugzilla.novell.com/show_bug.cgi?id=651305
+	[Problem ("An unneeded null check is done before using the 'as' operator.")]
+	[Solution ("Remove the extraneous null check")]
+	[EngineDependency (typeof (OpCodeEngine))]
+	public class AvoidNullCheckWithAsOperatorRule : Rule, IMethodRule {
+
+		OpCodeBitmask mask = new OpCodeBitmask (0x100000, 0x10000000000000, 0x0, 0x0);
+
+		static bool CheckFalseBranch (Instruction ins)
+		{
+			Instruction next = ins.Next;
+			if (!next.Is (ins.Previous.OpCode.Code))
+				return false;
+
+			if (!(ins.Operand as Instruction).Is (Code.Ldnull))
+				return false;
+
+			return CheckIsinst (next.Next);
+		}
+
+		static bool CheckTrueBranch (Instruction ins)
+		{
+			if (!ins.Next.Is (Code.Ldnull))
+				return false;
+
+			Instruction br = (ins.Operand as Instruction);
+			if (ins.Previous.OpCode.Code != br.OpCode.Code)
+				return false;
+
+			return CheckIsinst (br.Next);
+		}
+
+		static bool CheckIsinst (Instruction ins)
+		{
+			if (!ins.Is (Code.Isinst))
+				return false;
+			return (ins.Next.OpCode.FlowControl != FlowControl.Cond_Branch);
+		}
+
+		public RuleResult CheckMethod (MethodDefinition method)
+		{
+			// rule only applies to methods with IL...
+			if (!method.HasBody)
+				return RuleResult.DoesNotApply;
+
+			// and when the IL contains both a isinst and ldnull
+			if (!mask.IsSubsetOf (OpCodeEngine.GetBitmask (method)))
+				return RuleResult.DoesNotApply;
+
+			foreach (Instruction ins in method.Body.Instructions) {
+				bool detected = false;
+				switch (ins.OpCode.Code) {
+				case Code.Brfalse_S:
+				case Code.Brfalse:
+					detected = CheckFalseBranch (ins);
+					break;
+				case Code.Brtrue_S:
+				case Code.Brtrue:
+					detected = CheckTrueBranch (ins);
+					break;
+				}
+				if (detected)
+					Runner.Report (method, ins, Severity.Medium, Confidence.Normal);
+			}
+
+			return Runner.CurrentRuleResult;
+		}
+#if false
+		public void Bitmask ()
+		{
+			OpCodeBitmask mask = new OpCodeBitmask ();
+			mask.Set (Code.Isinst);
+			mask.Set (Code.Ldnull);
+			Console.WriteLine (mask);
+		}
+#endif
+	}
+}
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/AvoidVisibleConstantFieldRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/AvoidVisibleConstantFieldRule.cs
index 0831682..c18be47 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/AvoidVisibleConstantFieldRule.cs
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/AvoidVisibleConstantFieldRule.cs
@@ -24,6 +24,8 @@
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
+using System.Globalization;
+
 using Mono.Cecil;
 using Mono.Cecil.Cil;
 
@@ -80,11 +82,12 @@ namespace Gendarme.Rules.BadPractice {
 
 				// we let null constant for all reference types (since they can't be changed to anything else)
 				// except for strings (which can be modified later)
-				string type_name = field.FieldType.FullName;
-				if (!field.FieldType.IsValueType && (type_name != "System.String"))
+				TypeReference ftype = field.FieldType;
+				if (!ftype.IsValueType && !ftype.IsNamed ("System", "String"))
 					continue;
 
-				string msg = string.Format ("'{0}' of type {1}.", field.Name, type_name);
+				string msg = string.Format (CultureInfo.InvariantCulture, "'{0}' of type {1}.", 
+					field.Name, ftype.GetFullName ());
 				Runner.Report (field, Severity.High, Confidence.High, msg);
 
 			}
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/CheckNewExceptionWithoutThrowingRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/CheckNewExceptionWithoutThrowingRule.cs
index e40aed6..183a18c 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/CheckNewExceptionWithoutThrowingRule.cs
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/CheckNewExceptionWithoutThrowingRule.cs
@@ -96,7 +96,7 @@ namespace Gendarme.Rules.BadPractice {
 
 				MethodReference constructor = (MethodReference) ins.Operand;
 
-				if (!constructor.DeclaringType.Inherits ("System.Exception"))
+				if (!constructor.DeclaringType.Inherits ("System", "Exception"))
 					continue;
 
 				// quick check to save resources
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/CheckNewThreadWithoutStartRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/CheckNewThreadWithoutStartRule.cs
index 3f01bb1..ac0c146 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/CheckNewThreadWithoutStartRule.cs
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/CheckNewThreadWithoutStartRule.cs
@@ -110,8 +110,6 @@ namespace Gendarme.Rules.BadPractice {
 			return false;
 		}
 
-		private const string Thread = "System.Threading.Thread";
-
 		public override void Initialize (IRunner runner)
 		{
 			base.Initialize (runner);
@@ -119,8 +117,10 @@ namespace Gendarme.Rules.BadPractice {
 			// if the module does not reference (sealed) System.Threading.Thread 
 			// then no code inside the module will instanciate it
 			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				Active = (e.CurrentAssembly.Name.Name == "mscorlib") ||
-					e.CurrentModule.HasTypeReference (Thread);
+				Active = (e.CurrentAssembly.Name.Name == "mscorlib" ||
+					e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+						return tr.IsNamed ("System.Threading", "Thread");
+					}));
 			};
 		}
 
@@ -141,11 +141,11 @@ namespace Gendarme.Rules.BadPractice {
 
 				MethodReference constructor = (MethodReference) ins.Operand;
 
-				if (constructor.DeclaringType.FullName != Thread)
+				if (!constructor.DeclaringType.IsNamed ("System.Threading", "Thread"))
 					continue;
 				if (ins.Next != null && (ins.Next.OpCode.Code == Code.Call || ins.Next.OpCode.Code == Code.Callvirt)) { //quick check to safe resources
 					MethodReference calledMethod = (MethodReference) ins.Next.Operand;
-					if ((calledMethod.DeclaringType.FullName == Thread) && (calledMethod.Name == "Start"))
+					if (calledMethod.IsNamed ("System.Threading", "Thread", "Start"))
 						continue;
 				}
 
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/CloneMethodShouldNotReturnNullRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/CloneMethodShouldNotReturnNullRule.cs
index eff7ae0..e740a02 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/CloneMethodShouldNotReturnNullRule.cs
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/CloneMethodShouldNotReturnNullRule.cs
@@ -69,8 +69,6 @@ namespace Gendarme.Rules.BadPractice {
 	[Solution ("Return an appropriate object instead of returning null.")]
 	public class CloneMethodShouldNotReturnNullRule : ReturnNullRule, IMethodRule {
 
-		private const string ICloneable = "System.ICloneable";
-
 		public override void Initialize (IRunner runner)
 		{
 			base.Initialize (runner);
@@ -78,8 +76,10 @@ namespace Gendarme.Rules.BadPractice {
 			// if the module does not reference System.ICloneable then
 			// no type inside will be implementing it
 			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				Active = (e.CurrentAssembly.Name.Name == "mscorlib") ||
-					e.CurrentModule.HasTypeReference (ICloneable);
+				Active = (e.CurrentAssembly.Name.Name == "mscorlib" ||
+					e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+						return tr.IsNamed ("System", "ICloneable");
+					}));
 			};
 		}
 
@@ -90,7 +90,7 @@ namespace Gendarme.Rules.BadPractice {
 				return RuleResult.DoesNotApply;
 
 			// where the type implements ICloneable
-			if (!method.DeclaringType.Implements (ICloneable))
+			if (!method.DeclaringType.Implements ("System", "ICloneable"))
 				return RuleResult.DoesNotApply;
 
 			// call base class to detect if the method can return null
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/ConstructorShouldNotCallVirtualMethodsRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/ConstructorShouldNotCallVirtualMethodsRule.cs
index d3758bb..7f47cf5 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/ConstructorShouldNotCallVirtualMethodsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/ConstructorShouldNotCallVirtualMethodsRule.cs
@@ -28,6 +28,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 using System.Linq;
 
 using Mono.Cecil;
@@ -177,7 +178,7 @@ namespace Gendarme.Rules.BadPractice {
 						if (mr.HasThis)
 							parameters++;
 						parameters += mr.Parameters.Count;
-						if (mr.ReturnType.FullName != "System.Void")
+						if (!mr.ReturnType.IsNamed ("System", "Void"))
 							parameters--;
 					}
 					break;
@@ -196,7 +197,7 @@ namespace Gendarme.Rules.BadPractice {
 			if (!OpCodeBitmask.Calls.Intersect (OpCodeEngine.GetBitmask (method)))
 				return;
 
-			string method_name = method.ToString ();
+			string method_name = method.GetFullName ();
 			// check to avoid constructors calling recursive methods
 			if (stack.Contains (method_name))
 				return;
@@ -216,12 +217,14 @@ namespace Gendarme.Rules.BadPractice {
 						continue;
 
 					// check that we're not calling the method on another object
-					if (!IsCallFromInstance (current.Previous, md.Parameters.Count))
+					int n = md.HasParameters ? md.Parameters.Count : 0;
+					if (!IsCallFromInstance (current.Previous, n))
 						continue;
 
 					if (md.IsVirtual && !md.IsFinal) {
 						string s = stack.Count == 0 ? method_name : stack.Aggregate ((a1, a2) => a1 + ", " + Environment.NewLine + a2);
-						s = String.Format ("Calling a virtual method, '{0}' from {1}.", md, s);
+						s = String.Format (CultureInfo.InvariantCulture,
+							"Calling a virtual method, '{0}' from {1}.", md, s);
 						Runner.Report (method, current, Severity.High, Confidence.High, s);
 					} else {
 						stack.Push (method_name);
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/DisableDebuggingCodeRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/DisableDebuggingCodeRule.cs
index f1c6049..9534ca5 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/DisableDebuggingCodeRule.cs
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/DisableDebuggingCodeRule.cs
@@ -89,9 +89,6 @@ namespace Gendarme.Rules.BadPractice {
 	[EngineDependency (typeof (OpCodeEngine))]
 	public class DisableDebuggingCodeRule : Rule, IMethodRule {
 
-		private const string ConditionalAttribute = "System.Diagnostics.ConditionalAttribute";
-		private const string Console = "System.Console";
-
 		// note: there can be multiple [Conditional] attribute on a method
 		private static bool HasConditionalAttributeForDebugging (IList<CustomAttribute> cac)
 		{
@@ -101,7 +98,7 @@ namespace Gendarme.Rules.BadPractice {
 				// any attribute without arguments can be skipped
 				if (!ca.HasConstructorArguments)
 					continue;
-				if (ca.AttributeType.FullName == ConditionalAttribute) {
+				if (ca.AttributeType.IsNamed ("System.Diagnostics", "ConditionalAttribute")) {
 					switch (ca.ConstructorArguments [0].Value as string) {
 					case "DEBUG":
 					case "TRACE":
@@ -126,7 +123,9 @@ namespace Gendarme.Rules.BadPractice {
 					// if the module does not reference System.Console then no
 					// method inside it will be calling any Console.write* methods
 					(e.CurrentAssembly.Name.Name == "mscorlib" ||
-					e.CurrentModule.HasTypeReference (Console));
+					e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+						return tr.IsNamed ("System", "Console");
+					}));
 			};
 		}
 
@@ -152,8 +151,12 @@ namespace Gendarme.Rules.BadPractice {
 					continue;
 
 				// ... to System.Console ...
-				MethodReference mr = (ins.Operand as MethodReference);
-				if (mr.DeclaringType.FullName != Console)
+				MethodReference mr = ins.Operand as MethodReference;
+                
+		                if (mr == null)
+               				continue;
+
+				if (!mr.DeclaringType.IsNamed ("System", "Console"))
 					continue;
 
 				// ... Write* methods
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/DoNotDecreaseVisibilityRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/DoNotDecreaseVisibilityRule.cs
new file mode 100644
index 0000000..4b387df
--- /dev/null
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/DoNotDecreaseVisibilityRule.cs
@@ -0,0 +1,124 @@
+// 
+// Gendarme.Rules.BadPractice.DoNotDecreaseVisibilityRule
+//
+// Authors:
+//	Sebastien Pouliot <sebastien at ximian.com>
+//
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using Mono.Cecil;
+
+using Gendarme.Framework;
+using Gendarme.Framework.Rocks;
+
+namespace Gendarme.Rules.BadPractice {
+
+	/// <summary>
+	/// The rule detect when a method visibility is decreased in an inherited type. 
+	/// Decreasing visibility does not prevent calling the base class method unless 
+	/// the type is <c>sealed</c>. Note that some language (but not C#) will allow 
+	/// you to seal, e.g. <c>final</c>, the method without an <c>override</c>.
+	/// </summary>
+	/// <example>
+	/// Bad example:
+	/// <code>
+	/// public class Base {
+	///	public void Public ()
+	///	{
+	///	}
+	/// }
+	/// 
+	/// public class BadInheritor : Base {
+	/// 	private new void Public ()
+	/// 	{
+	/// 	}
+	/// }
+	/// </code>
+	/// </example>
+	/// <example>
+	/// Good example (do not hide):
+	/// <code>
+	/// public class Inheritor : Base {
+	/// }
+	/// </code>
+	/// </example>
+	/// <example>
+	/// Good example (sealed type):
+	/// <code>
+	/// public sealed class Inheritor : Base {
+	/// 	private new void Public ()
+	/// 	{
+	/// 	}
+	/// }
+	/// </code>
+	/// </example>
+	[Problem ("A private method is hiding a visible method from a base type")]
+	[Solution ("Either seal the inherited type or rename/remove the private method.")]
+	[FxCopCompatibility ("Microsoft.Usage", "CA2222:DoNotDecreaseInheritedMemberVisibility")]
+	public class DoNotDecreaseVisibilityRule : Rule, IMethodRule {
+
+		static bool IsHiding (MethodDefinition method, TypeReference type)
+		{
+			if (type == null)
+				return false;
+
+			TypeDefinition td = type.Resolve ();
+			if ((td != null) && td.HasMethods) {
+				string name = method.Name;
+				foreach (MethodDefinition md in td.Methods) {
+					if (!md.IsPublic && !md.IsFamily)
+						continue;
+					if (name != md.Name)
+						continue;
+					if (method.CompareSignature (md))
+						return true;
+				}
+			}
+
+			return IsHiding (method, type.DeclaringType);
+		}
+
+		public RuleResult CheckMethod (MethodDefinition method)
+		{
+			if (!method.IsPrivate || method.IsFinal)
+				return RuleResult.DoesNotApply;
+
+			TypeDefinition type = method.DeclaringType;
+			if (type.IsSealed)
+				return RuleResult.DoesNotApply;
+
+			// we got a private, non-final, method in an unsealed type
+
+			// note: unlike CSC, MCS does not mark .cctor with hidebysig
+			// this also covers a private default ctor inheriting from System.Object
+			if (method.IsConstructor && !method.HasParameters)
+				return RuleResult.Success;
+
+			// are we're hiding something ?
+			if (method.IsHideBySig && !IsHiding (method, type.BaseType))
+				return RuleResult.Success;
+
+			Runner.Report (method, Severity.High, Confidence.Normal);
+			return RuleResult.Failure;
+		}
+	}
+}
+
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/DoNotForgetNotImplementedMethodsRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/DoNotForgetNotImplementedMethodsRule.cs
index d90a8b3..c4ce839 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/DoNotForgetNotImplementedMethodsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/DoNotForgetNotImplementedMethodsRule.cs
@@ -93,7 +93,7 @@ namespace Gendarme.Rules.BadPractice {
 				if (inst.OpCode.Code != Code.Newobj)
 					continue;
 				MethodReference ctor = (MethodReference) inst.Operand;
-				if ("System.NotImplementedException" != ctor.DeclaringType.FullName)
+				if (!ctor.DeclaringType.IsNamed ("System", "NotImplementedException"))
 					continue;
 				if (inst.Next.OpCode.Code != Code.Throw)
 					continue;
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/DoNotUseEnumIsAssignableFromRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/DoNotUseEnumIsAssignableFromRule.cs
index dd6280e..5fd5d90 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/DoNotUseEnumIsAssignableFromRule.cs
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/DoNotUseEnumIsAssignableFromRule.cs
@@ -99,7 +99,7 @@ namespace Gendarme.Rules.BadPractice {
 			if (type == null)
 				return false;
 
-			return type.FullName == "System.Enum";
+			return type.IsNamed ("System", "Enum");
 		}
 
 		static bool IsCallToTypeIsAssignableFrom (Instruction instruction)
@@ -124,10 +124,7 @@ namespace Gendarme.Rules.BadPractice {
 			if (operand.Name != name)
 				return false;
 
-			if (operand.DeclaringType.FullName != "System.Type")
-				return false;
-
-			return true;
+			return operand.DeclaringType.IsNamed ("System", "Type");
 		}
 
 		static bool IsCall (OpCode opcode)
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/DoNotUseGetInterfaceToCheckAssignabilityRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/DoNotUseGetInterfaceToCheckAssignabilityRule.cs
index 05edf49..a94bf42 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/DoNotUseGetInterfaceToCheckAssignabilityRule.cs
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/DoNotUseGetInterfaceToCheckAssignabilityRule.cs
@@ -86,7 +86,7 @@ namespace Gendarme.Rules.BadPractice {
 				MethodReference call = (ins.Operand as MethodReference);
 				if (call.Name != "GetInterface")
 					continue;
-				if (!call.DeclaringType.Inherits ("System.Type")) // not a sealed type
+				if (!call.DeclaringType.Inherits ("System", "Type")) // not a sealed type
 					continue;
 
 				// check for a null compare
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/Gendarme.Rules.BadPractice.csproj b/gendarme/rules/Gendarme.Rules.BadPractice/Gendarme.Rules.BadPractice.csproj
index 0b595dc..2841537 100755
--- a/gendarme/rules/Gendarme.Rules.BadPractice/Gendarme.Rules.BadPractice.csproj
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/Gendarme.Rules.BadPractice.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Gendarme.Rules.BadPractice</RootNamespace>
     <AssemblyName>Gendarme.Rules.BadPractice</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -24,6 +44,7 @@
     <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.BadPractice.xml</DocumentationFile>
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -35,6 +56,7 @@
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
     <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.BadPractice.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -80,6 +102,23 @@
       <Name>Gendarme.Framework</Name>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/GetEntryAssemblyMayReturnNullRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/GetEntryAssemblyMayReturnNullRule.cs
index 3719234..5dc1626 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/GetEntryAssemblyMayReturnNullRule.cs
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/GetEntryAssemblyMayReturnNullRule.cs
@@ -70,8 +70,6 @@ namespace Gendarme.Rules.BadPractice {
 	[EngineDependency (typeof (OpCodeEngine))]
 	public class GetEntryAssemblyMayReturnNullRule : Rule, IMethodRule {
 
-		private const string Assembly = "System.Reflection.Assembly";
-
 		public override void Initialize (IRunner runner)
 		{
 			base.Initialize (runner);
@@ -81,13 +79,20 @@ namespace Gendarme.Rules.BadPractice {
 					// GetEntryAssembly will work inside executables
 					e.CurrentAssembly.EntryPoint == null &&
 					
-					// if the module does not reference System.Reflection.Assembly 
-					// then no method inside it will be calling GetEntryAssembly
+					// if the module does not reference System.Reflection.Assembly.GetEntryAssembly
+					// then there's no point in enabling the rule
 					(e.CurrentAssembly.Name.Name == "mscorlib" ||
-					e.CurrentModule.HasTypeReference (Assembly));
+					e.CurrentModule.AnyMemberReference ((MemberReference mr) => {
+						return IsGetEntryAssembly (mr);
+					}));
 			};
 		}
 
+		static bool IsGetEntryAssembly (MemberReference method)
+		{
+			return method.IsNamed ("System.Reflection", "Assembly", "GetEntryAssembly");
+		}
+
 		public RuleResult CheckMethod (MethodDefinition method)
 		{
 			// rule doesn't not apply to methods without code (e.g. p/invokes)
@@ -108,11 +113,8 @@ namespace Gendarme.Rules.BadPractice {
 				switch (current.OpCode.Code) {
 				case Code.Call:
 				case Code.Callvirt:
-					MethodReference mr = (current.Operand as MethodReference);
-					if ((mr != null) && (mr.Name == "GetEntryAssembly")
-						&& (mr.DeclaringType.FullName == Assembly)) {
-						Runner.Report (method, current, Severity.Medium, Confidence.Total, String.Empty);
-					}
+					if (IsGetEntryAssembly (current.Operand as MethodReference))
+						Runner.Report (method, current, Severity.Medium, Confidence.Total);
 					break;
 				}
 			}
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/Makefile.am b/gendarme/rules/Gendarme.Rules.BadPractice/Makefile.am
index 5dc3f47..5237708 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/Makefile.am
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/Makefile.am
@@ -3,12 +3,14 @@ include ../common.make
 rules_sources =  \
 	AvoidAssemblyVersionMismatchRule.cs \
 	AvoidCallingProblematicMethodsRule.cs \
+	AvoidNullCheckWithAsOperatorRule.cs \
 	AvoidVisibleConstantFieldRule.cs \
 	CheckNewExceptionWithoutThrowingRule.cs \
 	CheckNewThreadWithoutStartRule.cs \
 	CloneMethodShouldNotReturnNullRule.cs \
 	ConstructorShouldNotCallVirtualMethodsRule.cs \
 	DisableDebuggingCodeRule.cs \
+	DoNotDecreaseVisibilityRule.cs \
 	DoNotForgetNotImplementedMethodsRule.cs \
 	DoNotUseEnumIsAssignableFromRule.cs \
 	DoNotUseGetInterfaceToCheckAssignabilityRule.cs \
@@ -27,12 +29,14 @@ rules_sources =  \
 
 tests_sources = \
 	AvoidAssemblyVersionMismatchTest.cs \
-	AvoidVisibleConstantFieldTest.cs \
 	AvoidCallingProblematicMethodsTest.cs \
+	AvoidNullCheckWithAsOperatorTest.cs \
+	AvoidVisibleConstantFieldTest.cs \
 	CheckNewExceptionWithoutThrowingTest.cs \
 	CheckNewThreadWithoutStartTest.cs \
 	CloneMethodShouldNotReturnNullTest.cs \
 	ConstructorShouldNotCallVirtualMethodsTest.cs \
+	DoNotDecreaseVisibilityTest.cs \
 	DoNotForgetNotImplementedMethodsTest.cs \
 	DoNotUseEnumIsAssignableFromTest.cs \
 	DoNotUseGetInterfaceToCheckAssignabilityTest.cs \
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/Makefile.in b/gendarme/rules/Gendarme.Rules.BadPractice/Makefile.in
index 4a70043..9c13948 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(rules_categorydir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
-rules_categorySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(rules_category_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,20 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(rules_documentation_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -130,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -253,12 +329,14 @@ tests_build_sources = $(addprefix $(srcdir)/Test/, $(tests_sources))
 rules_sources = \
 	AvoidAssemblyVersionMismatchRule.cs \
 	AvoidCallingProblematicMethodsRule.cs \
+	AvoidNullCheckWithAsOperatorRule.cs \
 	AvoidVisibleConstantFieldRule.cs \
 	CheckNewExceptionWithoutThrowingRule.cs \
 	CheckNewThreadWithoutStartRule.cs \
 	CloneMethodShouldNotReturnNullRule.cs \
 	ConstructorShouldNotCallVirtualMethodsRule.cs \
 	DisableDebuggingCodeRule.cs \
+	DoNotDecreaseVisibilityRule.cs \
 	DoNotForgetNotImplementedMethodsRule.cs \
 	DoNotUseEnumIsAssignableFromRule.cs \
 	DoNotUseGetInterfaceToCheckAssignabilityRule.cs \
@@ -277,12 +355,14 @@ rules_sources = \
 
 tests_sources = \
 	AvoidAssemblyVersionMismatchTest.cs \
-	AvoidVisibleConstantFieldTest.cs \
 	AvoidCallingProblematicMethodsTest.cs \
+	AvoidNullCheckWithAsOperatorTest.cs \
+	AvoidVisibleConstantFieldTest.cs \
 	CheckNewExceptionWithoutThrowingTest.cs \
 	CheckNewThreadWithoutStartTest.cs \
 	CloneMethodShouldNotReturnNullTest.cs \
 	ConstructorShouldNotCallVirtualMethodsTest.cs \
+	DoNotDecreaseVisibilityTest.cs \
 	DoNotForgetNotImplementedMethodsTest.cs \
 	DoNotUseEnumIsAssignableFromTest.cs \
 	DoNotUseGetInterfaceToCheckAssignabilityTest.cs \
@@ -306,14 +386,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.BadPractice/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.BadPractice/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.BadPractice/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.BadPractice/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -323,6 +403,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../common.make $(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -331,42 +412,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-rules_categorySCRIPTS: $(rules_category_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_categorydir)" || $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)"
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_categorydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(rules_categorySCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	    $(rules_categorySCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rules_categorydir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rules_categorydir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-rules_categorySCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	done
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(rules_categorydir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -375,7 +477,7 @@ uninstall-rules_documentationDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -392,7 +494,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -400,7 +502,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -426,16 +528,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -443,14 +545,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -462,7 +564,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -471,29 +573,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -514,29 +621,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -559,10 +678,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -570,6 +694,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -589,6 +714,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -598,18 +725,28 @@ install-data-am: install-rules_categorySCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -631,8 +768,8 @@ ps-am:
 uninstall-am: uninstall-rules_categorySCRIPTS \
 	uninstall-rules_documentationDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -652,11 +789,11 @@ uninstall-am: uninstall-rules_categorySCRIPTS \
 
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -665,7 +802,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
@@ -685,6 +822,7 @@ $(rules_doc_source):
 
 clean-local:
 	rm -fr doc
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/ObsoleteMessagesShouldNotBeEmptyRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/ObsoleteMessagesShouldNotBeEmptyRule.cs
index da0fdd5..33e5802 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/ObsoleteMessagesShouldNotBeEmptyRule.cs
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/ObsoleteMessagesShouldNotBeEmptyRule.cs
@@ -70,8 +70,6 @@ namespace Gendarme.Rules.BadPractice {
 	[FxCopCompatibility ("Microsoft.Design", "CA1041:ProvideObsoleteAttributeMessage")]
 	public class ObsoleteMessagesShouldNotBeEmptyRule : Rule, ITypeRule {
 
-		private const string ObsoleteAttribute = "System.ObsoleteAttribute";
-
 		public override void Initialize (IRunner runner)
 		{
 			base.Initialize (runner);
@@ -79,8 +77,10 @@ namespace Gendarme.Rules.BadPractice {
 			// if the module does not have a reference to System.ObsoleteAttribute 
 			// then nothing will be marked as obsolete inside it
 			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				Active = (e.CurrentAssembly.Name.Name == "mscorlib") ||
-					e.CurrentModule.HasTypeReference (ObsoleteAttribute);
+				Active = (e.CurrentAssembly.Name.Name == "mscorlib" ||
+					e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+						return tr.IsNamed ("System", "ObsoleteAttribute");
+					}));
 			};
 		}
 
@@ -92,7 +92,7 @@ namespace Gendarme.Rules.BadPractice {
 			foreach (CustomAttribute ca in cap.CustomAttributes) {
 				// ObsoleteAttribute has a three (3) ctors, including a default (parameter-less) ctor
 				// http://msdn.microsoft.com/en-us/library/68k270ch.aspx
-				if (ca.AttributeType.FullName != ObsoleteAttribute)
+				if (!ca.AttributeType.IsNamed ("System", "ObsoleteAttribute"))
 					continue;
 
 				// note: we don't have to check fields since they cannot be used
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/OnlyUseDisposeForIDisposableTypesRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/OnlyUseDisposeForIDisposableTypesRule.cs
index 0425323..9647199 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/OnlyUseDisposeForIDisposableTypesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/OnlyUseDisposeForIDisposableTypesRule.cs
@@ -94,9 +94,9 @@ namespace Gendarme.Rules.BadPractice {
 
 			Log.WriteLine (this);
 			Log.WriteLine (this, "----------------------------------");
-			Log.WriteLine (this, type.FullName);
+			Log.WriteLine (this, type);
 			
-			if (!type.Implements ("System.IDisposable")) {
+			if (!type.Implements ("System", "IDisposable")) {
 				Log.WriteLine (this, "type does not implement IDisposable");
 
 				foreach (MethodDefinition method in type.Methods.Where (m => m.Name == "Dispose"))
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/PreferEmptyInstanceOverNullRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/PreferEmptyInstanceOverNullRule.cs
index 5c16da9..c6cbebc 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/PreferEmptyInstanceOverNullRule.cs
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/PreferEmptyInstanceOverNullRule.cs
@@ -25,6 +25,7 @@
 // THE SOFTWARE.
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -146,9 +147,9 @@ namespace Gendarme.Rules.BadPractice {
 
 			//only apply to methods returning string, array, or IEnumerable-impl
 			return_type = method.ReturnType;
-			string_return_type = (return_type.FullName == "System.String");
+			string_return_type = return_type.IsNamed ("System", "String");
 			array_return_type = return_type.IsArray;
-			ienumerable_return_type = return_type.Implements ("System.Collections.IEnumerable");
+			ienumerable_return_type = return_type.Implements ("System.Collections", "IEnumerable");
 
 			if (!string_return_type && !array_return_type && !ienumerable_return_type)
 				return RuleResult.DoesNotApply;
@@ -158,7 +159,7 @@ namespace Gendarme.Rules.BadPractice {
 
 		protected override void Report (MethodDefinition method, Instruction ins)
 		{
-			string msg = string.Format ("Replace null with {0}.", SuggestReturnType ());
+			string msg = String.Format (CultureInfo.InvariantCulture, "Replace null with {0}.", SuggestReturnType ());
 			Runner.Report (method, ins, method.IsVisible () ? Severity.Medium : Severity.Low, Confidence.Normal, msg);
 		}
 
@@ -167,7 +168,7 @@ namespace Gendarme.Rules.BadPractice {
 			if (string_return_type)
 				return "string.Empty";
 			else if (array_return_type)
-				return string.Format ("an empty {0} array", return_type.Name);
+				return String.Format (CultureInfo.InvariantCulture, "an empty {0} array", return_type.Name);
 			else if (ienumerable_return_type)
 				return "yield break (or equivalent)";
 			return "an empty collection";
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/PreferParamsArrayForVariableArgumentsRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/PreferParamsArrayForVariableArgumentsRule.cs
index 10751fd..c048420 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/PreferParamsArrayForVariableArgumentsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/PreferParamsArrayForVariableArgumentsRule.cs
@@ -83,7 +83,9 @@ namespace Gendarme.Rules.BadPractice {
 
 			Runner.AnalyzeModule += (object o, RunnerEventArgs e) => {
 				Active = (e.CurrentAssembly.Name.Name == "mscorlib" ||
-				e.CurrentModule.HasTypeReference ("System.ArgIterator"));
+					e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+						return tr.IsNamed ("System", "ArgIterator");
+					}));
 			};
 		}
 
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/PreferSafeHandleRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/PreferSafeHandleRule.cs
index f87ac97..6d93dcc 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/PreferSafeHandleRule.cs
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/PreferSafeHandleRule.cs
@@ -186,9 +186,12 @@ namespace Gendarme.Rules.BadPractice {
 		static FieldDefinition FindIntPtr (TypeDefinition type)
 		{
 			foreach (FieldDefinition field in type.Fields) {
-				string name = field.FieldType.FullName;
-				if (name == "System.IntPtr" || name == "System.UIntPtr")
-					return field;
+				TypeReference ftype = field.FieldType;
+				if (ftype.Namespace == "System") {
+					string name = ftype.Name;
+					if ((name == "IntPtr") || (name == "UIntPtr"))
+						return field;
+				}
 			}
 			
 			return null;
@@ -212,7 +215,7 @@ namespace Gendarme.Rules.BadPractice {
 
 			Log.WriteLine (this);
 			Log.WriteLine (this, "----------------------------------");
-			Log.WriteLine (this, type.FullName);
+			Log.WriteLine (this, type);
 						
 			FieldDefinition field = FindIntPtr (type);
 			if (field != null) {
@@ -222,7 +225,7 @@ namespace Gendarme.Rules.BadPractice {
 				if (finalizer != null) 
 					confidence = (Confidence) ((int) confidence - 1);	// lower numbers have higher confidence
 
-				if (type.Implements ("System.IDisposable"))
+				if (type.Implements ("System", "IDisposable"))
 					confidence = (Confidence) ((int) confidence - 1);
 
 				Log.WriteLine (this, "'{0}' is an IntPtr.", field.Name);
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/PreferTryParseRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/PreferTryParseRule.cs
index 432c9ba..7856cdb 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/PreferTryParseRule.cs
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/PreferTryParseRule.cs
@@ -118,6 +118,7 @@ namespace Gendarme.Rules.BadPractice {
 		static bool HasTryParseMethod (TypeDefinition type)
 		{
 			bool present = false;
+
 			if (!has_try_parse.TryGetValue (type, out present)) {
 				foreach (MethodReference method in type.Methods) {
 					if (MethodSignatures.TryParse.Matches (method)) {
@@ -162,7 +163,8 @@ namespace Gendarme.Rules.BadPractice {
 				if (!MethodSignatures.Parse.Matches (mr))
 					continue;
 
-				if (!HasTryParseMethod (mr.DeclaringType.Resolve ()))
+				TypeDefinition declaringType = mr.DeclaringType.Resolve();
+				if (declaringType != null && !HasTryParseMethod(declaringType))
 					continue;
 				
 				// if inside a try (catch/finally) block then...
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/Test/AvoidNullCheckWithAsOperatorTest.cs b/gendarme/rules/Gendarme.Rules.BadPractice/Test/AvoidNullCheckWithAsOperatorTest.cs
new file mode 100644
index 0000000..65f9d50
--- /dev/null
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/Test/AvoidNullCheckWithAsOperatorTest.cs
@@ -0,0 +1,142 @@
+//
+// Unit Tests for AvoidNullCheckWithAsOperatorRule
+//
+// Authors:
+//	Sebastien Pouliot <sebastien at ximian.com>
+//
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using Gendarme.Rules.BadPractice;
+
+using NUnit.Framework;
+using Test.Rules.Definitions;
+using Test.Rules.Fixtures;
+
+namespace Test.Rules.BadPractice {
+
+	[TestFixture]
+	public class AvoidNullCheckWithAsOperatorTest : MethodRuleTestFixture<AvoidNullCheckWithAsOperatorRule> {
+
+		string AsString_Bad1a (object obj)
+		{
+			return obj == null ? null : obj as string;
+		}
+
+		string AsString_Bad1b (object obj)
+		{
+			if (obj != null)
+				return obj as string;
+			return null;
+		}
+
+		string AsString_Bad2a (object obj)
+		{
+			return obj != null ? obj as string : null;
+		}
+
+		string AsString_Bad2b (object obj)
+		{
+			if (obj == null)
+				return null;
+			return obj as string;
+		}
+
+		string AsString_Good (object obj)
+		{
+			return obj as string;
+		}
+
+		string AsString_Good2 (string message, object obj)
+		{
+			if (message == null)
+				throw new ArgumentNullException ("message");
+			Console.WriteLine (message);
+			return obj as string;
+		}
+
+		string AsString_Good3 (string message, object obj)
+		{
+			if (message == null)
+				return null;
+			Console.WriteLine (message);
+			return obj as string;
+		}
+
+		void LocalsBad1a ()
+		{
+			object o = null;
+			string a = o == null ? null : o as string;
+			Console.WriteLine (a);
+		}
+
+		void LocalsBad2a ()
+		{
+			object o = null;
+			string a = o != null ? o as string : null;
+			Console.WriteLine (a);
+		}
+
+		// extracted from: moon/class/System.Windows/Mono.Xaml/XamlPropertySetter.cs
+		// no 'as' has been harmed by this test
+		object ConvertValue (object value)
+		{
+			if (value == null)
+				return null;
+
+			if (value is Type || value is SimpleMethods)
+				return value;
+
+			return value.ToString ();
+		}
+
+		[Test]
+		public void DoesNotApply ()
+		{
+			AssertRuleDoesNotApply (SimpleMethods.ExternalMethod);
+			AssertRuleDoesNotApply (SimpleMethods.EmptyMethod);
+			// no ldnull instruction
+			AssertRuleDoesNotApply<AvoidNullCheckWithAsOperatorTest> ("AsString_Good");
+			AssertRuleDoesNotApply<AvoidNullCheckWithAsOperatorTest> ("AsString_Good2");
+		}
+
+		[Test]
+		public void Success ()
+		{
+			AssertRuleSuccess<AvoidNullCheckWithAsOperatorTest> ("AsString_Good3");
+			AssertRuleSuccess<AvoidNullCheckWithAsOperatorTest> ("ConvertValue");
+		}
+
+		[Test]
+		public void Failure ()
+		{
+			AssertRuleFailure<AvoidNullCheckWithAsOperatorTest> ("AsString_Bad1a");
+			AssertRuleFailure<AvoidNullCheckWithAsOperatorTest> ("AsString_Bad1b");
+			AssertRuleFailure<AvoidNullCheckWithAsOperatorTest> ("AsString_Bad2a");
+			AssertRuleFailure<AvoidNullCheckWithAsOperatorTest> ("AsString_Bad2b");
+
+			AssertRuleFailure<AvoidNullCheckWithAsOperatorTest> ("LocalsBad1a");
+			AssertRuleFailure<AvoidNullCheckWithAsOperatorTest> ("LocalsBad2a");
+		}
+	}
+}
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/Test/DoNotDecreaseVisibilityTest.cs b/gendarme/rules/Gendarme.Rules.BadPractice/Test/DoNotDecreaseVisibilityTest.cs
new file mode 100644
index 0000000..9bafda7
--- /dev/null
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/Test/DoNotDecreaseVisibilityTest.cs
@@ -0,0 +1,210 @@
+// 
+// Tests.Rules.BadPractice.DoNotDecreaseVisibilityTest
+//
+// Authors:
+//	Sebastien Pouliot <sebastien at ximian.com>
+//
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+
+using Mono.Cecil;
+using Gendarme.Rules.BadPractice ;
+
+using NUnit.Framework;
+using Test.Rules.Fixtures;
+using Test.Rules.Helpers;
+using Test.Rules.Definitions;
+
+namespace Test.Rules.BadPractice {
+
+	[TestFixture]
+	public class DoNotDecreaseVisibilityTest : MethodRuleTestFixture<DoNotDecreaseVisibilityRule> {
+
+		public class TestCase {
+
+			public class Base {
+				public void Public ()
+				{
+				}
+
+				protected bool Protected (int x)
+				{
+					return x == 0;
+				}
+
+				internal int Internal ()
+				{
+					return -1;
+				}
+
+				private float Private (float f)
+				{
+					return f;
+				}
+			}
+
+			public class BadInheritor : Base {
+				private new void Public ()
+				{
+				}
+
+				private new bool Protected (int x)
+				{
+					return x == 1;
+				}
+
+				private new int Internal ()
+				{
+					return -1;
+				}
+
+				private new float Private (float f)
+				{
+					return -f;
+				}
+			}
+
+			public class NoInheritance {
+				private new void Public ()
+				{
+				}
+
+				private new bool Protected (int x)
+				{
+					return x == 1;
+				}
+
+				private new int Internal ()
+				{
+					return -1;
+				}
+
+				private new float Private (float f)
+				{
+					return -f;
+				}
+			}
+
+			// c# cannot seal the method without making it an override
+			// and an override cannot change visibility
+#if false
+			public class FinalInheritor : Base {
+				private new sealed void Public ()
+				{
+				}
+
+				private new sealed bool Protected (int x)
+				{
+					return x == 1;
+				}
+
+				private new sealed int Internal ()
+				{
+					return -1;
+				}
+
+				private new float Private (float f)
+				{
+					return -f;
+				}
+			}
+#endif
+			public sealed class Sealed : Base {
+				private new void Public ()
+				{
+				}
+
+				private new bool Protected (int x)
+				{
+					return x == 1;
+				}
+
+				private new int Internal ()
+				{
+					return -1;
+				}
+
+				private new float Private (float f)
+				{
+					return -f;
+				}
+			}
+
+			public class StaticCtor {
+				static StaticCtor ()
+				{
+				}
+			}
+
+			public class StaticCtorInheritor : StaticCtor {
+				static StaticCtorInheritor ()
+				{
+				}
+			}
+		}
+
+		[Test]
+		public void DoesNotApply ()
+		{
+			// not private
+			AssertRuleDoesNotApply<TestCase.Base> ("Public");
+			AssertRuleDoesNotApply<TestCase.Base> ("Protected");
+			AssertRuleDoesNotApply<TestCase.Base> ("Internal");
+#if false
+			// method is sealed (final)
+			AssertRuleDoesNotApply<TestCase.FinalInheritor> ("Public");
+			AssertRuleDoesNotApply<TestCase.FinalInheritor> ("Protected");
+			AssertRuleDoesNotApply<TestCase.FinalInheritor> ("Internal");
+			AssertRuleDoesNotApply<TestCase.FinalInheritor> ("Private");
+#endif
+			// type is sealed
+			AssertRuleDoesNotApply<TestCase.Sealed> ("Public");
+			AssertRuleDoesNotApply<TestCase.Sealed> ("Protected");
+			AssertRuleDoesNotApply<TestCase.Sealed> ("Internal");
+			AssertRuleDoesNotApply<TestCase.Sealed> ("Private");
+		}
+
+		[Test]
+		public void Good ()
+		{
+			AssertRuleSuccess<TestCase.Base> ("Private");
+
+			AssertRuleSuccess<TestCase.NoInheritance> ("Public");
+			AssertRuleSuccess<TestCase.NoInheritance> ("Protected");
+			AssertRuleSuccess<TestCase.NoInheritance> ("Internal");
+			AssertRuleSuccess<TestCase.NoInheritance> ("Private");
+
+			AssertRuleSuccess<TestCase.BadInheritor> ("Internal");
+			AssertRuleSuccess<TestCase.BadInheritor> ("Private");
+
+			AssertRuleSuccess<TestCase.StaticCtor> (".cctor");
+			AssertRuleSuccess<TestCase.StaticCtorInheritor> (".cctor");
+		}
+
+		[Test]
+		public void Bad ()
+		{
+			AssertRuleFailure<TestCase.BadInheritor> ("Public");
+			AssertRuleFailure<TestCase.BadInheritor> ("Protected");
+		}
+	}
+}
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/Test/Makefile.in b/gendarme/rules/Gendarme.Rules.BadPractice/Test/Makefile.in
index 77ad8e7..03fce0f 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/Test/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.BadPractice/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.BadPractice/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.BadPractice/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.BadPractice/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -298,6 +338,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -306,18 +348,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -352,6 +404,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/Test/Tests.Rules.BadPractice.csproj b/gendarme/rules/Gendarme.Rules.BadPractice/Test/Tests.Rules.BadPractice.csproj
index 0693fa8..ec4cf33 100755
--- a/gendarme/rules/Gendarme.Rules.BadPractice/Test/Tests.Rules.BadPractice.csproj
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/Test/Tests.Rules.BadPractice.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Tests.Rules.BadPractice</RootNamespace>
     <AssemblyName>Tests.Rules.BadPractice</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -21,6 +41,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -29,6 +50,7 @@
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
@@ -85,6 +107,23 @@
   <ItemGroup>
     <Folder Include="Properties\" />
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/UseFileOpenOnlyWithFileAccessRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/UseFileOpenOnlyWithFileAccessRule.cs
index 655298f..2c8be6f 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/UseFileOpenOnlyWithFileAccessRule.cs
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/UseFileOpenOnlyWithFileAccessRule.cs
@@ -26,6 +26,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -68,9 +69,19 @@ namespace Gendarme.Rules.BadPractice {
 	[EngineDependency (typeof (OpCodeEngine))]
 	public class UseFileOpenOnlyWithFileAccessRule : Rule, IMethodRule {
 
-		const string fileMode = "System.IO.FileMode";
-		const string fileAccess = "System.IO.FileAccess";
-		const string fileSystemRights = "System.Security.AccessControl.FileSystemRights";
+		public override void Initialize (IRunner runner)
+		{
+			base.Initialize (runner);
+
+			// if the module does not reference System.IO.FileMode
+			// then no code inside the module will be using it
+			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
+				Active = (e.CurrentAssembly.Name.Name == "mscorlib" ||
+					e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+						return tr.IsNamed ("System.IO", "FileMode");
+					}));
+			};
+		}
 
 		// System.IO.File::Open
 		// System.IO.FileInfo::Open
@@ -115,16 +126,17 @@ namespace Gendarme.Rules.BadPractice {
 				bool foundFileMode = false;
 				bool foundFileAccess = false;
 				foreach (ParameterDefinition parameter in m.Parameters) {
-					string ptname = parameter.ParameterType.FullName;
-					if (!foundFileMode && ptname == fileMode)
+					TypeReference ptype = parameter.ParameterType;
+					if (!foundFileMode && ptype.IsNamed ("System.IO", "FileMode"))
 						foundFileMode = true;
-					if (!foundFileAccess && (ptname == fileAccess || ptname == fileSystemRights))
+					if (!foundFileAccess && (ptype.IsNamed ("System.IO", "FileAccess") || ptype.IsNamed ("System.Security.AccessControl", "FileSystemRights")))
 						foundFileAccess = true;
 				}
 				if (foundFileMode && !foundFileAccess) {
-					Runner.Report (method, instruction, Severity.Medium, Confidence.Normal,
-						String.Format("{0}::{1} being called with FileMode parameter but without FileAccess.",
-							m.DeclaringType.FullName, m.Name));
+					string msg = String.Format (CultureInfo.InvariantCulture, 
+						"{0}::{1} being called with FileMode parameter but without FileAccess.",
+						m.DeclaringType.GetFullName (), m.Name);
+					Runner.Report (method, instruction, Severity.Medium, Confidence.Normal, msg);
 				}
 			}
 			return Runner.CurrentRuleResult;
diff --git a/gendarme/rules/Gendarme.Rules.Concurrency/DecorateThreadsRule.cs b/gendarme/rules/Gendarme.Rules.Concurrency/DecorateThreadsRule.cs
index feead4a..c7b243a 100644
--- a/gendarme/rules/Gendarme.Rules.Concurrency/DecorateThreadsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Concurrency/DecorateThreadsRule.cs
@@ -37,6 +37,7 @@ using System.Collections;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.Diagnostics;
+using System.Globalization;
 using System.Linq;
 
 namespace Gendarme.Rules.Concurrency {
@@ -268,7 +269,8 @@ namespace Gendarme.Rules.Concurrency {
 				if (delegateType != null && !ThreadRocks.ThreadedNamespace (delegateType.Namespace)) {
 					ThreadModel delegateModel = delegateType.ThreadingModel ();
 					if (model != delegateModel && !delegateModel.AllowsEveryCaller ()) {
-						string mesg = string.Format ("{0} event must match {1} delegate.", model, delegateModel);
+						string mesg = String.Format (CultureInfo.InvariantCulture, 
+							"{0} event must match {1} delegate.", model, delegateModel);
 						ReportDefect (method, Severity.High, Confidence.High, mesg);
 					}
 				}
@@ -281,15 +283,17 @@ namespace Gendarme.Rules.Concurrency {
 				bool new_slot = method.IsNewSlot;
 				superTypes = from s in superTypes where (s.IsInterface == new_slot) select s;
 				string [] parameters = pdc != null
-					? (from p in pdc.Cast<ParameterDefinition> () select p.ParameterType.FullName).ToArray ()
+					? (from p in pdc.Cast<ParameterDefinition> () select p.ParameterType.GetFullName ()).ToArray ()
 					: null;
 
+				string return_type_name = method.ReturnType.GetFullName ();
 				foreach (TypeDefinition type in superTypes) {
-					MethodDefinition superMethod = type.GetMethod (name, method.ReturnType.FullName, parameters);
+					MethodDefinition superMethod = type.GetMethod (name, return_type_name, parameters);
 					if (superMethod != null && !ThreadRocks.ThreadedNamespace (superMethod.DeclaringType.Namespace)) {
 						ThreadModel superModel = superMethod.ThreadingModel ();
 						if (model != superModel) {
-							string mesg = string.Format ("{0} {1} must match {2} {3} method.", model, name, superModel,
+							string mesg = String.Format (CultureInfo.InvariantCulture, 
+								"{0} {1} must match {2} {3} method.", model, name, superModel,
 								new_slot ? "interface" : "base");
 							ReportDefect (method, Severity.High, Confidence.High, mesg);
 						}
@@ -299,7 +303,7 @@ namespace Gendarme.Rules.Concurrency {
 			
 			// Serializable cannot be applied to static methods, but can be applied to
 			// operators because they're just sugar for normal calls.
-			if (method.IsStatic && model.Is (ThreadModel.Serializable) && !name.StartsWith ("op_")) {
+			if (method.IsStatic && model.Is (ThreadModel.Serializable) && !name.StartsWith ("op_", StringComparison.Ordinal)) {
 				string mesg = "Static members cannot be decorated with Serializable.";
 				ReportDefect (method, Severity.High, Confidence.High, mesg);
 			}
@@ -315,21 +319,23 @@ namespace Gendarme.Rules.Concurrency {
 			foreach (MethodDefinition caller in anonymous_entry_points) {
 				foreach (Instruction ins in caller.Body.Instructions) {
 					switch (ins.OpCode.Code) {
-						case Code.Call:
-						case Code.Callvirt:
-							MethodDefinition target = ((MethodReference) ins.Operand).Resolve ();
-							if (target != null) {
-								ThreadModel targetModel = target.ThreadingModel ();
-								if (targetModel == ThreadModel.MainThread) {
-									string mesg = string.Format ("An anonymous thread entry point cannot call MainThread {0}.", target.Name);
-									
-									++DefectCount;
-									Log.WriteLine (this, "Defect: {0}", mesg);
-									Defect defect = new Defect (this, caller, caller, ins, Severity.High, Confidence.High, mesg);
-									Runner.Report (defect);
-								}
+					case Code.Call:
+					case Code.Callvirt:
+						MethodDefinition target = ((MethodReference) ins.Operand).Resolve ();
+						if (target != null) {
+							ThreadModel targetModel = target.ThreadingModel ();
+							if (targetModel == ThreadModel.MainThread) {
+								string mesg = String.Format (CultureInfo.InvariantCulture, 
+									"An anonymous thread entry point cannot call MainThread {0}.", 
+									target.Name);
+								
+								++DefectCount;
+								Log.WriteLine (this, "Defect: {0}", mesg);
+								Defect defect = new Defect (this, caller, caller, ins, Severity.High, Confidence.High, mesg);
+								Runner.Report (defect);
 							}
-							break;
+						}
+						break;
 					}
 				}
 			}
@@ -385,8 +391,9 @@ namespace Gendarme.Rules.Concurrency {
 									if (!target.IsGeneratedCode () || target.IsProperty ()) {
 										ThreadModel targetModel = target.ThreadingModel ();
 										if (!IsValidCall (callerModel, targetModel)) {
-											string mesg = string.Format ("{0} delegate cannot be bound to {1} {2} method.", callerModel, targetModel, target.Name);
-											
+											string mesg = String.Format (CultureInfo.InvariantCulture,
+												"{0} delegate cannot be bound to {1} {2} method.", 
+												callerModel, targetModel, target.Name);
 											++DefectCount;
 											Log.WriteLine (this, "Defect: {0}", mesg);
 											Defect defect = new Defect (this, method, method, ins, Severity.High, Confidence.High, mesg);
@@ -431,7 +438,7 @@ namespace Gendarme.Rules.Concurrency {
 							methods.AddIfNew ((MethodReference) ins.Previous.Previous.Operand);
 						
 						// Misc threaded events.
-						} else if (call_type.FullName == "System.ComponentModel.BackgroundWorker") {
+						} else if (call_type.IsNamed ("System.ComponentModel", "BackgroundWorker")) {
 							if (call.Name == "add_DoWork") {
 								candidate = (MethodReference) ins.Previous.Previous.Operand;
 							}
@@ -465,7 +472,9 @@ namespace Gendarme.Rules.Concurrency {
 						if (target != null) {
 							ThreadModel targetModel = target.ThreadingModel ();
 							if (!IsValidCall (method_model.Value, targetModel)) {
-								string mesg = string.Format ("{0} {1} cannot be bound to {2} {3} method.", method_model, entry.Key, targetModel, target.Name);
+								string mesg = String.Format (CultureInfo.InvariantCulture, 
+									"{0} {1} cannot be bound to {2} {3} method.", 
+									method_model, entry.Key, targetModel, target.Name);
 								ReportDefect (method, Severity.High, Confidence.High, mesg);
 							}
 						}
@@ -490,9 +499,8 @@ namespace Gendarme.Rules.Concurrency {
 			// but mono doesn't.
 			case "add_ErrorDataReceived":
 			case "add_OutputDataReceived":
-				TypeReference type = method.DeclaringType;
-				if (type.Name == "Process")
-					return (type.Namespace == "System.Diagnostics");
+				if (method.DeclaringType.IsNamed ("System.Diagnostics", "Process"))
+					return true;
 				break;
 			}
 			return false;
@@ -523,7 +531,8 @@ namespace Gendarme.Rules.Concurrency {
 						anonymous_entry_points.Add (method);
 					
 					} else if (model == ThreadModel.MainThread) {
-						string mesg = string.Format ("{0} is a thread entry point and so cannot be MainThread.", method.Name);
+						string mesg = String.Format (CultureInfo.InvariantCulture, 
+							"{0} is a thread entry point and so cannot be MainThread.", method.Name);
 						ReportDefect (method, Severity.High, Confidence.High, mesg);
 					}
 				}
@@ -537,7 +546,8 @@ namespace Gendarme.Rules.Concurrency {
 				ThreadModel callerModel = caller.ThreadingModel ();
 				ThreadModel targetModel = target.ThreadingModel ();
 				if (!IsValidCall (callerModel, targetModel)) {
-					string mesg = string.Format ("{0} {1} cannot call {2} {3}.", callerModel, caller.Name, targetModel, target.Name);
+					string mesg = String.Format (CultureInfo.InvariantCulture, "{0} {1} cannot call {2} {3}.", 
+						callerModel, caller.Name, targetModel, target.Name);
 					
 					++DefectCount;
 					Log.WriteLine (this, "Defect: {0}", mesg);
diff --git a/gendarme/rules/Gendarme.Rules.Concurrency/DoNotLockOnThisOrTypesRule.cs b/gendarme/rules/Gendarme.Rules.Concurrency/DoNotLockOnThisOrTypesRule.cs
index 2ddb7ac..7c91ad5 100644
--- a/gendarme/rules/Gendarme.Rules.Concurrency/DoNotLockOnThisOrTypesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Concurrency/DoNotLockOnThisOrTypesRule.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -108,23 +109,26 @@ namespace Gendarme.Rules.Concurrency {
 
 			switch (ins.OpCode.Code) {
 			case Code.Ldarg_0:
-				msg = LockThis;
+				if (!method.IsStatic)
+					msg = LockThis;
 				break;
 			case Code.Ldarg:
 			case Code.Ldarg_S:
-				ParameterDefinition pd = (ins.Operand as ParameterDefinition);
-				if ((pd == null) || (pd.GetSequence () != 0))
-					msg = LockThis;
+				if (!method.IsStatic) {
+					ParameterDefinition pd = (ins.Operand as ParameterDefinition);
+					if ((pd == null) || (pd.Index == 0))
+						msg = LockThis;
+				}
 				break;
 			case Code.Call:
 			case Code.Callvirt:
 				MethodReference mr = (ins.Operand as MethodReference);
-				if (mr.ReturnType.FullName != "System.Type")
+				if (!mr.ReturnType.IsNamed ("System", "Type"))
 					return String.Empty;
 
 				if ((mr.Name == "GetTypeFromHandle") && (mr.DeclaringType.Name == "Type")) {
 					// ldtoken
-					msg = String.Format (LockType, (ins.Previous.Operand as TypeReference).Name);
+					msg = String.Format (CultureInfo.InvariantCulture, LockType, (ins.Previous.Operand as TypeReference).Name);
 				} else {
 					msg = mr.ToString ();
 				}
diff --git a/gendarme/rules/Gendarme.Rules.Concurrency/DoNotLockOnWeakIdentityObjectsRule.cs b/gendarme/rules/Gendarme.Rules.Concurrency/DoNotLockOnWeakIdentityObjectsRule.cs
index fe730aa..57c3b84 100644
--- a/gendarme/rules/Gendarme.Rules.Concurrency/DoNotLockOnWeakIdentityObjectsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Concurrency/DoNotLockOnWeakIdentityObjectsRule.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -99,12 +100,26 @@ namespace Gendarme.Rules.Concurrency {
 	[FxCopCompatibility ("Microsoft.Reliability", "CA2002:DoNotLockOnObjectsWithWeakIdentity")]
 	public class DoNotLockOnWeakIdentityObjectsRule : LockAnalyzerRule {
 
-		private static string [] unsealed_types = new string[] {
-			"System.MarshalByRefObject",
-			"System.OutOfMemoryException",
-			"System.Reflection.MemberInfo",
-			"System.Reflection.ParameterInfo"
-		};
+		static bool IsWeakSealedType (TypeReference type)
+		{
+			switch (type.Namespace) {
+			case "System":
+				string name = type.Name;
+				return ((name == "String") || (name == "ExecutionEngineException") || (name == "StackOverflowException"));
+			case "System.Threading":
+				return (type.Name == "Thread");
+			default:
+				return false;
+			}
+		}
+
+		static string InheritFromWeakType (TypeReference type, string nameSpace, string name)
+		{
+			if (!type.Inherits (nameSpace, name))
+				return String.Empty;
+			return String.Format (CultureInfo.InvariantCulture, "'{0}' inherits from '{1}.{2}'.", 
+				type.GetFullName (), nameSpace, name);
+		}
 
 		public override void Analyze (MethodDefinition method, MethodReference enter, Instruction ins)
 		{
@@ -119,7 +134,7 @@ namespace Gendarme.Rules.Concurrency {
 			if (first.OpCode.Code == Code.Dup)
 				first = first.Previous;
 			type = first.GetOperandType (method);
-			if (type.FullName == "System.Object") {
+			if (type.IsNamed ("System", "Object")) {
 				// newer GMCS use a temporary local that hides the real type
 				Instruction prev = first.Previous;
 				if (first.IsLoadLocal () && prev.IsStoreLocal ()) {
@@ -131,24 +146,28 @@ namespace Gendarme.Rules.Concurrency {
 			if (type == null)
 				return;
 
-			// fast check for sealed types
-			string full_name = type.FullName;
-			switch (full_name) {
-			case "System.ExecutionEngineException":
-			case "System.StackOverflowException":
-			case "System.String":
-			case "System.Threading.Thread":
-				Runner.Report (method, call, Severity.High, Confidence.Normal, full_name);
-				break;
-			default:
-				foreach (string unsealed in unsealed_types) {
-					if (!type.Inherits (unsealed))
-						continue;
-
-					string msg = String.Format ("'{0}' inherits from '{1}'.", full_name, unsealed);
+			if (IsWeakSealedType (type)) {
+				Runner.Report (method, call, Severity.High, Confidence.Normal, type.GetFullName ());
+			} else {
+				string msg = InheritFromWeakType (type, "System", "MarshalByRefObject");
+				if (msg.Length > 0) {
+					Runner.Report (method, call, Severity.High, Confidence.Normal, msg);
+					return;
+				}
+				msg = InheritFromWeakType (type, "System", "OutOfMemoryException");
+				if (msg.Length > 0) {
+					Runner.Report (method, call, Severity.High, Confidence.Normal, msg);
+					return;
+				}
+				msg = InheritFromWeakType (type, "System.Reflection", "MemberInfo");
+				if (msg.Length > 0) {
+					Runner.Report (method, call, Severity.High, Confidence.Normal, msg);
+					return;
+				}
+				msg = InheritFromWeakType (type, "System.Reflection", "ParameterInfo");
+				if (msg.Length > 0) {
 					Runner.Report (method, call, Severity.High, Confidence.Normal, msg);
 				}
-				break;
 			}
 		}
 	}
diff --git a/gendarme/rules/Gendarme.Rules.Concurrency/DoNotUseThreadStaticWithInstanceFieldsRule.cs b/gendarme/rules/Gendarme.Rules.Concurrency/DoNotUseThreadStaticWithInstanceFieldsRule.cs
index af1beeb..c949329 100644
--- a/gendarme/rules/Gendarme.Rules.Concurrency/DoNotUseThreadStaticWithInstanceFieldsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Concurrency/DoNotUseThreadStaticWithInstanceFieldsRule.cs
@@ -84,15 +84,13 @@ namespace Gendarme.Rules.Concurrency {
 	[Solution ("ThreadStaticAttribute will only make static fields thread safe. To make an instance field thread safe you need to use techniques like locking or System.Threading.Thread.Thread::AllocateNamedDataSlot.")]
 	public sealed class DoNotUseThreadStaticWithInstanceFieldsRule : Rule, ITypeRule {
 
-		private const string ThreadStaticAttribute = "System.ThreadStaticAttribute";
-
 		public RuleResult CheckType (TypeDefinition type)
 		{
 			if (!type.HasFields || type.IsEnum)
 				return RuleResult.DoesNotApply;
 			
 			foreach (FieldDefinition field in type.Fields) {
-				if (!field.IsStatic && field.CustomAttributes.ContainsType (ThreadStaticAttribute)) {
+				if (!field.IsStatic && field.HasAttribute ("System", "ThreadStaticAttribute")) {
 					Runner.Report (field, Severity.Critical, Confidence.Total);
 				}
 			}
diff --git a/gendarme/rules/Gendarme.Rules.Concurrency/DontUseLockedRegionOutsideMethodRule.cs b/gendarme/rules/Gendarme.Rules.Concurrency/DontUseLockedRegionOutsideMethodRule.cs
index 9b2a53b..4cc40d6 100644
--- a/gendarme/rules/Gendarme.Rules.Concurrency/DontUseLockedRegionOutsideMethodRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Concurrency/DontUseLockedRegionOutsideMethodRule.cs
@@ -100,7 +100,8 @@ namespace Gendarme.Rules.Concurrency {
 	///		Monitor.Enter (mutex);
 	/// 		try {
 	///			producer++;
-	/// 		} finally {
+	/// 		}
+	///		finally {
 	///			Monitor.Exit (mutex);
 	/// 		}
 	///	}
@@ -131,8 +132,10 @@ namespace Gendarme.Rules.Concurrency {
 			// if not then this rule does not need to be executed for the module
 			// note: mscorlib.dll is an exception since it defines, not refer, System.Threading.Monitor
 			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				Active = (e.CurrentAssembly.Name.Name == "mscorlib") ||
-					e.CurrentModule.HasTypeReference ("System.Threading.Monitor");
+				Active = (e.CurrentAssembly.Name.Name == "mscorlib" ||
+					e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+						return tr.IsNamed ("System.Threading", "Monitor");
+					}));
 			};
 		}
 		
@@ -157,9 +160,9 @@ namespace Gendarme.Rules.Concurrency {
 				if (m == null)
 					continue;
 
-				if (IsMonitorMethod (m, "Enter")) {
+				if (m.IsNamed ("System.Threading", "Monitor", "Enter")) {
 					enter++;
-				} else if (IsMonitorMethod (m, "Exit")) {
+				} else if (m.IsNamed ("System.Threading", "Monitor", "Exit")) {
 					exit++;
 				}
 			}
@@ -170,13 +173,5 @@ namespace Gendarme.Rules.Concurrency {
 			Runner.Report (method, Severity.High, Confidence.Normal);
 			return RuleResult.Failure;
 		}
-		
-		//FIXME: copied from DoubleCheckLockingRule, we need to share this
-		private static bool IsMonitorMethod (MemberReference method, string methodName)
-		{
-			if (method.Name != methodName)
-				return false;
-			return (method.DeclaringType.FullName == "System.Threading.Monitor");
-		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Concurrency/DoubleCheckLockingRule.cs b/gendarme/rules/Gendarme.Rules.Concurrency/DoubleCheckLockingRule.cs
index 8595046..d1227a2 100644
--- a/gendarme/rules/Gendarme.Rules.Concurrency/DoubleCheckLockingRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Concurrency/DoubleCheckLockingRule.cs
@@ -154,7 +154,9 @@ namespace Gendarme.Rules.Concurrency {
 					// if not then this rule does not need to be executed for the module
 					// note: mscorlib.dll is an exception since it defines, not refer, System.Threading.Monitor
 					(e.CurrentAssembly.Name.Name == "mscorlib" ||
-					e.CurrentModule.HasTypeReference ("System.Threading.Monitor"));
+					e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+						return tr.IsNamed ("System.Threading", "Monitor");
+					}));
 			};
 		}
 
@@ -213,7 +215,7 @@ namespace Gendarme.Rules.Concurrency {
 		{
 			if (method.Name != methodName)
 				return false;
-			if (method.DeclaringType.FullName != "System.Threading.Monitor")
+			if (!method.DeclaringType.IsNamed ("System.Threading", "Monitor"))
 				return false;
 			// exclude Monitor.Enter(object, ref bool) since the comparison would be made
 			// againt the 'lockTaken' parameter and would report failures for every cases.
diff --git a/gendarme/rules/Gendarme.Rules.Concurrency/Gendarme.Rules.Concurrency.csproj b/gendarme/rules/Gendarme.Rules.Concurrency/Gendarme.Rules.Concurrency.csproj
index 8224fee..e9f89be 100644
--- a/gendarme/rules/Gendarme.Rules.Concurrency/Gendarme.Rules.Concurrency.csproj
+++ b/gendarme/rules/Gendarme.Rules.Concurrency/Gendarme.Rules.Concurrency.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -12,9 +12,11 @@
     <AssemblyName>Gendarme.Rules.Concurrency</AssemblyName>
     <FileUpgradeFlags>
     </FileUpgradeFlags>
-    <OldToolsVersion>2.0</OldToolsVersion>
+    <OldToolsVersion>3.5</OldToolsVersion>
     <UpgradeBackupLocation>
     </UpgradeBackupLocation>
+    <IsWebBootstrapper>true</IsWebBootstrapper>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <PublishUrl>http://localhost/Gendarme.Rules.Concurrency/</PublishUrl>
     <Install>true</Install>
     <InstallFrom>Web</InstallFrom>
@@ -27,10 +29,9 @@
     <MapFileExtensions>true</MapFileExtensions>
     <ApplicationRevision>0</ApplicationRevision>
     <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>true</IsWebBootstrapper>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -43,6 +44,7 @@
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
     <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Concurrency.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -54,6 +56,7 @@
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
     <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Concurrency.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -93,14 +96,33 @@
     <None Include="ChangeLog" />
   </ItemGroup>
   <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
diff --git a/gendarme/rules/Gendarme.Rules.Concurrency/LockAnalyzerRule.cs b/gendarme/rules/Gendarme.Rules.Concurrency/LockAnalyzerRule.cs
index 04424af..fd7bc61 100644
--- a/gendarme/rules/Gendarme.Rules.Concurrency/LockAnalyzerRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Concurrency/LockAnalyzerRule.cs
@@ -49,8 +49,10 @@ namespace Gendarme.Rules.Concurrency {
 			// if not then this rule does not need to be executed for the module
 			// note: mscorlib.dll is an exception since it defines, not refer, System.Threading.Monitor
 			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				Active = (e.CurrentAssembly.Name.Name == "mscorlib") ||
-					e.CurrentModule.HasTypeReference ("System.Threading.Monitor");
+				Active = (e.CurrentAssembly.Name.Name == "mscorlib" ||
+					e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+						return tr.IsNamed ("System.Threading", "Monitor");
+					}));
 			};
 		}
 
@@ -68,14 +70,8 @@ namespace Gendarme.Rules.Concurrency {
 
 			foreach (Instruction ins in method.Body.Instructions) {
 				MethodReference mr = ins.GetMethod ();
-				if (mr == null)
-					continue;
-				if (mr.DeclaringType.FullName != "System.Threading.Monitor")
-					continue;
-				if (mr.Name != "Enter")
-					continue;
-
-				Analyze (method, mr, ins);
+				if (mr.IsNamed ("System.Threading", "Monitor", "Enter"))
+					Analyze (method, mr, ins);
 			}
 			return Runner.CurrentRuleResult;
 		}
diff --git a/gendarme/rules/Gendarme.Rules.Concurrency/Makefile.in b/gendarme/rules/Gendarme.Rules.Concurrency/Makefile.in
index 31638d8..2d341ca 100644
--- a/gendarme/rules/Gendarme.Rules.Concurrency/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Concurrency/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(rules_categorydir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
-rules_categorySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(rules_category_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,20 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(rules_documentation_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -130,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -285,14 +361,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Concurrency/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Concurrency/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Concurrency/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Concurrency/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -302,6 +378,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../common.make $(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -310,42 +387,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-rules_categorySCRIPTS: $(rules_category_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_categorydir)" || $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)"
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_categorydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(rules_categorySCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	    $(rules_categorySCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rules_categorydir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rules_categorydir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-rules_categorySCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	done
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(rules_categorydir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -354,7 +452,7 @@ uninstall-rules_documentationDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -371,7 +469,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -379,7 +477,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -405,16 +503,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -422,14 +520,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -441,7 +539,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -450,29 +548,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -493,29 +596,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -538,10 +653,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -549,6 +669,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -568,6 +689,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -577,18 +700,28 @@ install-data-am: install-rules_categorySCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -610,8 +743,8 @@ ps-am:
 uninstall-am: uninstall-rules_categorySCRIPTS \
 	uninstall-rules_documentationDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -631,11 +764,11 @@ uninstall-am: uninstall-rules_categorySCRIPTS \
 
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -644,7 +777,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
@@ -664,6 +797,7 @@ $(rules_doc_source):
 
 clean-local:
 	rm -fr doc
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Concurrency/ProtectCallToEventDelegatesRule.cs b/gendarme/rules/Gendarme.Rules.Concurrency/ProtectCallToEventDelegatesRule.cs
index e614973..843c9b8 100644
--- a/gendarme/rules/Gendarme.Rules.Concurrency/ProtectCallToEventDelegatesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Concurrency/ProtectCallToEventDelegatesRule.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -164,13 +165,13 @@ namespace Gendarme.Rules.Concurrency {
 				Instruction caller = ins.TraceBack (method);
 				FieldDefinition field = caller.GetField ();
 				if (field != null) {
-					string msg = String.Format ("Possible race condition since field '{0}' is accessed directly.", field.Name);
+					string msg = String.Format (CultureInfo.InvariantCulture, "Possible race condition since field '{0}' is accessed directly.", field.Name);
 					Runner.Report (method, ins, Severity.High, Confidence.High, msg);
 				} else {
 					// look for the variable, if it's not then stop analysis
 					VariableDefinition load = caller.GetVariable (method);
 					if ((load != null) && !CheckVariable (method, caller, load)) {
-						string msg = String.Format ("Variable '{0}' does not seems to be checked against null.", load.Name);
+						string msg = String.Format (CultureInfo.InvariantCulture, "Variable '{0}' does not seems to be checked against null.", load.Name);
 						Runner.Report (method, ins, Severity.High, Confidence.Normal, msg);
 					}
 				}
diff --git a/gendarme/rules/Gendarme.Rules.Concurrency/ReviewLockUsedOnlyForOperationsOnVariablesRule.cs b/gendarme/rules/Gendarme.Rules.Concurrency/ReviewLockUsedOnlyForOperationsOnVariablesRule.cs
index af249bd..621e362 100644
--- a/gendarme/rules/Gendarme.Rules.Concurrency/ReviewLockUsedOnlyForOperationsOnVariablesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Concurrency/ReviewLockUsedOnlyForOperationsOnVariablesRule.cs
@@ -93,8 +93,10 @@ namespace Gendarme.Rules.Concurrency {
 			// if not then this rule does not need to be executed for the module
 			// note: mscorlib.dll is an exception since it defines, not refer, System.Threading.Monitor
 			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				Active = (e.CurrentAssembly.Name.Name == "mscorlib") ||
-					e.CurrentModule.HasTypeReference ("System.Threading.Monitor");
+				Active = (e.CurrentAssembly.Name.Name == "mscorlib" ||
+					e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+						return tr.IsNamed ("System.Threading", "Monitor");
+					}));
 			};
 		}
 
@@ -154,9 +156,7 @@ namespace Gendarme.Rules.Concurrency {
 				return false;
 
 			MethodReference method = (ins.Operand as MethodReference);
-			if (method == null)
-				return false;
-			if ((method.Name != "Enter") || (method.DeclaringType.FullName != "System.Threading.Monitor"))
+			if (!method.IsNamed ("System.Threading", "Monitor", "Enter"))
 				return false;
 			return (parametersCount == method.Parameters.Count);
 		}
diff --git a/gendarme/rules/Gendarme.Rules.Concurrency/Test/DoNotLockOnThisOrTypesTest.cs b/gendarme/rules/Gendarme.Rules.Concurrency/Test/DoNotLockOnThisOrTypesTest.cs
index 707a537..4db0096 100644
--- a/gendarme/rules/Gendarme.Rules.Concurrency/Test/DoNotLockOnThisOrTypesTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Concurrency/Test/DoNotLockOnThisOrTypesTest.cs
@@ -103,11 +103,20 @@ namespace Test.Rules.Concurrency {
 			}
 		}
 
+		static bool TryEnter (object obj)
+		{
+			lock (obj) {
+				Console.WriteLine ();
+			}
+			return true;
+		}
+
 		[Test]
 		public void StaticType ()
 		{
 			AssertRuleFailure<DoNotLockOnThisOrTypesTest> ("StaticLockType", 1);
 			AssertRuleFailure<DoNotLockOnThisOrTypesTest> ("StaticLockTypes", 2);
+			AssertRuleSuccess<DoNotLockOnThisOrTypesTest> ("TryEnter");
 		}
 
 		object instance_locker = new object ();
diff --git a/gendarme/rules/Gendarme.Rules.Concurrency/Test/Makefile.in b/gendarme/rules/Gendarme.Rules.Concurrency/Test/Makefile.in
index 1507b37..e479a1b 100644
--- a/gendarme/rules/Gendarme.Rules.Concurrency/Test/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Concurrency/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Concurrency/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Concurrency/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Concurrency/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Concurrency/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -298,6 +338,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -306,18 +348,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -352,6 +404,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Concurrency/Test/Tests.Rules.Concurrency.csproj b/gendarme/rules/Gendarme.Rules.Concurrency/Test/Tests.Rules.Concurrency.csproj
index e272dcc..292cdd3 100755
--- a/gendarme/rules/Gendarme.Rules.Concurrency/Test/Tests.Rules.Concurrency.csproj
+++ b/gendarme/rules/Gendarme.Rules.Concurrency/Test/Tests.Rules.Concurrency.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -12,9 +12,11 @@
     <AssemblyName>Tests.Rules.Concurrency</AssemblyName>
     <FileUpgradeFlags>
     </FileUpgradeFlags>
-    <OldToolsVersion>2.0</OldToolsVersion>
+    <OldToolsVersion>3.5</OldToolsVersion>
     <UpgradeBackupLocation>
     </UpgradeBackupLocation>
+    <IsWebBootstrapper>true</IsWebBootstrapper>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <PublishUrl>http://localhost/Tests.Rules.Concurrency/</PublishUrl>
     <Install>true</Install>
     <InstallFrom>Web</InstallFrom>
@@ -27,10 +29,9 @@
     <MapFileExtensions>true</MapFileExtensions>
     <ApplicationRevision>0</ApplicationRevision>
     <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>true</IsWebBootstrapper>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -40,6 +41,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -48,6 +50,7 @@
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
@@ -93,14 +96,33 @@
     </ProjectReference>
   </ItemGroup>
   <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
diff --git a/gendarme/rules/Gendarme.Rules.Concurrency/ThreadRocks.cs b/gendarme/rules/Gendarme.Rules.Concurrency/ThreadRocks.cs
index e89969b..95fb166 100644
--- a/gendarme/rules/Gendarme.Rules.Concurrency/ThreadRocks.cs
+++ b/gendarme/rules/Gendarme.Rules.Concurrency/ThreadRocks.cs
@@ -119,7 +119,7 @@ namespace Gendarme.Rules.Concurrency {
 				}
 				
 			} else if (method.IsStatic) {
-				if (model == ThreadModel.Serializable && !method.Name.StartsWith ("op_")) {
+				if (model == ThreadModel.Serializable && !method.Name.StartsWith ("op_", StringComparison.Ordinal)) {
 					return ThreadModel.MainThread;
 				}
 			}
diff --git a/gendarme/rules/Gendarme.Rules.Concurrency/WriteStaticFieldFromInstanceMethodRule.cs b/gendarme/rules/Gendarme.Rules.Concurrency/WriteStaticFieldFromInstanceMethodRule.cs
index 686855d..9fa400f 100644
--- a/gendarme/rules/Gendarme.Rules.Concurrency/WriteStaticFieldFromInstanceMethodRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Concurrency/WriteStaticFieldFromInstanceMethodRule.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -76,8 +77,6 @@ namespace Gendarme.Rules.Concurrency {
 	[EngineDependency (typeof (OpCodeEngine))]
 	public class WriteStaticFieldFromInstanceMethodRule : Rule, IMethodRule {
 
-		private const string ThreadStaticAttribute = "System.ThreadStaticAttribute";
-
 		static bool CheckField (FieldReference field)
 		{
 			// skip instance fields and generated static field (likely by the compiler)
@@ -92,7 +91,7 @@ namespace Gendarme.Rules.Concurrency {
 			// skip fields decorated with [ThreadStatic] (the runtime will use
 			// thread local storage for these so they are thread safe)
 			if (fd.HasCustomAttributes) {
-				if (fd.CustomAttributes.ContainsType (ThreadStaticAttribute))
+				if (fd.HasAttribute ("System", "ThreadStaticAttribute"))
 					return false;
 			}
 			return true;
@@ -118,7 +117,9 @@ namespace Gendarme.Rules.Concurrency {
 				if (ins.OpCode.Code == Code.Stsfld) {
 					FieldReference fr = (ins.Operand as FieldReference);
 					if (CheckField (fr)) {
-						string text = String.Format ("The static field '{0}', of type '{1}'. is being set in an instance method.", fr.Name, fr.FieldType);
+						string text = String.Format (CultureInfo.InvariantCulture,
+							"The static field '{0}', of type '{1}'. is being set in an instance method.", 
+							fr.Name, fr.FieldType);
 						Runner.Report (method, ins, Severity.Medium, Confidence.High, text);
 					}
 				}
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/AttributeStringLiteralsShouldParseCorrectlyRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/AttributeStringLiteralsShouldParseCorrectlyRule.cs
index d13758b..d75246e 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/AttributeStringLiteralsShouldParseCorrectlyRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/AttributeStringLiteralsShouldParseCorrectlyRule.cs
@@ -29,6 +29,7 @@
 using System;
 using System.Collections;
 using System.Collections.Generic;
+using System.Globalization;
 
 using Gendarme.Framework;
 using Gendarme.Framework.Rocks;
@@ -80,42 +81,16 @@ namespace Gendarme.Rules.Correctness {
 			return original.IndexOf (value, 0, StringComparison.OrdinalIgnoreCase) != -1;
 		}
 		
-		// FIXME : FX4 Version.TryParse @ http://msdn.microsoft.com/en-us/library/system.version.tryparse.aspx
-		static bool TryParseVersion (string version)
-		{
-			try {
-				new Version (version);
-				return true;
-			}
-			catch (FormatException) {
-				return false;
-			}
-			catch (ArgumentException) {
-				return false;
-			}
-		}
-
-		// FIXME : FX4 Guid.TryParse @ http://msdn.microsoft.com/en-us/library/system.guid.tryparse.aspx
-		static bool TryParseGuid (string guid)
-		{
-			try {
-				new Guid (guid);
-				return true;
-			}
-			catch (FormatException) {
-				return false;
-			}
-		}
-
 		void CheckParametersAndValues (IMetadataTokenProvider provider, IMethodSignature constructor, IList<CustomAttributeArgument> arguments)
 		{
 			for (int index = 0; index < arguments.Count; index++) {
 				ParameterDefinition parameter = constructor.Parameters[index];
-				if (String.Compare (parameter.ParameterType.FullName, "System.String") == 0) {
+				if (parameter.ParameterType.IsNamed ("System", "String")) {
 					string value = (string) arguments [index].Value;
-					if (Contains (parameter.Name, "version")) { 
-						if (!TryParseVersion (value)) {
-							string msg = String.Format ("The value passed: {0} can't be parsed to a valid Version.", value);
+					if (Contains (parameter.Name, "version")) {
+						Version v = null;
+						if (!Version.TryParse (value, out v)) {
+							string msg = String.Format (CultureInfo.InvariantCulture, "The value passed: {0} can't be parsed to a valid Version.", value);
 							Runner.Report (provider, Severity.High, Confidence.High, msg);
 						}
 						continue;
@@ -125,14 +100,15 @@ namespace Gendarme.Rules.Correctness {
 						Contains (parameter.Name, "urn")) {
 						Uri parsed = null;
 						if (!Uri.TryCreate (value, UriKind.Absolute, out parsed)) {
-							string msg = String.Format ("The valued passed {0} can't be parsed to a valid Uri.", value);
+							string msg = String.Format (CultureInfo.InvariantCulture, "The valued passed {0} can't be parsed to a valid Uri.", value);
 							Runner.Report (provider, Severity.High, Confidence.High, msg);
 						}
 						continue;
 					}
 					if (Contains (parameter.Name, "guid")) {
-						if (!TryParseGuid (value)) {
-							string msg = String.Format ("The valued passed {0} can't be parsed to a valid Guid.", value);
+						Guid g;
+						if (!Guid.TryParse (value, out g)) {
+							string msg = String.Format (CultureInfo.InvariantCulture, "The valued passed {0} can't be parsed to a valid Guid.", value);
 							Runner.Report (provider, Severity.High, Confidence.High, msg);
 						}
 						continue;
@@ -203,3 +179,4 @@ namespace Gendarme.Rules.Correctness {
 		}
 	}
 }
+
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/AvoidCodeWithSideEffectsInConditionalCodeRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/AvoidCodeWithSideEffectsInConditionalCodeRule.cs
index 7a4a569..8d96766 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/AvoidCodeWithSideEffectsInConditionalCodeRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/AvoidCodeWithSideEffectsInConditionalCodeRule.cs
@@ -34,6 +34,7 @@ using Mono.Cecil;
 using Mono.Cecil.Cil;
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 
 namespace Gendarme.Rules.Correctness {
 
@@ -114,7 +115,8 @@ namespace Gendarme.Rules.Correctness {
 						
 						string name = Mutates (method, ins);
 						if (name != null) {
-							string mesg = string.Format ("{0}::{1} is conditionally compiled on {2} but mutates {3}",
+							string mesg = String.Format (CultureInfo.InvariantCulture, 
+								"{0}::{1} is conditionally compiled on {2} but mutates {3}",
 								target.DeclaringType.Name, target.Name, define, name);
 							Log.WriteLine (this, mesg);
 							
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/AvoidConstructorsInStaticTypesRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/AvoidConstructorsInStaticTypesRule.cs
index a4eac8b..fe51ad6 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/AvoidConstructorsInStaticTypesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/AvoidConstructorsInStaticTypesRule.cs
@@ -106,7 +106,7 @@ namespace Gendarme.Rules.Correctness {
 				}
 			}
 
-			if (type.BaseType.FullName == "System.Object")
+			if (type.BaseType.IsNamed ("System", "Object"))
 				return true;
 
 			return IsAllStatic (type.BaseType.Resolve ());
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/AvoidFloatingPointEqualityRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/AvoidFloatingPointEqualityRule.cs
index 4c41820..7877367 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/AvoidFloatingPointEqualityRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/AvoidFloatingPointEqualityRule.cs
@@ -179,7 +179,7 @@ namespace Gendarme.Rules.Correctness {
 				case Code.Call:
 				case Code.Callvirt:
 					MemberReference member = instruction.Operand as MemberReference;
-					if ((member != null) && member.Name.Equals ("Equals") && member.DeclaringType.IsFloatingPoint ()) {
+					if ((member != null) && (member.Name == "Equals") && member.DeclaringType.IsFloatingPoint ()) {
 						Runner.Report (method, instruction, Severity.High, Confidence.Total, EqualsMessage);
 					}
 					break;
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/AvoidMethodsWithSideEffectsInConditionalCodeRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/AvoidMethodsWithSideEffectsInConditionalCodeRule.cs
index 264d8ff..8e84621 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/AvoidMethodsWithSideEffectsInConditionalCodeRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/AvoidMethodsWithSideEffectsInConditionalCodeRule.cs
@@ -34,6 +34,7 @@ using Mono.Cecil;
 using Mono.Cecil.Cil;
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 
 namespace Gendarme.Rules.Correctness {
 
@@ -157,7 +158,8 @@ namespace Gendarme.Rules.Correctness {
 						
 						MethodReference impure = FindImpurity (method, ins);
 						if (impure != null) {
-							string mesg = string.Format ("{0}::{1} is conditionally compiled on {2} but uses the impure {3}::{4}",
+							string mesg = String.Format (CultureInfo.InvariantCulture, 
+								"{0}::{1} is conditionally compiled on {2} but uses the impure {3}::{4}",
 								target.DeclaringType.Name, target.Name, define, impure.DeclaringType.Name, impure.Name);
 							Log.WriteLine (this, mesg);
 							
@@ -207,7 +209,7 @@ namespace Gendarme.Rules.Correctness {
 				if (!attr.HasConstructorArguments)
 					continue;
 				if (StringConstructor.Matches (attr.Constructor)) {
-					if (attr.AttributeType.FullName == "System.Diagnostics.ConditionalAttribute") {
+					if (attr.AttributeType.IsNamed ("System.Diagnostics", "ConditionalAttribute")) {
 						return (string) attr.ConstructorArguments [0].Value;
 					}
 				}
@@ -258,7 +260,7 @@ namespace Gendarme.Rules.Correctness {
 			
 			if (method != null) {
 				TypeDefinition type = method.DeclaringType;
-				string type_name = type.FullName;
+				string type_name = type.GetFullName ();
 				string method_name = method.Name;
 
 				// getters
@@ -274,7 +276,7 @@ namespace Gendarme.Rules.Correctness {
 					return true;
 				
 				// operators
-				if (method_name.StartsWith ("op_") && method_name != "op_Implicit" && method_name != "op_Explicit")
+				if (method_name.StartsWith ("op_", StringComparison.Ordinal) && method_name != "op_Implicit" && method_name != "op_Explicit")
 					return true;
 					
 				// Contract methods (skip namespace)
@@ -282,10 +284,10 @@ namespace Gendarme.Rules.Correctness {
 					return true;
 					
 				// System.Predicate<T> and System.Comparison<T>
-				if (type_name.StartsWith ("System.Predicate`1"))
+				if (type_name.StartsWith ("System.Predicate`1", StringComparison.Ordinal))
 					return true;
 					
-				if (type_name.StartsWith ("System.Comparison`1"))
+				if (type_name.StartsWith ("System.Comparison`1", StringComparison.Ordinal))
 					return true;
 					
 				// delegate invocation
@@ -317,7 +319,7 @@ namespace Gendarme.Rules.Correctness {
 		static bool HasPureAttribute (IList<CustomAttribute> attrs)
 		{
 			foreach (CustomAttribute attr in attrs) {
-				if (attr.AttributeType.FullName.Contains ("PureAttribute")) {
+				if (attr.AttributeType.Name == "PureAttribute") {
 					return true;
 				}
 			}
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/BadRecursiveInvocationRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/BadRecursiveInvocationRule.cs
index 6593f04..356d11a 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/BadRecursiveInvocationRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/BadRecursiveInvocationRule.cs
@@ -99,10 +99,9 @@ namespace Gendarme.Rules.Correctness {
 			if (!explicit_interface && (t2r != null) && !t2r.IsInterface)
 				return true;
 
-			string t2name = t2.FullName;
 			// we're calling into an interface and this could be us!
 			foreach (MethodReference mr in method1.Resolve ().Overrides) {
-				if (t2name == mr.DeclaringType.FullName)
+				if (mr.DeclaringType.IsNamed (t2.Namespace, t2.Name))
 					return true;
 			}
 			return false;
@@ -134,7 +133,7 @@ namespace Gendarme.Rules.Correctness {
 					ParameterDefinition param = (ParameterDefinition) insn.Operand;
 					if (method.IsStatic)
 						paramNum++;
-					return (param.GetSequence () == paramNum);
+					return (param.Index == paramNum - 1);
 				case Code.Ldarg_0:
 				case Code.Ldarg_1:
 				case Code.Ldarg_2:
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/CheckParametersNullityInVisibleMethodsRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/CheckParametersNullityInVisibleMethodsRule.cs
index c5e0e64..506a9c0 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/CheckParametersNullityInVisibleMethodsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/CheckParametersNullityInVisibleMethodsRule.cs
@@ -106,9 +106,9 @@ namespace Gendarme.Rules.Correctness {
 			if (parameter.IsOut)
 				return;
 
-			int sequence = parameter.GetSequence ();
+			int sequence = parameter.Index;
 			// ldarg this - 'this' cannot be null
-			if (sequence == 0)
+			if (sequence == -1)
 				return;
 
 			// was there a null check done before ?	
@@ -146,7 +146,7 @@ namespace Gendarme.Rules.Correctness {
 				return;
 
 			// avoid checking parameters where a null check was already found
-			if (has_null_check.Get (parameter.GetSequence ()))
+			if (has_null_check.Get (parameter.Index))
 				return;
 
 			Instruction next = ins.Next;
@@ -158,21 +158,21 @@ namespace Gendarme.Rules.Correctness {
 				nc = next.OpCode.Code;
 				break;
 			case Code.Isinst:
-				has_null_check.Set (parameter.GetSequence ());
+				has_null_check.Set (parameter.Index);
 				return;
 			}
 
 			if (null_compare.Get (nc)) {
-				has_null_check.Set (parameter.GetSequence ());
+				has_null_check.Set (parameter.Index);
 			} else {
 				// compare with null (next or previous to current instruction)
 				// followed by a CEQ instruction
 				if (nc == Code.Ldnull) {
 					if (next.Next.OpCode.Code == Code.Ceq)
-						has_null_check.Set (parameter.GetSequence ());
+						has_null_check.Set (parameter.Index);
 				} else if (nc == Code.Ceq) {
 					if (ins.Previous.OpCode.Code == Code.Ldnull)
-						has_null_check.Set (parameter.GetSequence ());
+						has_null_check.Set (parameter.Index);
 				}
 			}
 		}
@@ -204,7 +204,7 @@ namespace Gendarme.Rules.Correctness {
 					pi = pi.Previous;
 				ParameterDefinition p = pi.GetParameter (method);
 				if (p != null)
-					has_null_check.Set (p.GetSequence ());
+					has_null_check.Set (p.Index);
 			}
 		}
 
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/DeclareEventsExplicitlyRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/DeclareEventsExplicitlyRule.cs
new file mode 100644
index 0000000..442572e
--- /dev/null
+++ b/gendarme/rules/Gendarme.Rules.Correctness/DeclareEventsExplicitlyRule.cs
@@ -0,0 +1,96 @@
+//
+// Gendarme.Rules.Correctness.DeclareEventsExplicitlyRule
+//
+// Authors:
+//	Sebastien Pouliot <sebastien at ximian.com>
+//
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using Mono.Cecil;
+
+using Gendarme.Framework;
+
+namespace Gendarme.Rules.Correctness {
+
+	/// <summary>
+	/// This rule detect is an event handler was declared without the <c>event</c>
+	/// keyword, making the declaration a simple field in its type. Such occurances
+	/// are likely a typo and should be fixed.
+	/// </summary>
+	/// <example>
+	/// Bad example:
+	/// <code>
+	/// public class EventLess {
+	///	public static EventHandler<EventArgs> MyEvent;
+	/// }
+	/// </code>
+	/// </example>
+	/// <example>
+	/// Good example:
+	/// <code>
+	/// public class Event {
+	///	public static event EventHandler<EventArgs> MyEvent;
+	/// }
+	/// </code>
+	/// </example>
+	// suggested in https://bugzilla.novell.com/show_bug.cgi?id=669192
+	[Problem ("An event handler was declared without the 'event' keyword")]
+	[Solution ("Add the missing 'event' keyword to your event handler declaration")]
+	public class DeclareEventsExplicitlyRule : Rule, ITypeRule {
+
+		static bool LookForEvent (MemberReference field, TypeDefinition type)
+		{
+			string fname = field.Name;
+			foreach (EventDefinition evnt in type.Events) {
+				if (fname == evnt.Name)
+					return true;
+			}
+			return false;
+		}
+
+		public RuleResult CheckType (TypeDefinition type)
+		{
+			if (!type.HasFields || type.IsEnum)
+				return RuleResult.DoesNotApply;
+
+			// allow to short-circuit LookForEvent if the type has no event
+			bool has_events = type.HasEvents;
+			foreach (FieldDefinition field in type.Fields) {
+				TypeReference ftype = field.FieldType;
+				if (ftype.Namespace != "System")
+					continue;
+
+				switch (ftype.Name) {
+				case "EventHandler":
+				case "EventHandler`1":
+					// is there (any?) event matching the field name ?
+					if (!has_events || !LookForEvent (field, type))
+						Runner.Report (field, Severity.High, Confidence.High);
+					break;
+				}
+			}
+
+			return Runner.CurrentRuleResult;
+		}
+	}
+}
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/DisposableFieldsShouldBeDisposedRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/DisposableFieldsShouldBeDisposedRule.cs
index 576fff2..7152176 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/DisposableFieldsShouldBeDisposedRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/DisposableFieldsShouldBeDisposedRule.cs
@@ -30,6 +30,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -116,7 +117,7 @@ namespace Gendarme.Rules.Correctness {
 
 			// note: other rule will complain if there are disposable or native fields
 			// in a type that doesn't implement IDisposable, so we don't bother here
-			if (!type.Implements ("System.IDisposable"))
+			if (!type.Implements ("System", "IDisposable"))
 				return RuleResult.DoesNotApply;
 
 			MethodDefinition implicitDisposeMethod = GetNonAbstractMethod (type, MethodSignatures.Dispose);
@@ -148,7 +149,7 @@ namespace Gendarme.Rules.Correctness {
 				TypeDefinition fieldType = field.FieldType.Resolve ();
 				if (fieldType == null)
 					continue;
-				if (fieldType.Implements ("System.IDisposable"))
+				if (fieldType.Implements ("System", "IDisposable"))
 					disposeableFields.Add (field);
 			}
 
@@ -177,10 +178,10 @@ namespace Gendarme.Rules.Correctness {
 		private void CheckBaseDispose (TypeDefinition type, MethodDefinition implicitDisposeMethod, MethodDefinition explicitDisposeMethod)
 		{
 			TypeDefinition baseType = type;
-			while (baseType.BaseType.FullName != "System.Object") {
+			while (!baseType.BaseType.IsNamed ("System", "Object")) {
 				baseType = baseType.BaseType.Resolve ();
 				// also checks parents, so no need to search further
-				if ((baseType == null) || !baseType.Implements ("System.IDisposable"))
+				if ((baseType == null) || !baseType.Implements ("System", "IDisposable"))
 					break;
 
 				//we just check for Dispose() here
@@ -196,7 +197,7 @@ namespace Gendarme.Rules.Correctness {
 			}
 		}
 
-		private void CheckIfBaseDisposeIsCalled (MethodDefinition method, MethodDefinition baseMethod)
+		private void CheckIfBaseDisposeIsCalled (MethodDefinition method, MemberReference baseMethod)
 		{
 			bool found = false;
 
@@ -215,7 +216,7 @@ namespace Gendarme.Rules.Correctness {
 						if (call.OpCode.Code != Code.Call && call.OpCode.Code != Code.Callvirt)
 							continue;
 						MethodReference calledMethod = (MethodReference) call.Operand;
-						if (calledMethod.ToString () != baseMethod.ToString ())
+						if (calledMethod.GetFullName () != baseMethod.GetFullName ())
 							continue;
 						found = true;
 					}
@@ -223,7 +224,7 @@ namespace Gendarme.Rules.Correctness {
 			}
 
 			if (!found) {
-				string s = String.Format ("{0} should call base.Dispose().", method.ToString ());
+				string s = String.Format (CultureInfo.InvariantCulture, "{0} should call base.Dispose().", method.GetFullName ());
 				Runner.Report (method, Severity.Medium, Confidence.High, s);
 			}
 		}
@@ -256,7 +257,8 @@ namespace Gendarme.Rules.Correctness {
 				return;
 
 			foreach (FieldDefinition field in fields) {
-				string s = string.Format ("Since {0} is Disposable {1}() should call {0}.Dispose()", field.Name, method.Name);
+				string s = String.Format (CultureInfo.InvariantCulture, 
+					"Since {0} is Disposable {1}() should call {0}.Dispose()", field.Name, method.Name);
 				Runner.Report (field, Severity.High, Confidence.High, s);
 			}
 		}
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/DoNotRoundIntegersRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/DoNotRoundIntegersRule.cs
index a788d00..64172e6 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/DoNotRoundIntegersRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/DoNotRoundIntegersRule.cs
@@ -27,11 +27,14 @@
 //
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
 
 using Gendarme.Framework;
+using Gendarme.Framework.Engines;
+using Gendarme.Framework.Helpers;
 using Gendarme.Framework.Rocks;
 
 namespace Gendarme.Rules.Correctness {
@@ -41,8 +44,8 @@ namespace Gendarme.Rules.Correctness {
 	// ICAST: int value cast to float and then passed to Math.round (ICAST_INT_CAST_TO_FLOAT_PASSED_TO_ROUND)
 
 	/// <summary>
-	/// This rule check for attempts to call <c>Round</c>, <c>Ceiling</c>, <c>Floor</c> or
-	/// <c>Truncate</c> on an integral type. This often indicate a typo in the source code
+	/// This rule check for attempts to call <c>System.Math.Round</c>, <c>System.Math.Ceiling</c>, <c>System.Math.Floor</c> or
+	/// <c>System.Math.Truncate</c> on an integral type. This often indicate a typo in the source code
 	/// (e.g. wrong variable) or an unnecessary operation.
 	/// </summary>
 	/// <example>
@@ -63,10 +66,10 @@ namespace Gendarme.Rules.Correctness {
 	/// }
 	/// </code>
 	/// </example>
-	/// <remarks>This rule is available since Gendarme 2.0</remarks>
 
 	[Problem ("This method calls round/ceil/floor/truncate with an integer value.")]
 	[Solution ("Verify the code logic. This could be a typo (wrong variable) or an unnecessary operation.")]
+	[EngineDependency (typeof (OpCodeEngine))]
 	public class DoNotRoundIntegersRule : Rule, IMethodRule {
 
 		static TypeReference GetType (Instruction ins, MethodDefinition method)
@@ -105,8 +108,8 @@ namespace Gendarme.Rules.Correctness {
 				if (rv.IsFloatingPoint ())
 					return null;
 				// but convertion into decimals are not...
-				if (rv.FullName == "System.Decimal") {
-					if (mr.DeclaringType.FullName != "System.Decimal")
+				if (rv.IsNamed ("System", "Decimal")) {
+					if (!mr.DeclaringType.IsNamed ("System", "Decimal"))
 						return null;
 
 					// ... unless it's a convertion from a FP value
@@ -137,9 +140,13 @@ namespace Gendarme.Rules.Correctness {
 			if (!method.HasBody)
 				return RuleResult.DoesNotApply;
 
+			// exclude methods that don't have calls
+			if (!OpCodeBitmask.Calls.Intersect (OpCodeEngine.GetBitmask (method)))
+				return RuleResult.DoesNotApply;
+
 			foreach (Instruction ins in method.Body.Instructions) {
 				MethodReference mr = ins.GetMethod ();
-				if ((mr == null) || (mr.DeclaringType.FullName != "System.Math"))
+				if ((mr == null) || !mr.DeclaringType.IsNamed ("System", "Math"))
 					continue;
 
 				Instruction value = null;
@@ -171,7 +178,8 @@ namespace Gendarme.Rules.Correctness {
 				if (type == null)
 					continue;
 
-				string msg = string.Format ("Math.{0} called on a {1}.", name, type.FullName);
+				string msg = String.Format (CultureInfo.InvariantCulture, "Math.{0} called on a {1}.", 
+					name, type.GetFullName ());
 				Runner.Report (method, ins, Severity.Medium, Confidence.Normal, msg);
 			}
 			return Runner.CurrentRuleResult;
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/DontCompareWithNaNRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/DontCompareWithNaNRule.cs
index ffa5a6b..0de96ec 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/DontCompareWithNaNRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/DontCompareWithNaNRule.cs
@@ -74,21 +74,6 @@ namespace Gendarme.Rules.Correctness {
 		private const string EqualityMessage = "A floating point value is compared (== or !=) with [Single|Double].NaN.";
 		private const string EqualsMessage = "[Single|Double].Equals is called using NaN.";
 
-		private static string[] FloatingPointTypes = { "System.Single", "System.Double" };
-
-		public override void Initialize (IRunner runner)
-		{
-			base.Initialize (runner);
-
-			// we want to avoid checking all methods if the module doesn't refer to either
-			// System.Single or System.Double (big performance difference)
-			// note: mscorlib.dll is an exception since it defines, not refer, System.Single and Double
-			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				Active = (e.CurrentAssembly.Name.Name == "mscorlib") ||
-					e.CurrentModule.HasAnyTypeReference (FloatingPointTypes);
-			};
-		}
-
 		private static bool CheckPrevious (IList<Instruction> il, int index)
 		{
 			for (int i = index; i >= 0; i--) {
@@ -143,7 +128,7 @@ namespace Gendarme.Rules.Correctness {
 				case Code.Call:
 				case Code.Callvirt:
 					MemberReference callee = ins.Operand as MemberReference;
-					if ((callee != null) && callee.Name.Equals ("Equals") && callee.DeclaringType.IsFloatingPoint ()) {
+					if ((callee != null) && (callee.Name == "Equals") && callee.DeclaringType.IsFloatingPoint ()) {
 						if (!CheckPrevious (il, i - 1)) {
 							Runner.Report (method, ins, Severity.Critical, Confidence.Total, EqualsMessage);
 						}
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/EnsureLocalDisposalRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/EnsureLocalDisposalRule.cs
index 14c0c33..6d1c73d 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/EnsureLocalDisposalRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/EnsureLocalDisposalRule.cs
@@ -3,8 +3,10 @@
 //
 // Authors:
 //	Cedric Vivier <cedricv at neonux.com>
+//	Sebastien Pouliot <sebastien at ximian.com>
 //
 // Copyright (C) 2008 Cedric Vivier
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
@@ -26,6 +28,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -115,7 +118,7 @@ namespace Gendarme.Rules.Correctness {
 	public sealed class EnsureLocalDisposalRule : Rule, IMethodRule {
 
 		OpCodeBitmask callsAndNewobjBitmask = BuildCallsAndNewobjOpCodeBitmask ();
-		HashSet<Instruction> suspectLocals = new HashSet<Instruction> ();
+		Bitmask<ulong> locals = new Bitmask<ulong> ();
 
 		static bool IsDispose (MethodReference call)
 		{
@@ -134,57 +137,109 @@ namespace Gendarme.Rules.Correctness {
 			if (method.IsConstructor) {
 				if (method.DeclaringType.IsGeneratedCode ())
 					return false; //eg. generators
-				return method.DeclaringType.Implements ("System.IDisposable");
+				return method.DeclaringType.Implements ("System", "IDisposable");
 			}
 
-			return method.ReturnType.Implements ("System.IDisposable");
+			return method.ReturnType.Implements ("System", "IDisposable");
 		}
 
-		static bool AreBothInstructionsInSameTryFinallyBlock (MethodBody body, Instruction a, Instruction b)
+		static bool IsSetter (MethodReference m)
 		{
+			if (m == null)
+				return false;
+			MethodDefinition md = m.Resolve ();
+			if (md == null)
+				return m.Name.StartsWith ("set_", StringComparison.Ordinal);
+			return md.IsSetter;
+		}
+
+		static bool IsInsideFinallyBlock (MethodDefinition method, Instruction ins)
+		{
+			MethodBody body = method.Body;
+			if (!body.HasExceptionHandlers)
+				return false;
+
 			foreach (ExceptionHandler eh in body.ExceptionHandlers) {
 				if (eh.HandlerType != ExceptionHandlerType.Finally)
 					continue;
-				if (eh.TryStart.Offset <= a.Next.Offset && eh.TryEnd.Offset >= a.Offset
-					&& eh.HandlerStart.Offset <= b.Offset && eh.HandlerEnd.Offset >= b.Offset)
+				if (ins.Offset >= eh.HandlerStart.Offset || ins.Offset < eh.HandlerEnd.Offset)
 					return true;
 			}
 			return false;
 		}
 
-		static Instruction LocalTraceBack (IMethodSignature method, Instruction ins)
+		void Clear (MethodDefinition method, Instruction ins)
 		{
-			ins = ins.TraceBack (method);
-			while (ins != null) {
-				if (ins.IsLoadLocal () || ins.IsStoreLocal ())
-					return ins;
-				ins = ins.TraceBack (method);
+			VariableDefinition v = ins.GetVariable (method);
+			if (v != null)
+				locals.Clear ((ulong) v.Index);
+		}
+
+		void CheckForReturn (MethodDefinition method, Instruction ins)
+		{
+			if (ins.IsLoadLocal ())
+				Clear (method, ins);
+		}
+
+		void CheckForOutParameters (MethodDefinition method, Instruction ins)
+		{
+			Instruction iref = ins.TraceBack (method);
+			if (iref == null)
+				return;
+			ParameterDefinition p = iref.GetParameter (method);
+			if ((p != null) && p.IsOut) {
+				ins = ins.Previous;
+				if (ins.IsLoadLocal ())
+					Clear (method, ins);
 			}
-			return null;
 		}
 
-		Instruction FindRelatedSuspectLocal (MethodDefinition method, Instruction ins)
+		void CheckDisposeCalls (MethodDefinition method, Instruction ins)
 		{
-			ins = LocalTraceBack (method, ins);
-			if (null == ins)
-				return null;
-
-			int index = ins.GetVariable (method).Index;
-			foreach (var local in suspectLocals) {
-				if (local.GetVariable (method).Index == index)
-					return local;
+			Instruction instance = ins.TraceBack (method);
+			if (instance == null)
+				return;
+
+			VariableDefinition v = instance.GetVariable (method);
+			ulong index = v == null ? UInt64.MaxValue : (ulong) v.Index;
+			if (v != null && locals.Get (index)) {
+				if (!IsInsideFinallyBlock (method, ins)) {
+					string msg = String.Format (CultureInfo.InvariantCulture,
+						"Local {0}is not guaranteed to be disposed of.",
+						GetFriendlyNameOrEmpty (v));
+					Runner.Report (method, Severity.Medium, Confidence.Normal, msg);
+				}
+				locals.Clear (index);
 			}
-			return null;
 		}
 
-		static bool IsSetter (MethodReference m)
+		bool CheckCallsToOtherInstances (MethodDefinition method, Instruction ins, MethodReference call)
 		{
-			if (m == null)
+			Instruction p = ins.TraceBack (method, 0);
+			if (p.Is (Code.Ldarg_0))
 				return false;
-			MethodDefinition md = m.Resolve ();
-			if (md == null)
-				return m.Name.StartsWith ("set_", StringComparison.Ordinal);
-			return md.IsSetter;
+
+			if (call.HasParameters) {
+				for (int i = 1; i <= call.Parameters.Count; i++) {
+					p = ins.TraceBack (method, -i);
+					Clear (method, p);
+				}
+			}
+			return true;
+		}
+
+		void CheckReassignment (MethodDefinition method, Instruction ins)
+		{
+			VariableDefinition v = ins.GetVariable (method);
+			ulong index = (ulong) v.Index;
+			if (locals.Get (index)) {
+				string msg = String.Format (CultureInfo.InvariantCulture,
+					"Local {0}is not disposed before being re-assigned.",
+					GetFriendlyNameOrEmpty (v));
+				Runner.Report (method, ins, Severity.High, Confidence.Normal, msg);
+			} else {
+				locals.Set (index);
+			}
 		}
 
 		public RuleResult CheckMethod (MethodDefinition method)
@@ -193,36 +248,42 @@ namespace Gendarme.Rules.Correctness {
 				return RuleResult.DoesNotApply;
 
 			//is there any potential IDisposable-getting opcode in the method?
-			OpCodeBitmask methodBitmask = OpCodeEngine.GetBitmask (method);
-			if (!callsAndNewobjBitmask.Intersect (methodBitmask))
+			if (!callsAndNewobjBitmask.Intersect (OpCodeEngine.GetBitmask (method)))
 				return RuleResult.DoesNotApply;
 
-			//we ignore methods/constructors that returns IDisposable themselves
-			//where local(s) are most likely used for disposable object construction
-			if (DoesReturnDisposable (method))
-				return RuleResult.DoesNotApply;
+			// we will not report IDiposable locals that are returned from a method
+			bool return_idisposable = DoesReturnDisposable (method);
 
-			suspectLocals.Clear ();
+			locals.ClearAll ();
 
-			MethodBody body = method.Body;
-			foreach (Instruction ins in body.Instructions) {
-				if (!callsAndNewobjBitmask.Get (ins.OpCode.Code))
+			foreach (Instruction ins in method.Body.Instructions) {
+				Code code = ins.OpCode.Code;
+				switch (code) {
+				case Code.Ret:
+					if (return_idisposable)
+						CheckForReturn (method, ins.Previous);
 					continue;
+				case Code.Stind_Ref:
+					CheckForOutParameters (method, ins);
+					continue;
+				default:
+					if (!callsAndNewobjBitmask.Get (code))
+						continue;
+					break;
+				}
 
 				MethodReference call = (MethodReference) ins.Operand;
 
 				if (IsDispose (call)) {
-					Instruction local = FindRelatedSuspectLocal (method, ins);
-					if (local != null) {
-						if (!AreBothInstructionsInSameTryFinallyBlock (body, local, ins)) {
-							string msg = string.Format ("Local {0}is not guaranteed to be disposed of.", GetFriendlyNameOrEmpty (local.GetVariable (method)));
-							Runner.Report (method, local, Severity.Medium, Confidence.Normal, msg);
-						}
-						suspectLocals.Remove (local);
-					}
+					CheckDisposeCalls (method, ins);
 					continue;
 				}
 
+				if (call.HasThis && (code != Code.Newobj)) {
+					if (!CheckCallsToOtherInstances (method, ins, call))
+						continue;
+				}
+
 				if (!DoesReturnDisposable (call))
 					continue;
 
@@ -233,40 +294,47 @@ namespace Gendarme.Rules.Correctness {
 				Code nextCode = nextInstruction.OpCode.Code;
 				if (nextCode == Code.Pop || OpCodeBitmask.Calls.Get (nextCode)) {
 					// We ignore setter because it is an obvious share of the IDisposable
-					if (IsSetter (nextInstruction.Operand as MethodReference))
-						continue;
-
-					ReportCall (method, ins, call);
-					continue;
+					if (!IsSetter (nextInstruction.Operand as MethodReference))
+						ReportCall (method, ins, call);
+				} else if (nextInstruction.IsStoreLocal ()) {
+					// make sure we're not re-assigning over a non-disposed IDisposable
+					CheckReassignment (method, nextInstruction);
 				}
-				
-				//even if an IDisposable, it isn't stored in a local
-				if (nextInstruction.IsStoreLocal ())
-					suspectLocals.Add (nextInstruction);
 			}
 
-			foreach (var local in suspectLocals) {
-				string msg = string.Format ("Local {0}is not disposed of (at least not locally).", GetFriendlyNameOrEmpty (local.GetVariable (method)));
-				Runner.Report (method, local, Severity.High, Confidence.Normal, msg);
-			}
+			ReportNonDisposedLocals (method);
 
 			return Runner.CurrentRuleResult;
 		}
 
+		void ReportNonDisposedLocals (MethodDefinition method)
+		{
+			for (ulong i = 0; i < 64; i++) {
+				if (!locals.Get (i))
+					continue;
+				string msg = String.Format (CultureInfo.InvariantCulture,
+					"Local {0}is not disposed of (at least not locally).",
+					GetFriendlyNameOrEmpty (method.Body.Variables [(int) i]));
+				Runner.Report (method, Severity.High, Confidence.Normal, msg);
+			}
+		}
+
 		static bool IsFluentLike (MethodReference method)
 		{
-			string rtype = method.ReturnType.FullName;
+			TypeReference rtype = method.ReturnType;
+			string nspace = rtype.Namespace;
+			string name = rtype.Name;
 			// StringBuilder StringBuilder.Append (...)
-			if (rtype == method.DeclaringType.FullName)
+			if (method.DeclaringType.IsNamed (nspace, name))
 				return true;
-			return (method.HasParameters && rtype == method.Parameters [0].ParameterType.FullName);
+			return (method.HasParameters && method.Parameters [0].ParameterType.IsNamed (nspace, name));
 		}
 
 		void ReportCall (MethodDefinition method, Instruction ins, MethodReference call)
 		{
 			TypeReference type = ins.Is (Code.Newobj) ? call.DeclaringType : call.ReturnType;
 			bool fluent = IsFluentLike (call);
-			string msg = string.Format ("Local of type '{0}' is not disposed of ({1}).",
+			string msg = String.Format (CultureInfo.InvariantCulture, "Local of type '{0}' is not disposed of ({1}).",
 				type.Name, fluent ? "is this a fluent-like API ?" : "at least not locally");
 			Runner.Report (method, ins, Severity.High, fluent ? Confidence.Normal : Confidence.High, msg);
 		}
@@ -275,8 +343,8 @@ namespace Gendarme.Rules.Correctness {
 		{
 			string tname = variable.VariableType.Name;
 			if (variable.IsGeneratedName ())
-				return string.Format ("of type '{0}' ", tname);
-			return string.Format ("'{0}' of type '{1}' ", variable.Name, tname);
+				return String.Format (CultureInfo.InvariantCulture, "of type '{0}' ", tname);
+			return String.Format (CultureInfo.InvariantCulture, "'{0}' of type '{1}' ", variable.Name, tname);
 		}
 
 		static OpCodeBitmask BuildCallsAndNewobjOpCodeBitmask ()
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/FloatComparisonRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/FloatComparisonRule.cs
index 39f8fe7..51d5806 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/FloatComparisonRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/FloatComparisonRule.cs
@@ -41,8 +41,6 @@ namespace Gendarme.Rules.Correctness {
 	[EngineDependency (typeof (OpCodeEngine))]
 	abstract public class FloatingComparisonRule : Rule {
 
-		private static string[] FloatingPointTypes = { "System.Single", "System.Double" };
-
 		public override void Initialize (IRunner runner)
 		{
 			base.Initialize (runner);
@@ -52,7 +50,9 @@ namespace Gendarme.Rules.Correctness {
 			// note: mscorlib.dll is an exception since it defines, not refer, System.Single and Double
 			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
 				Active = (e.CurrentAssembly.Name.Name == "mscorlib") ||
-					e.CurrentModule.HasAnyTypeReference (FloatingPointTypes);
+					e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+						return tr.IsFloatingPoint ();
+					});
 			};
 		}
 
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/Gendarme.Rules.Correctness.csproj b/gendarme/rules/Gendarme.Rules.Correctness/Gendarme.Rules.Correctness.csproj
index 505ef8f..4258d86 100755
--- a/gendarme/rules/Gendarme.Rules.Correctness/Gendarme.Rules.Correctness.csproj
+++ b/gendarme/rules/Gendarme.Rules.Correctness/Gendarme.Rules.Correctness.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -12,9 +12,11 @@
     <AssemblyName>Gendarme.Rules.Correctness</AssemblyName>
     <FileUpgradeFlags>
     </FileUpgradeFlags>
-    <OldToolsVersion>2.0</OldToolsVersion>
+    <OldToolsVersion>3.5</OldToolsVersion>
     <UpgradeBackupLocation>
     </UpgradeBackupLocation>
+    <IsWebBootstrapper>true</IsWebBootstrapper>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <PublishUrl>http://localhost/Gendarme.Rules.Correctness/</PublishUrl>
     <Install>true</Install>
     <InstallFrom>Web</InstallFrom>
@@ -27,10 +29,9 @@
     <MapFileExtensions>true</MapFileExtensions>
     <ApplicationRevision>0</ApplicationRevision>
     <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>true</IsWebBootstrapper>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -43,6 +44,7 @@
     <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Correctness.xml</DocumentationFile>
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -54,6 +56,7 @@
     <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Correctness.xml</DocumentationFile>
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -107,6 +110,9 @@
     <Compile Include="ReviewUseOfInt64BitsToDoubleRule.cs" />
     <Compile Include="ReviewUselessControlFlowRule.cs" />
     <Compile Include="ReviewUseOfModuloOneOnIntegersRule.cs" />
+    <Compile Include="TypesShouldBeDisposableBaseRule.cs" />
+    <Compile Include="TypesWithDisposableFieldsShouldBeDisposableRule.cs" />
+    <Compile Include="TypesWithNativeFieldsShouldBeDisposableRule.cs" />
     <Compile Include="UseNoInliningWithGetCallingAssemblyRule.cs" />
     <Compile Include="UseValueInPropertySetterRule.cs" />
     <None Include="ChangeLog" />
@@ -129,14 +135,33 @@
     </ProjectReference>
   </ItemGroup>
   <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/Makefile.am b/gendarme/rules/Gendarme.Rules.Correctness/Makefile.am
index 9dabf5f..a338289 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/Makefile.am
+++ b/gendarme/rules/Gendarme.Rules.Correctness/Makefile.am
@@ -6,6 +6,7 @@ rules_sources =  \
 	AvoidConstructorsInStaticTypesRule.cs \
 	AvoidFloatingPointEqualityRule.cs \
 	AvoidMethodsWithSideEffectsInConditionalCodeRule.cs \
+	DeclareEventsExplicitlyRule.cs \
 	DoNotRecurseInEqualityRule.cs \
 	BadRecursiveInvocationRule.cs \
 	CallingEqualsWithNullArgRule.cs \
@@ -29,6 +30,9 @@ rules_sources =  \
 	ReviewUselessControlFlowRule.cs \
 	ReviewUseOfInt64BitsToDoubleRule.cs \
 	ReviewUseOfModuloOneOnIntegersRule.cs \
+	TypesShouldBeDisposableBaseRule.cs \
+	TypesWithDisposableFieldsShouldBeDisposableRule.cs \
+	TypesWithNativeFieldsShouldBeDisposableRule.cs \
 	UseNoInliningWithGetCallingAssemblyRule.cs \
 	UseValueInPropertySetterRule.cs
 
@@ -50,6 +54,7 @@ tests_sources = \
 	AvoidConstructorsInStaticTypesTest.cs \
 	AvoidFloatingPointEqualityTest.cs \
 	AvoidMethodsWithSideEffectsInConditionalCodeTest.cs \
+	DeclareEventsExplicitlyTest.cs \
 	DoNotRecurseInEqualityTest.cs \
 	BadRecursiveInvocationTest.cs \
 	CallingEqualsWithNullArgTest.cs \
@@ -73,5 +78,7 @@ tests_sources = \
 	ReviewUselessControlFlowTest.cs \
 	ReviewUseOfInt64BitsToDoubleTest.cs \
 	ReviewUseOfModuloOneOnIntegersTest.cs \
+	TypesWithDisposableFieldsShouldBeDisposableTest.cs \
+	TypesWithNativeFieldsShouldBeDisposableTest.cs \
 	UseNoInliningWithGetCallingAssemblyTest.cs \
 	UseValueInPropertySetterTest.cs
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/Makefile.in b/gendarme/rules/Gendarme.Rules.Correctness/Makefile.in
index f39111c..0b9c96d 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Correctness/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(rules_categorydir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
-rules_categorySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(rules_category_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,20 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(rules_documentation_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -130,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -259,6 +335,7 @@ rules_sources = \
 	AvoidConstructorsInStaticTypesRule.cs \
 	AvoidFloatingPointEqualityRule.cs \
 	AvoidMethodsWithSideEffectsInConditionalCodeRule.cs \
+	DeclareEventsExplicitlyRule.cs \
 	DoNotRecurseInEqualityRule.cs \
 	BadRecursiveInvocationRule.cs \
 	CallingEqualsWithNullArgRule.cs \
@@ -282,6 +359,9 @@ rules_sources = \
 	ReviewUselessControlFlowRule.cs \
 	ReviewUseOfInt64BitsToDoubleRule.cs \
 	ReviewUseOfModuloOneOnIntegersRule.cs \
+	TypesShouldBeDisposableBaseRule.cs \
+	TypesWithDisposableFieldsShouldBeDisposableRule.cs \
+	TypesWithNativeFieldsShouldBeDisposableRule.cs \
 	UseNoInliningWithGetCallingAssemblyRule.cs \
 	UseValueInPropertySetterRule.cs
 
@@ -294,6 +374,7 @@ tests_sources = \
 	AvoidConstructorsInStaticTypesTest.cs \
 	AvoidFloatingPointEqualityTest.cs \
 	AvoidMethodsWithSideEffectsInConditionalCodeTest.cs \
+	DeclareEventsExplicitlyTest.cs \
 	DoNotRecurseInEqualityTest.cs \
 	BadRecursiveInvocationTest.cs \
 	CallingEqualsWithNullArgTest.cs \
@@ -317,6 +398,8 @@ tests_sources = \
 	ReviewUselessControlFlowTest.cs \
 	ReviewUseOfInt64BitsToDoubleTest.cs \
 	ReviewUseOfModuloOneOnIntegersTest.cs \
+	TypesWithDisposableFieldsShouldBeDisposableTest.cs \
+	TypesWithNativeFieldsShouldBeDisposableTest.cs \
 	UseNoInliningWithGetCallingAssemblyTest.cs \
 	UseValueInPropertySetterTest.cs
 
@@ -327,14 +410,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Correctness/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Correctness/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Correctness/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Correctness/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -344,6 +427,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../common.make $(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -352,42 +436,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-rules_categorySCRIPTS: $(rules_category_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_categorydir)" || $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)"
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_categorydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(rules_categorySCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	    $(rules_categorySCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rules_categorydir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rules_categorydir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-rules_categorySCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	done
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(rules_categorydir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -396,7 +501,7 @@ uninstall-rules_documentationDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -413,7 +518,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -421,7 +526,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -447,16 +552,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -464,14 +569,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -483,7 +588,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -492,29 +597,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -535,29 +645,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -580,10 +702,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -591,6 +718,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -610,6 +738,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -619,18 +749,28 @@ install-data-am: install-rules_categorySCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -652,8 +792,8 @@ ps-am:
 uninstall-am: uninstall-rules_categorySCRIPTS \
 	uninstall-rules_documentationDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -673,11 +813,11 @@ uninstall-am: uninstall-rules_categorySCRIPTS \
 
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -686,7 +826,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
@@ -709,6 +849,7 @@ clean-local:
 
 Test/Resources.resources: $(tests_resource_resx)
 	resgen2 -usesourcepath -compile $(tests_resource_resx),Test/Resources.resources;
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/MethodCanBeMadeStaticRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/MethodCanBeMadeStaticRule.cs
index bab18df..b760958 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/MethodCanBeMadeStaticRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/MethodCanBeMadeStaticRule.cs
@@ -114,7 +114,7 @@ namespace Gendarme.Rules.Correctness {
 
 			// methods with [Conditional] can be empty (not using 'this') IL-wise but not source-wise, ignore them
 			if (method.HasCustomAttributes) {
-				if (method.CustomAttributes.ContainsType ("System.Diagnostics.ConditionalAttribute"))
+				if (method.HasAttribute ("System.Diagnostics", "ConditionalAttribute"))
 					return RuleResult.DoesNotApply;
 			}
 
@@ -130,7 +130,7 @@ namespace Gendarme.Rules.Correctness {
 			foreach (Instruction instr in method.Body.Instructions) {
 				if (instr.OpCode.Code == Code.Ldarg) {
 					ParameterDefinition pd = (instr.Operand as ParameterDefinition);
-					if (pd.GetSequence () == 0)
+					if (pd.Index == -1)
 						return RuleResult.Success;
 				}
 			}
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/ProvideCorrectArgumentsToFormattingMethodsRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/ProvideCorrectArgumentsToFormattingMethodsRule.cs
index f545495..92b5753 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/ProvideCorrectArgumentsToFormattingMethodsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/ProvideCorrectArgumentsToFormattingMethodsRule.cs
@@ -28,10 +28,11 @@
 //
 
 using System;
-using System.IO;
-using System.Resources;
 using System.Collections;
 using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+using System.Resources;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -115,7 +116,7 @@ namespace Gendarme.Rules.Correctness {
 		{
 			IList<Resource> resources = ad.MainModule.Resources;
 			foreach (EmbeddedResource resource in resources)
-				if (resourceClassName.Equals (resource.Name))
+				if (resourceClassName == resource.Name)
 					return resource;
 			return null;
 		}
@@ -131,7 +132,7 @@ namespace Gendarme.Rules.Correctness {
 				return null;
 
 			AssemblyDefinition ad = md.GetAssembly ();
-			string resourceClassName = md.DeclaringType.FullName + ".resources";
+			string resourceClassName = md.DeclaringType.GetFullName () + ".resources";
 			EmbeddedResource resource = GetEmbeddedResource (ad, resourceClassName);
 			if (resource == null)
 				return null;
@@ -242,13 +243,13 @@ namespace Gendarme.Rules.Correctness {
 			// String.Format (string, object, object, object) -> elementsPushed = 3
 			// String.Format (string, object[]) -> compute
 			// String.Format (IFormatProvider, string, object[]) -> compute
-			if (pdc [nbParameters - 1].ParameterType.FullName != "System.Object") {
+			if (!pdc [nbParameters - 1].ParameterType.IsNamed ("System", "Object")) {
 				// If we cannot determine the array size, we succeed (well we don't fail/report)
 				if (!TryComputeArraySize (call, method, nbParameters - 1, out elementsPushed))
 					return;
 
 				// String.Format (IFormatProvider, string, object[]) -> formatPosition = 1
-				if (pdc [0].ParameterType.FullName != "System.String")
+				if (!pdc [0].ParameterType.IsNamed ("System", "String"))
 					formatPosition = 1;
 			}
 
@@ -266,12 +267,19 @@ namespace Gendarme.Rules.Correctness {
 			}
 
 			if (expectedParameters < elementsPushed) {
-				Runner.Report (method, call, Severity.Medium, Confidence.Normal, String.Format ("Extra parameters are provided to String.Format, {0} provided but only {1} expected", elementsPushed, expectedParameters));
+				string msg = String.Format (CultureInfo.InvariantCulture, 
+					"Extra parameters are provided to String.Format, {0} provided but only {1} expected", 
+					elementsPushed, expectedParameters);
+				Runner.Report (method, call, Severity.Medium, Confidence.Normal, msg);
 				return;
 			}
 
-			if (elementsPushed < expectedParameters)
-				Runner.Report (method, call, Severity.Critical, Confidence.Normal, String.Format ("The String.Format method is expecting {0} parameters, but only {1} are found.", expectedParameters, elementsPushed));
+			if (elementsPushed < expectedParameters) {
+				string msg = String.Format (CultureInfo.InvariantCulture, 
+					"The String.Format method is expecting {0} parameters, but only {1} are found.", 
+					expectedParameters, elementsPushed);
+				Runner.Report (method, call, Severity.Critical, Confidence.Normal, msg);
+			}
 		}
 
 		public RuleResult CheckMethod (MethodDefinition method)
@@ -289,7 +297,7 @@ namespace Gendarme.Rules.Correctness {
 					continue;
 
 				MethodReference mr = (instruction.Operand as MethodReference);
-				if (formatSignature.Matches (mr) && (mr.DeclaringType.FullName == "System.String"))
+				if (formatSignature.Matches (mr) && mr.DeclaringType.IsNamed ("System", "String"))
 					CheckCallToFormatter (instruction, method);
 			}
 
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/ProvideCorrectRegexPatternRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/ProvideCorrectRegexPatternRule.cs
index 89eb1e8..ebaa25e 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/ProvideCorrectRegexPatternRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/ProvideCorrectRegexPatternRule.cs
@@ -27,6 +27,7 @@
 // THE SOFTWARE.
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -91,20 +92,23 @@ namespace Gendarme.Rules.Correctness {
 
 		static OpCodeBitmask callsAndNewobjBitmask = BuildCallsAndNewobjOpCodeBitmask ();
 
-		const string RegexClass = "System.Text.RegularExpressions.Regex";
-		const string ValidatorClass = "System.Configuration.RegexStringValidator";
-
 		public override void Initialize (IRunner runner)
 		{
 			base.Initialize (runner);
 
 			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				bool usingRegexClass = e.CurrentAssembly.Name.Name == "System"
-				                       || e.CurrentModule.HasTypeReference (RegexClass);
-				bool usingValidatorClass = e.CurrentModule.Runtime >= TargetRuntime.Net_2_0
-				                           && (e.CurrentAssembly.Name.Name == "System.Configuration"
-				                              || e.CurrentModule.HasTypeReference (ValidatorClass));
-				Active = usingRegexClass | usingValidatorClass;
+				string assembly_name = e.CurrentAssembly.Name.Name;
+				bool usingRegexClass = (assembly_name == "System");
+				bool usingValidatorClass = (e.CurrentModule.Runtime >= TargetRuntime.Net_2_0) && (assembly_name == "System.Configuration");
+				// if we're not analyzing System.dll or System.Configuration.dll then check if we're using them
+				if (!usingRegexClass && !usingValidatorClass) {
+					Active = e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+						return tr.IsNamed ("System.Text.RegularExpressions", "Regex") ||
+							tr.IsNamed ("System.Configuration", "RegexStringValidator");
+					});
+				} else {
+					Active = true;
+				}
 			};
 		}
 
@@ -127,7 +131,7 @@ namespace Gendarme.Rules.Correctness {
 				return CheckPattern (method, ins, (string) ld.Operand, confidence);
 			case Code.Ldsfld:
 				FieldReference f = (FieldReference) ld.Operand;
-				if (f.Name != "Empty" || f.DeclaringType.FullName != "System.String")
+				if (f.Name != "Empty" || !f.DeclaringType.IsNamed ("System", "String"))
 					return false;
 				return CheckPattern (method, ins, null, confidence);
 			case Code.Ldnull:
@@ -149,7 +153,8 @@ namespace Gendarme.Rules.Correctness {
 			} catch (Exception e) {
 				/* potential set of exceptions is not well documented and potentially changes with regarts to
 				   different runtime and/or runtime version. */
-				string msg = string.Format ("Pattern '{0}' is invalid. Reason: {1}", pattern, e.Message);
+				string msg = String.Format (CultureInfo.InvariantCulture, 
+					"Pattern '{0}' is invalid. Reason: {1}", pattern, e.Message);
 				Runner.Report (method, ins, Severity.High, confidence, msg);
 				return false;
 			}
@@ -161,8 +166,9 @@ namespace Gendarme.Rules.Correctness {
 				return;
 			if (!call.HasParameters)
 				return;
-			string tname = call.DeclaringType.FullName;
-			if (tname != RegexClass && tname != ValidatorClass)
+
+			TypeReference type = call.DeclaringType;
+			if (!type.IsNamed ("System.Text.RegularExpressions", "Regex") && !type.IsNamed ("System.Configuration", "RegexStringValidator"))
 				return;
 
 			MethodDefinition mdef = call.Resolve ();
@@ -174,8 +180,8 @@ namespace Gendarme.Rules.Correctness {
 
 			foreach (ParameterDefinition p in mdef.Parameters) {
 				string pname = p.Name;
-				if ((pname == "pattern" || pname == "regex") && p.ParameterType.FullName == "System.String") {
-					Instruction ld = ins.TraceBack (method, -(call.HasThis ? 0 : -1 + p.GetSequence ()));
+				if ((pname == "pattern" || pname == "regex") && p.ParameterType.IsNamed ("System", "String")) {
+					Instruction ld = ins.TraceBack (method, -(call.HasThis ? 0 : p.Index));
 					if (ld != null)
 						CheckArguments (method, ins, ld);
 					return;
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/ProvideValidXPathExpressionRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/ProvideValidXPathExpressionRule.cs
index 68d4cb4..770e78d 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/ProvideValidXPathExpressionRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/ProvideValidXPathExpressionRule.cs
@@ -25,6 +25,7 @@
 // THE SOFTWARE.
 
 using System;
+using System.Globalization;
 using System.Xml;
 using System.Xml.XPath;
 
@@ -74,10 +75,6 @@ namespace Gendarme.Rules.Correctness {
 	[EngineDependency (typeof (OpCodeEngine))]
 	public sealed class ProvideValidXPathExpressionRule : Rule, IMethodRule {
 
-		const string XmlNodeClass = "System.Xml.XmlNode";
-		const string XPathNavigatorClass = "System.Xml.XPath.XPathNavigator";
-		const string XPathExpressionClass = "System.Xml.XPath.XPathExpression";
-
 		public override void Initialize (IRunner runner)
 		{
 			base.Initialize (runner);
@@ -105,7 +102,7 @@ namespace Gendarme.Rules.Correctness {
 				break;
 			case Code.Ldsfld:
 				FieldReference f = (FieldReference) ld.Operand;
-				if (f.Name == "Empty" && f.DeclaringType.FullName == "System.String")
+				if (f.Name == "Empty" && f.DeclaringType.IsNamed ("System", "String"))
 					CheckString (method, ins, null);
 				break;
 			case Code.Ldnull:
@@ -124,7 +121,8 @@ namespace Gendarme.Rules.Correctness {
 			try {
 				XPathExpression.Compile (expression);
 			} catch (XPathException e) {
-				string msg = string.Format ("Expression '{0}' is invalid. Details: {1}", expression, e.Message);
+				string msg = String.Format (CultureInfo.InvariantCulture, 
+					"Expression '{0}' is invalid. Details: {1}", expression, e.Message);
 				Runner.Report (method, ins, Severity.High, Confidence.High, msg);
 			}
 		}
@@ -137,11 +135,11 @@ namespace Gendarme.Rules.Correctness {
 			switch (mref.Name) {
 			case "Compile":
 				TypeReference tr = mref.DeclaringType;
-				if (tr.FullName == XPathExpressionClass || tr.Inherits (XPathNavigatorClass))
+				if (tr.IsNamed ("System.Xml.XPath", "XPathExpression") || tr.Inherits ("System.Xml.XPath", "XPathNavigator"))
 					CheckString (method, ins, GetFirstArgumentOffset (mref));
 				break;
 			case "SelectNodes":
-				if (mref.DeclaringType.FullName == XmlNodeClass)
+				if (mref.DeclaringType.IsNamed ("System.Xml", "XmlNode"))
 					CheckString (method, ins, -1);
 				break;
 			case "Evaluate":
@@ -150,7 +148,7 @@ namespace Gendarme.Rules.Correctness {
 				break;
 			case "SelectSingleNode":
 				CheckXPathNavigatorString (method, ins, mref);
-				if (mref.DeclaringType.FullName == XmlNodeClass)
+				if (mref.DeclaringType.IsNamed ("System.Xml", "XmlNode"))
 					CheckString (method, ins, -1);
 				break;
 			}
@@ -158,8 +156,8 @@ namespace Gendarme.Rules.Correctness {
 
 		void CheckXPathNavigatorString (MethodDefinition method, Instruction ins, MethodReference mref)
 		{
-			if (mref.Parameters [0].ParameterType.FullName == "System.String") {
-				if (mref.DeclaringType.Inherits (XPathNavigatorClass))
+			if (mref.Parameters [0].ParameterType.IsNamed ("System", "String")) {
+				if (mref.DeclaringType.Inherits ("System.Xml.XPath", "XPathNavigator"))
 					CheckString (method, ins, -1);
 			}
 		}
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/ProvideValidXmlStringRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/ProvideValidXmlStringRule.cs
index 921e71a..36e7c64 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/ProvideValidXmlStringRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/ProvideValidXmlStringRule.cs
@@ -26,6 +26,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 using System.Xml;
 using System.Xml.XPath;
 
@@ -77,10 +78,6 @@ namespace Gendarme.Rules.Correctness {
 	[EngineDependency (typeof (OpCodeEngine))]
 	public sealed class ProvideValidXmlStringRule : Rule, IMethodRule {
 
-		const string XmlDocumentClass = "System.Xml.XmlDocument";
-		const string XmlNodeClass = "System.Xml.XmlNode";
-		const string XPathNavigatorClass = "System.Xml.XPath.XPathNavigator";
-
 		public override void Initialize (IRunner runner)
 		{
 			base.Initialize (runner);
@@ -108,7 +105,7 @@ namespace Gendarme.Rules.Correctness {
 				break;
 			case Code.Ldsfld:
 				FieldReference f = (FieldReference) ld.Operand;
-				if (f.Name == "Empty" && f.DeclaringType.FullName == "System.String")
+				if (f.Name == "Empty" && f.DeclaringType.IsNamed ("System", "String"))
 					CheckString (method, ins, null);
 				break;
 			case Code.Ldnull:
@@ -127,7 +124,8 @@ namespace Gendarme.Rules.Correctness {
 			try {
 				(new XmlDocument ()).LoadXml (xml);
 			} catch (XmlException e) {
-				string msg = string.Format ("XML string '{0}' is invalid. Details: {1}", xml, e.Message);
+				string msg = String.Format (CultureInfo.InvariantCulture, 
+					"XML string '{0}' is invalid. Details: {1}", xml, e.Message);
 				Runner.Report (method, ins, Severity.High, Confidence.High, msg);
 			}
 		}
@@ -139,13 +137,13 @@ namespace Gendarme.Rules.Correctness {
 
 			switch (mref.Name) {
 			case "LoadXml":
-				if (mref.DeclaringType.FullName == XmlDocumentClass)
+				if (mref.DeclaringType.IsNamed ("System.Xml", "XmlDocument"))
 					CheckString (method, ins, -1);
 				break;
 			case "set_InnerXml":
 			case "set_OuterXml":
 				TypeReference tr = mref.DeclaringType;
-				if (tr.Inherits (XmlNodeClass) || tr.Inherits (XPathNavigatorClass))
+				if (tr.Inherits ("System.Xml", "XmlNode") || tr.Inherits ("System.Xml.XPath", "XPathNavigator"))
 					CheckString (method, ins, -1);
 				break;
 			case "AppendChild":
@@ -154,8 +152,8 @@ namespace Gendarme.Rules.Correctness {
 			case "InsertBefore":
 				IList<ParameterDefinition> pdc = mref.Parameters;
 				if (pdc.Count == 1
-					&& pdc [0].ParameterType.FullName == "System.String"
-					&& mref.DeclaringType.Inherits (XPathNavigatorClass))
+					&& pdc [0].ParameterType.IsNamed ("System", "String")
+					&& mref.DeclaringType.Inherits ("System.Xml.XPath", "XPathNavigator"))
 					CheckString (method, ins, -1);
 				break;
 			}
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/ReviewDoubleAssignmentRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/ReviewDoubleAssignmentRule.cs
index 79b290b..272f86e 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/ReviewDoubleAssignmentRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/ReviewDoubleAssignmentRule.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -113,7 +114,7 @@ namespace Gendarme.Rules.Correctness {
 			if (stfld.TraceBack (method).GetOperand (method) != next.TraceBack (method).GetOperand (method))
 				return String.Empty;
 
-			return String.Format ("Instance field '{0}' on same variable '{1}'.", fd1.Name, vd1.Name);
+			return String.Format (CultureInfo.InvariantCulture, "Instance field '{0}' on same variable '{1}'.", fd1.Name, vd1.Name);
 		}
 
 		static string CheckDoubleAssignement (MethodDefinition method, Instruction ins, Instruction next)
@@ -130,7 +131,7 @@ namespace Gendarme.Rules.Correctness {
 				if (fd1.MetadataToken.RID != fd2.MetadataToken.RID)
 					return String.Empty;
 
-				return String.Format ("Static field '{0}'.", fd1.Name);
+				return String.Format (CultureInfo.InvariantCulture, "Static field '{0}'.", fd1.Name);
 			} else if (ins.IsStoreLocal ()) {
 				// for a local variable the pattern is
 				// DUP, STLOC, STLOC
@@ -141,7 +142,7 @@ namespace Gendarme.Rules.Correctness {
 					if (vd1.Index != vd2.Index)
 						return String.Empty;
 
-					return String.Format ("Local variable '{0}'.", vd1.Name);
+					return String.Format (CultureInfo.InvariantCulture, "Local variable '{0}'.", vd1.Name);
 				} else if (next.OpCode.Code == Code.Stfld) {
 					// instance fields are a bit more complex...
 					return CheckDoubleAssignementOnInstanceFields (method, ins, next);
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/ReviewInconsistentIdentityRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/ReviewInconsistentIdentityRule.cs
index a79b354..67b4fc6 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/ReviewInconsistentIdentityRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/ReviewInconsistentIdentityRule.cs
@@ -125,7 +125,7 @@ namespace Gendarme.Rules.Correctness {
 		
 		private void GetMethods (TypeReference type)	
 		{
-			string full_name = type.FullName;
+			string full_name = type.GetFullName ();
 			args1 [0] = full_name;
 			AddMethod (type.GetMethod (MethodSignatures.Equals));
 			AddMethod (type.GetMethod ("Equals", "System.Boolean", args1));
@@ -349,7 +349,7 @@ namespace Gendarme.Rules.Correctness {
 			
 			Log.WriteLine (this);
 			Log.WriteLine (this, "------------------------------------");
-			Log.WriteLine (this, type.FullName);
+			Log.WriteLine (this, type);
 			
 			GetMethods (type);
 			if (methods.Count > 0) {
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/ReviewSelfAssignmentRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/ReviewSelfAssignmentRule.cs
index 5d359cc..127d7c7 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/ReviewSelfAssignmentRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/ReviewSelfAssignmentRule.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -122,8 +123,8 @@ namespace Gendarme.Rules.Correctness {
 			if ((field != null) && (field == next.GetField ())) {
 				// instance fields need extra comparison using method
 				if (isStatic || Compare (next, ins, method)) {
-					string msg = String.Format ("{0} field '{1}' of type '{2}'.",
-						isStatic ? "Static" : "Instance", field.Name, field.FieldType.FullName);
+					string msg = String.Format (CultureInfo.InvariantCulture, "{0} field '{1}' of type '{2}'.",
+						isStatic ? "Static" : "Instance", field.Name, field.FieldType.GetFullName ());
 					Runner.Report (method, ins, Severity.Medium, Confidence.Normal, msg);
 				}
 			}
@@ -158,14 +159,15 @@ namespace Gendarme.Rules.Correctness {
 					if (variable == ins.GetVariable (method)) {
 						// the compiler often introduce it's own variable
 						if (!variable.Name.StartsWith ("V_"))
-							msg = String.Format ("Variable '{0}' of type '{1}'.", variable.Name, variable.VariableType.FullName);
+							msg = String.Format ("Variable '{0}' of type '{1}'.", variable.Name, variable.VariableType.GetFullName ());
 					}
 #endif
 				} else if (ins.IsLoadArgument () && next.IsStoreArgument ()) {
 					ParameterDefinition parameter = next.GetParameter (method);
 					if (parameter == ins.GetParameter (method)) {
-						string msg = String.Format ("Parameter '{0}' of type '{1}'.", 
-							parameter.Name, parameter.ParameterType.FullName);
+						string msg = String.Format (CultureInfo.InvariantCulture, 
+							"Parameter '{0}' of type '{1}'.", 
+							parameter.Name, parameter.ParameterType.GetFullName ());
 						Runner.Report (method, ins, Severity.Medium, Confidence.Normal, msg);
 					}
 				}
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/ReviewUseOfInt64BitsToDoubleRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/ReviewUseOfInt64BitsToDoubleRule.cs
index 18dbae1..11656ca 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/ReviewUseOfInt64BitsToDoubleRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/ReviewUseOfInt64BitsToDoubleRule.cs
@@ -75,20 +75,26 @@ namespace Gendarme.Rules.Correctness {
 		// Conv_I8, Conv_U8, Conv_Ovf_I8, Conv_Ovf_I8_Un, Conv_Ovf_U8, Conv_Ovf_U8_Un
 		private static OpCodeBitmask Convert8 = new OpCodeBitmask (0x0, 0x220000000000, 0x60000000044, 0x0);
 		
-		private const string BitConverter = "System.BitConverter";
-
 		public override void Initialize (IRunner runner)
 		{
 			base.Initialize (runner);
 
-			// if the module does not reference System.BitConverter then no
-			// method inside it will be calling any BitConverter.Int64BitsToDouble method
 			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				Active = (e.CurrentAssembly.Name.Name == "mscorlib") ||
-					e.CurrentModule.HasTypeReference (BitConverter);
+				// if the module does not reference System.BitConverter.Int64BitsToDouble then no
+				// then there's no point in enabling the rule
+				Active = (e.CurrentAssembly.Name.Name == "mscorlib" ||
+					e.CurrentModule.AnyMemberReference ((MemberReference mr) => {
+						return IsInt64BitsToDouble (mr);
+					})
+				);
 			};
 		}
 
+		static bool IsInt64BitsToDouble (MemberReference method)
+		{
+			return method.IsNamed ("System", "BitConverter", "Int64BitsToDouble");
+		}
+
 		public RuleResult CheckMethod (MethodDefinition method)
 		{
 			if (!method.HasBody)
@@ -106,10 +112,7 @@ namespace Gendarme.Rules.Correctness {
 				if (ins.OpCode.FlowControl != FlowControl.Call)
 					continue;
 
-				MethodReference mr = (ins.Operand as MethodReference);
-				if (mr.Name != "Int64BitsToDouble")
-					continue;
-				if (mr.DeclaringType.FullName != BitConverter)
+				if (!IsInt64BitsToDouble (ins.Operand as MethodReference))
 					continue;
 
 				// if the previous call convert a value into a long (int64)
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/Test/BadRecursiveInvocationTest.cs b/gendarme/rules/Gendarme.Rules.Correctness/Test/BadRecursiveInvocationTest.cs
index 74cd0c4..e7fcd69 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/Test/BadRecursiveInvocationTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/Test/BadRecursiveInvocationTest.cs
@@ -374,5 +374,24 @@ namespace Test.Rules.Correctness {
 		{
 			AssertRuleSuccess<BadRec> ("StaticGoodOverload", new Type [] { typeof (object) });
 		}
+
+		class Array {
+
+			public virtual void SetProperty (string name, object value)
+			{
+				Console.WriteLine ("{0}: {1}", name, value);
+			}
+
+			internal virtual void SetProperty (string name, object [] args)
+			{
+				SetProperty (name, args [0]);
+			}
+		}
+
+		[Test]
+		public void ArrayOverload ()
+		{
+			AssertRuleSuccess<Array> ("SetProperty", new Type [] { typeof (string), typeof (object[]) });
+		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/ComVisibleShouldInheritFromComVisibleTest.cs b/gendarme/rules/Gendarme.Rules.Correctness/Test/DeclareEventsExplicitlyTest.cs
similarity index 53%
copy from gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/ComVisibleShouldInheritFromComVisibleTest.cs
copy to gendarme/rules/Gendarme.Rules.Correctness/Test/DeclareEventsExplicitlyTest.cs
index 4613f87..8de18ab 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/ComVisibleShouldInheritFromComVisibleTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/Test/DeclareEventsExplicitlyTest.cs
@@ -1,10 +1,10 @@
 //
-// ComVisibleShouldInheritFromComVisibleTest.cs
+// Unit tests for DeclareEventsExplicitlyRule
 //
 // Authors:
-//	Yuri Stuken <stuken.yuri at gmail.com>
+//	Sebastien Pouliot <sebastien at ximian.com>
 //
-// Copyright (C) 2010 Yuri Stuken
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -13,10 +13,10 @@
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -27,60 +27,56 @@
 //
 
 using System;
-using System.Runtime.InteropServices;
-
-using Mono.Cecil;
-using Mono.Cecil.Cil;
-
-using Gendarme.Framework;
-using Gendarme.Rules.Interoperability.Com;
 
+using Gendarme.Rules.Correctness;
 using NUnit.Framework;
-using Test.Rules.Fixtures;
-using Test.Rules.Helpers;
+
 using Test.Rules.Definitions;
+using Test.Rules.Fixtures;
 
-namespace Test.Rules.Interoperability.Com {
+namespace Tests.Rules.Correctness {
 
 	[TestFixture]
-	public class ComVisibleShouldInheritFromComVisibleTest : TypeRuleTestFixture<ComVisibleShouldInheritFromComVisibleRule> {
+	public class DeclareEventsExplicitlyTest : TypeRuleTestFixture<DeclareEventsExplicitlyRule> {
 
-		[ComVisible (false)]
-		public class ComInvisibleClass {
+		struct StructInstanceCorrect {
+			public event EventHandler<EventArgs> MyEvent;
 		}
 
-		[ComVisible (true)]
-		public class ComVisibleClass {
+		struct StructInstanceIncorrect {
+			public EventHandler<EventArgs> MyEvent;
 		}
 
-		[ComVisible (true)]
-		public class ComVisibleInheritsFromInvisibleClass : ComInvisibleClass {
+		class GenericClassStaticCorrect {
+			public static event EventHandler<EventArgs> MyEvent;
 		}
 
-		[ComVisible (false)]
-		public class ComInvisibleInheritsFromVisibleClass : ComVisibleClass {
+		class GenericClassStaticIncorect {
+			public static EventHandler<EventArgs> MyEvent;
+			public event EventHandler<EventArgs> MyEvent2;
 		}
 
 		[Test]
-		public void Good ()
+		public void DoesNotApply ()
 		{
-			// no ComVisible attributes in inheritance chain
-			AssertRuleSuccess (SimpleTypes.Class);
-
-			AssertRuleSuccess<ComVisibleClass> ();
+			AssertRuleDoesNotApply (SimpleTypes.Class);
+			AssertRuleDoesNotApply (SimpleTypes.Enum);
+			// interface cannot define fields
+			AssertRuleDoesNotApply (SimpleTypes.Interface);
 		}
 
 		[Test]
-		public void Bad ()
+		public void Success ()
 		{
-			AssertRuleFailure<ComVisibleInheritsFromInvisibleClass> ();
+			AssertRuleSuccess<StructInstanceCorrect> ();
+			AssertRuleSuccess<GenericClassStaticCorrect> ();
 		}
 
 		[Test]
-		public void DoesNotApply ()
+		public void Failure ()
 		{
-			AssertRuleDoesNotApply<ComInvisibleClass> ();
-			AssertRuleDoesNotApply<ComInvisibleInheritsFromVisibleClass> ();
+			AssertRuleFailure<StructInstanceIncorrect> (1);
+			AssertRuleFailure<GenericClassStaticIncorect> (1);
 		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/Test/EnsureLocalDisposalTest.cs b/gendarme/rules/Gendarme.Rules.Correctness/Test/EnsureLocalDisposalTest.cs
index ebb9a01..e375d1d 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/Test/EnsureLocalDisposalTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/Test/EnsureLocalDisposalTest.cs
@@ -45,15 +45,12 @@ namespace Test.Rules.Correctness {
 
 		StreamReader StreamReader { get; set; }
 
-		string DoesNotApply1 () { //no call/newobj/stloc
+		string DoesNotApply1 ()
+		{
+			//no call/newobj/stloc
 			return foo;
 		}
 
-		StreamReader DoesNotApply2 () { //returns IDisposable
-			var sr = new StreamReader ("bar.xml");
-			return sr;
-		}
-
 		string Success0 () {
 			var o = new object ();
 			return o.ToString ();
@@ -214,12 +211,6 @@ namespace Test.Rules.Correctness {
 		}
 
 		[Test]
-		public void DoesNotApply2 ()
-		{
-			AssertRuleDoesNotApply<DisposalCases> ("DoesNotApply2");
-		}
-
-		[Test]
 		public void Success0 ()
 		{
 			AssertRuleSuccess<DisposalCases> ("Success0");
@@ -300,7 +291,7 @@ namespace Test.Rules.Correctness {
 		[Test]
 		public void Failure3 ()
 		{
-			AssertRuleFailure<DisposalCases> ("Failure3", 2);
+			AssertRuleFailure<DisposalCases> ("Failure3", 1);
 		}
 
 		[Test]
@@ -382,11 +373,71 @@ namespace Test.Rules.Correctness {
 		[Test]
 		public void FluentApi ()
 		{
-			AssertRuleFailure<EnsureLocalDisposalTest> ("FluentTestCase", 3);
-			// confidence is lower (normal instead of high) for fluent-like API
-			Assert.AreEqual (Confidence.Normal, Runner.Defects [0].Confidence, "0");
-			Assert.AreEqual (Confidence.Normal, Runner.Defects [1].Confidence, "1");
-			Assert.AreEqual (Confidence.Normal, Runner.Defects [2].Confidence, "2");
+			AssertRuleSuccess<EnsureLocalDisposalTest> ("FluentTestCase");
+		}
+
+		// adapted (without locals variants) from https://bugzilla.novell.com/show_bug.cgi?id=666403
+
+		void OutParameter1 (out StreamReader stream)
+		{
+			var new_stream = new StreamReader ("baz.xml"); //out param
+			stream = new_stream;
+		}
+
+		bool OutParameter2 (out StreamReader stream)
+		{
+			stream = new StreamReader ("baz.xml"); //out param, no locals
+			return true;
+		}
+
+		[Test]
+		public void OutParameters ()
+		{
+			AssertRuleSuccess<EnsureLocalDisposalTest> ("OutParameter1");
+			AssertRuleSuccess<EnsureLocalDisposalTest> ("OutParameter2");
+		}
+
+		class SomeClassThatContainsADisposableProperty {
+			public StreamReader Reader { get; set; }
+		}
+
+		void OtherInstanceProperty1 (SomeClassThatContainsADisposableProperty someObj)
+		{
+			var reader = new StreamReader ("foobaz.xml");
+			someObj.Reader = reader; //property in param
+		}
+
+		void OtherInstanceProperty2 (SomeClassThatContainsADisposableProperty someObj)
+		{
+			someObj.Reader = new StreamReader ("foobaz.xml"); //property in param, no locals
+		}
+
+		[Test]
+		public void OtherInstance ()
+		{
+			AssertRuleSuccess<EnsureLocalDisposalTest> ("OtherInstanceProperty1");
+			AssertRuleSuccess<EnsureLocalDisposalTest> ("OtherInstanceProperty2");
+		}
+
+		StreamReader ReturnIDisposable1 ()
+		{
+			var ret = new StreamReader ("baz.xml"); //return value
+			return ret;
+		}
+
+		StreamReader ReturnIDisposable2 ()
+		{
+			return new StreamReader ("baz.xml"); //return value, no locals
+		}
+
+		[Test]
+		public void ReturnValue ()
+		{
+			// csc 10 (without /o optimize) will fail this as it introduce extra compiler generated locals
+#if __MonoCS__
+			AssertRuleSuccess<EnsureLocalDisposalTest> ("ReturnIDisposable1");
+#endif
+			AssertRuleSuccess<EnsureLocalDisposalTest> ("ReturnIDisposable2");
 		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/Test/Makefile.in b/gendarme/rules/Gendarme.Rules.Correctness/Test/Makefile.in
index 8d14c7b..76c3f0f 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/Test/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Correctness/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Correctness/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Correctness/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Correctness/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Correctness/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -298,6 +338,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -306,18 +348,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -352,6 +404,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/Test/Resource.Designer.cs b/gendarme/rules/Gendarme.Rules.Correctness/Test/Resource.Designer.cs
index ec1d9e5..e55ddeb 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/Test/Resource.Designer.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/Test/Resource.Designer.cs
@@ -1,7 +1,7 @@
-//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:2.0.50727.4927
+//     Runtime Version:4.0.30319.1
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -19,7 +19,7 @@ namespace Tests.Rules.Correctness {
     // class via a tool like ResGen or Visual Studio.
     // To add or remove a member, edit your .ResX file then rerun ResGen
     // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
     internal class Resource {
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/Test/Tests.Rules.Correctness.csproj b/gendarme/rules/Gendarme.Rules.Correctness/Test/Tests.Rules.Correctness.csproj
index d5e9ea2..d3e97ec 100755
--- a/gendarme/rules/Gendarme.Rules.Correctness/Test/Tests.Rules.Correctness.csproj
+++ b/gendarme/rules/Gendarme.Rules.Correctness/Test/Tests.Rules.Correctness.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -12,9 +12,11 @@
     <AssemblyName>Tests.Rules.Correctness</AssemblyName>
     <FileUpgradeFlags>
     </FileUpgradeFlags>
-    <OldToolsVersion>2.0</OldToolsVersion>
+    <OldToolsVersion>3.5</OldToolsVersion>
     <UpgradeBackupLocation>
     </UpgradeBackupLocation>
+    <IsWebBootstrapper>true</IsWebBootstrapper>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <PublishUrl>http://localhost/Tests.Rules.Correctness/</PublishUrl>
     <Install>true</Install>
     <InstallFrom>Web</InstallFrom>
@@ -27,10 +29,9 @@
     <MapFileExtensions>true</MapFileExtensions>
     <ApplicationRevision>0</ApplicationRevision>
     <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>true</IsWebBootstrapper>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -40,6 +41,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -48,6 +50,7 @@
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
@@ -97,6 +100,8 @@
     <Compile Include="ReviewUselessControlFlowTest.cs" />
     <Compile Include="ReviewUseOfInt64BitsToDoubleTest.cs" />
     <Compile Include="ReviewUseOfModuloOneOnIntegersTest.cs" />
+    <Compile Include="TypesWithDisposableFieldsShouldBeDisposableTest.cs" />
+    <Compile Include="TypesWithNativeFieldsShouldBeDisposableTest.cs" />
     <Compile Include="UseNoInliningWithGetCallingAssemblyTest.cs" />
     <Compile Include="UseValueInPropertySetterTest.cs" />
   </ItemGroup>
@@ -119,14 +124,33 @@
     </ProjectReference>
   </ItemGroup>
   <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
   </ItemGroup>
   <ItemGroup>
diff --git a/gendarme/rules/Gendarme.Rules.Design/Test/TypesWithDisposableFieldsShouldBeDisposableTest.cs b/gendarme/rules/Gendarme.Rules.Correctness/Test/TypesWithDisposableFieldsShouldBeDisposableTest.cs
similarity index 53%
rename from gendarme/rules/Gendarme.Rules.Design/Test/TypesWithDisposableFieldsShouldBeDisposableTest.cs
rename to gendarme/rules/Gendarme.Rules.Correctness/Test/TypesWithDisposableFieldsShouldBeDisposableTest.cs
index 811ba7e..077889c 100644
--- a/gendarme/rules/Gendarme.Rules.Design/Test/TypesWithDisposableFieldsShouldBeDisposableTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/Test/TypesWithDisposableFieldsShouldBeDisposableTest.cs
@@ -6,7 +6,7 @@
 //	Sebastien Pouliot  <sebastien at ximian.com>
 //
 //  (C) 2008 Andreas Noever
-// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2008, 2011 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -30,13 +30,13 @@
 
 using System;
 
-using Gendarme.Rules.Design;
+using Gendarme.Rules.Correctness;
 
 using NUnit.Framework;
 using Test.Rules.Definitions;
 using Test.Rules.Fixtures;
 
-namespace Test.Rules.Design {
+namespace Test.Rules.Correctness {
 
 	class Disposable : IDisposable {
 		public void Dispose ()
@@ -54,12 +54,32 @@ namespace Test.Rules.Design {
 		object A;
 		Disposable B;
 
+		public DisposeableFieldsImplementsIDisposeable ()
+		{
+			B = new Disposable ();
+		}
+
 		public void Dispose ()
 		{
 			throw new NotImplementedException ();
 		}
 	}
 
+	class DisposeableFieldsImplementsIDisposeableCorrectly : IDisposable {
+		object A;
+		Disposable B;
+
+		public DisposeableFieldsImplementsIDisposeableCorrectly ()
+		{
+			B = new Disposable ();
+		}
+
+		public void Dispose ()
+		{
+			B.Dispose (); // not really correct but Dispose is called :)
+		}
+	}
+
 	class DisposeableFieldsExplicit : IDisposable {
 		object A;
 		Disposable B;
@@ -77,10 +97,70 @@ namespace Test.Rules.Design {
 		public abstract void Dispose ();
 	}
 
-	class DisposeableFields : ICloneable {
+	abstract class DisposeableFieldsImplementsIDisposeableAbstractAssigned : IDisposable {
+		object A;
+		Disposable B;
+
+		protected DisposeableFieldsImplementsIDisposeableAbstractAssigned ()
+		{
+			B = new Disposable ();
+		}
+
+		public abstract void Dispose ();
+	}
+
+	public class DisposeableFieldsNeverAssigned : ICloneable {
+		object A;
+		Disposable B;
+
+		public object Clone ()
+		{
+			throw new NotImplementedException ();
+		}
+	}
+
+	public class DisposeableFieldsNullAssigned : ICloneable {
+		object A;
+		Disposable B;
+
+		public DisposeableFieldsNullAssigned ()
+		{
+			A = null;
+			B = null;
+		}
+
+		public object Clone ()
+		{
+			throw new NotImplementedException ();
+		}
+	}
+
+	public class DisposeableFieldsAssigned : ICloneable {
 		object A;
 		Disposable B;
 
+		public DisposeableFieldsAssigned ()
+		{
+			A = null;
+			B = new Disposable ();
+		}
+
+		public object Clone ()
+		{
+			throw new NotImplementedException ();
+		}
+	}
+
+	class DisposeableFieldsReferenced : ICloneable {
+		object A;
+		Disposable B;
+
+		public DisposeableFieldsReferenced (Disposable instance)
+		{
+			A = null;
+			B = instance;
+		}
+
 		public object Clone ()
 		{
 			throw new NotImplementedException ();
@@ -97,16 +177,75 @@ namespace Test.Rules.Design {
 		}
 	}
 
+	class DisposeableFieldsArrayAssigned : ICloneable {
+		object A;
+		Disposable [] B;
+
+		public object Clone ()
+		{
+			// the array itself is not not IDisposable
+			B = new Disposable [10];
+			A = B;
+			return A;
+		}
+	}
+
+	class DisposeableFieldsArrayMembers : ICloneable {
+		object A;
+		Disposable [] B;
+
+		public object Clone ()
+		{
+			B = new Disposable [1];
+			// assignation (newobj+stfld) does not need to to be inside ctor
+			// note: fxcop does not catch this one
+			B [0] = new Disposable ();
+			A = B;
+			return A;
+		}
+	}
+
 	struct StructWithDisposeableFields {
 		Disposable a;
 		object b;
+
+		public StructWithDisposeableFields (object obj)
+		{
+			b = obj;
+			a = new Disposable ();
+		}
 	}
 
 	class DisposeableStaticFieldsArray {
 		object A;
 		static Disposable [] B;
+
+		static DisposeableStaticFieldsArray ()
+		{
+			B = new Disposable [1];
+			B [0] = new Disposable ();
+		}
+	}
+
+	// test case from https://bugzilla.novell.com/show_bug.cgi?id=671029
+
+	interface ISession : IDisposable {
+		void Query (string s);
 	}
 
+	class SomeRepository {
+		ISession session;
+		public SomeRepository (ISession session)
+		{
+			this.session = session;
+		}
+		public void DoSomeQuery ()
+		{
+			session.Query ("whatever");
+		}
+	}
+
+
 	[TestFixture]
 	public class TypesWithDisposableFieldsShouldBeDisposableTest : TypeRuleTestFixture<TypesWithDisposableFieldsShouldBeDisposableRule> {
 
@@ -129,6 +268,7 @@ namespace Test.Rules.Design {
 		public void TestDisposeableFieldsImplementsIDisposeable ()
 		{
 			AssertRuleSuccess<DisposeableFieldsImplementsIDisposeable> ();
+			AssertRuleSuccess<DisposeableFieldsImplementsIDisposeableCorrectly> ();
 		}
 
 		[Test]
@@ -140,19 +280,25 @@ namespace Test.Rules.Design {
 		[Test]
 		public void TestDisposeableFieldsImplementsIDisposeableAbstract ()
 		{
-			AssertRuleFailure<DisposeableFieldsImplementsIDisposeableAbstract> (2);
+			AssertRuleFailure<DisposeableFieldsImplementsIDisposeableAbstract> (1);
+			AssertRuleFailure<DisposeableFieldsImplementsIDisposeableAbstractAssigned> (2);
 		}
 
 		[Test]
 		public void TestDisposeableFields ()
 		{
-			AssertRuleFailure<DisposeableFields> (1);
+			AssertRuleSuccess<DisposeableFieldsNeverAssigned> ();
+			AssertRuleSuccess<DisposeableFieldsNullAssigned> ();
+			AssertRuleSuccess<DisposeableFieldsReferenced> ();
+			AssertRuleFailure<DisposeableFieldsAssigned> (1);
 		}
 
 		[Test]
 		public void TestDisposeableFieldsArray ()
 		{
-			AssertRuleFailure<DisposeableFieldsArray> (1);
+			AssertRuleSuccess<DisposeableFieldsArray> ();
+			AssertRuleSuccess<DisposeableFieldsArrayAssigned> ();
+			AssertRuleFailure<DisposeableFieldsArrayMembers> (1);
 		}
 
 		[Test]
@@ -166,5 +312,11 @@ namespace Test.Rules.Design {
 		{
 			AssertRuleSuccess<DisposeableStaticFieldsArray> ();
 		}
+
+		[Test]
+		public void Bug671029 ()
+		{
+			AssertRuleSuccess<SomeRepository> ();
+		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Design/Test/TypesWithNativeFieldsShouldBeDisposableTest.cs b/gendarme/rules/Gendarme.Rules.Correctness/Test/TypesWithNativeFieldsShouldBeDisposableTest.cs
similarity index 61%
rename from gendarme/rules/Gendarme.Rules.Design/Test/TypesWithNativeFieldsShouldBeDisposableTest.cs
rename to gendarme/rules/Gendarme.Rules.Correctness/Test/TypesWithNativeFieldsShouldBeDisposableTest.cs
index 75216df..b66fcbf 100644
--- a/gendarme/rules/Gendarme.Rules.Design/Test/TypesWithNativeFieldsShouldBeDisposableTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/Test/TypesWithNativeFieldsShouldBeDisposableTest.cs
@@ -31,7 +31,7 @@
 using System;
 using System.Runtime.InteropServices;
 
-using Gendarme.Rules.Design;
+using Gendarme.Rules.Correctness;
 
 using NUnit.Framework;
 using Test.Rules.Definitions;
@@ -75,6 +75,36 @@ namespace Test.Rules.Design {
 		}
 	}
 
+	class NativeFieldsIntPtrAssigned : ICloneable {
+		object A;
+		IntPtr B;
+
+		public NativeFieldsIntPtrAssigned ()
+		{
+			B = IntPtr.Zero;
+		}
+
+		public object Clone ()
+		{
+			throw new NotImplementedException ();
+		}
+	}
+
+	class NativeFieldsIntPtrAllocated : ICloneable {
+		object A;
+		IntPtr B;
+
+		public NativeFieldsIntPtrAllocated ()
+		{
+			B = Marshal.AllocCoTaskMem (1);
+		}
+
+		public object Clone ()
+		{
+			throw new NotImplementedException ();
+		}
+	}
+
 	class NativeFieldsUIntPtr : ICloneable {
 		object A;
 		UIntPtr B;
@@ -85,9 +115,79 @@ namespace Test.Rules.Design {
 		}
 	}
 
+	class NativeFieldsUIntPtrAssigned : ICloneable {
+		object A;
+		UIntPtr B;
+
+		public NativeFieldsUIntPtrAssigned ()
+		{
+			B = (UIntPtr) 0x1f00;
+		}
+
+		public object Clone ()
+		{
+			throw new NotImplementedException ();
+		}
+	}
+
+	class NativeFieldsUIntPtrAllocated : ICloneable {
+		object A;
+		UIntPtr B;
+
+		[DllImport ("liberty")]
+		extern static UIntPtr Alloc (int x);
+
+		public NativeFieldsUIntPtrAllocated ()
+		{
+			B = Alloc (1);
+		}
+
+		public object Clone ()
+		{
+			throw new NotImplementedException ();
+		}
+	}
+
 	class NativeFieldsHandleRef : ICloneable {
 		object A;
-		System.Runtime.InteropServices.HandleRef B;
+		HandleRef B;
+
+		public object Clone ()
+		{
+			throw new NotImplementedException ();
+		}
+	}
+
+	class NativeFieldsHandleRefAssigned : ICloneable {
+		object A;
+		HandleRef B;
+
+		public NativeFieldsHandleRefAssigned ()
+		{
+			GCHandle handle = GCHandle.Alloc (A, GCHandleType.Pinned);
+			B = new HandleRef (handle, handle.AddrOfPinnedObject ());
+		}
+
+		public object Clone ()
+		{
+			throw new NotImplementedException ();
+		}
+	}
+
+	class NativeFieldsHandleRefAllocatedElsewhere: ICloneable {
+		object A;
+		HandleRef B;
+
+		HandleRef GetHandleReference ()
+		{
+			return new HandleRef (A, IntPtr.Zero);
+		}
+
+		public NativeFieldsHandleRefAllocatedElsewhere ()
+		{
+			// fxcop does not trigger on this (or similar cases)
+			B = GetHandleReference ();
+		}
 
 		public object Clone ()
 		{
@@ -97,14 +197,14 @@ namespace Test.Rules.Design {
 
 	abstract class AbstractNativeFields : IDisposable {
 		object A;
-		System.Runtime.InteropServices.HandleRef B;
+		HandleRef B;
 
 		public abstract void Dispose ();
 	}
 
 	abstract class AbstractNativeFields2 : IDisposable {
 		object A;
-		System.Runtime.InteropServices.HandleRef B;
+		HandleRef B;
 
 		public abstract void Dispose ();
 
@@ -117,18 +217,23 @@ namespace Test.Rules.Design {
 
 	class NativeFieldsArray : ICloneable {
 		object A;
-		UIntPtr [] B;
+		IntPtr [] B;
 
 		public object Clone ()
 		{
-			throw new NotImplementedException ();
+			B = new IntPtr [1];
+			// assignation (newobj+stfld) does not need to to be inside ctor
+			// note: fxcop does not catch this one
+			B [0] = Marshal.AllocCoTaskMem (1);
+			A = B;
+			return A;
 		}
 	}
 
 	struct StructWithNativeFields {
-		IntPtr a;
-		UIntPtr b;
-		HandleRef c;
+		public IntPtr a;
+		public UIntPtr b;
+		public HandleRef c;
 	}
 
 	class NativeStaticFieldsArray {
@@ -169,31 +274,32 @@ namespace Test.Rules.Design {
 		[Test]
 		public void TestNativeFieldsIntPtr ()
 		{
-			AssertRuleFailure<NativeFieldsIntPtr> (1);
+			AssertRuleSuccess<NativeFieldsIntPtr> ();
+			AssertRuleSuccess<NativeFieldsIntPtrAssigned> ();
+			AssertRuleFailure<NativeFieldsIntPtrAllocated> (1);
 		}
 
 		[Test]
 		public void TestNativeFieldsUIntPtr ()
 		{
-			AssertRuleFailure<NativeFieldsUIntPtr> (1);
+			AssertRuleSuccess<NativeFieldsUIntPtr> ();
+			AssertRuleSuccess<NativeFieldsUIntPtrAssigned> ();
+			AssertRuleFailure<NativeFieldsUIntPtrAllocated> (1);
 		}
 
 		[Test]
 		public void TestNativeFieldsHandleRef ()
 		{
-			AssertRuleFailure<NativeFieldsHandleRef> (1);
+			AssertRuleSuccess<NativeFieldsHandleRef> ();
+			AssertRuleSuccess<NativeFieldsHandleRefAssigned> ();
+			AssertRuleFailure<NativeFieldsHandleRefAllocatedElsewhere> (1);
 		}
 
 		[Test]
 		public void TestAbstractNativeFields ()
 		{
-			AssertRuleFailure<AbstractNativeFields> (2);
-		}
-
-		[Test]
-		public void TestAbstractNativeFields2 ()
-		{
-			AssertRuleFailure<AbstractNativeFields2> (2);
+			AssertRuleFailure<AbstractNativeFields> (1);
+			AssertRuleFailure<AbstractNativeFields2> (1);
 		}
 
 		[Test]
@@ -215,3 +321,4 @@ namespace Test.Rules.Design {
 		}
 	}
 }
+
diff --git a/gendarme/rules/Gendarme.Rules.Design/TypesWithNativeFieldsShouldBeDisposableRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/TypesShouldBeDisposableBaseRule.cs
similarity index 55%
copy from gendarme/rules/Gendarme.Rules.Design/TypesWithNativeFieldsShouldBeDisposableRule.cs
copy to gendarme/rules/Gendarme.Rules.Correctness/TypesShouldBeDisposableBaseRule.cs
index 113a5dd..247d01a 100644
--- a/gendarme/rules/Gendarme.Rules.Design/TypesWithNativeFieldsShouldBeDisposableRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/TypesShouldBeDisposableBaseRule.cs
@@ -1,10 +1,12 @@
 //
-// Gendarme.Rules.Design.TypesWithNativeFieldsShouldBeDisposableRule
+// Gendarme.Rules.Correctness.TypesShouldBeDisposableBaseRule
 //
 // Authors:
 //	Andreas Noever <andreas.noever at gmail.com>
+//	Sebastien Pouliot  <sebastien at ximian.com>
 //
 //  (C) 2008 Andreas Noever
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,65 +28,46 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System;
+using System.Collections.Generic;
+
 using Mono.Cecil;
+
 using Gendarme.Framework;
 using Gendarme.Framework.Helpers;
 using Gendarme.Framework.Rocks;
 
-namespace Gendarme.Rules.Design {
-
-	/// <summary>
-	/// This rule will fire if a type contains <c>IntPtr</c>, <c>UIntPtr</c>, or 
-	/// <c>HandleRef</c> fields but does not implement <c>System.IDisposable</c>.
-	/// </summary>
-	/// <example>
-	/// Bad examples:
-	/// <code>
-	/// public class DoesNotImplementIDisposable {
-	///	IntPtr field;
-	/// }
-	/// 
-	/// abstract public class AbstractDispose : IDisposable {
-	///	IntPtr field;
-	///	
-	///	// the field should be disposed in the type that declares it
-	///	public abstract void Dispose ();
-	/// }
-	/// </code>
-	/// </example>
-	/// <example>
-	/// Good example:
-	/// <code>
-	/// public class Dispose : IDisposable {
-	///	IDisposable field;
-	///	
-	///	public void Dispose ()
-	///	{
-	///		UnmanagedFree (field);
-	///	}
-	/// }
-	/// </code>
-	/// </example>
-
-	[Problem ("This type contains native field(s) but doesn't implement IDisposable.")]
-	[Solution ("Implement IDisposable and free the native field(s) in the Dispose method.")]
-	[FxCopCompatibility ("Microsoft.Design", "CA1049:TypesThatOwnNativeResourcesShouldBeDisposable")]
-	public class TypesWithNativeFieldsShouldBeDisposableRule : Rule, ITypeRule {
-
-		private const string AbstractTypeMessage = "Field is native. Type should implement a non-abstract Dispose() method";
-		private const string TypeMessage = "Field is native. Type should implement a Dispose() method";
-		private const string AbstractDisposeMessage = "Some fields are native pointers. Making this method abstract shifts the reponsability of disposing those fields to the inheritors of this class.";
+namespace Gendarme.Rules.Correctness {
+
+	public abstract class TypesShouldBeDisposableBaseRule : Rule, ITypeRule {
+
+		protected TypesShouldBeDisposableBaseRule ()
+		{
+			FieldCandidates = new HashSet<FieldDefinition> ();
+		}
+
+		protected HashSet<FieldDefinition> FieldCandidates { get; private set; }
+
+		protected abstract string AbstractTypeMessage { get; }
+		protected abstract string TypeMessage { get; }
+		protected abstract string AbstractDisposeMessage { get; }
 
 		static bool IsAbstract (MethodDefinition method)
 		{
 			return ((method != null) && (method.IsAbstract));
 		}
 
+		protected abstract void CheckMethod (MethodDefinition method, bool abstractWarning);
+
+		protected abstract bool FieldTypeIsCandidate (TypeDefinition type);
+
 		public RuleResult CheckType (TypeDefinition type)
 		{
+			// that will cover interfaces, delegates too
+			if (!type.HasFields)
+				return RuleResult.DoesNotApply;
+
 			// rule doesn't apply to enums, interfaces, structs, delegates or generated code
-			if (type.IsEnum || type.IsInterface || type.IsValueType || type.IsDelegate () || type.IsGeneratedCode ())
+			if (type.IsEnum || type.IsValueType || type.IsGeneratedCode ())
 				return RuleResult.DoesNotApply;
 
 			MethodDefinition explicitDisposeMethod = null;
@@ -92,7 +75,7 @@ namespace Gendarme.Rules.Design {
 
 			bool abstractWarning = false;
 
-			if (type.Implements ("System.IDisposable")) {
+			if (type.Implements ("System", "IDisposable")) {
 				implicitDisposeMethod = type.GetMethod (MethodSignatures.Dispose);
 				explicitDisposeMethod = type.GetMethod (MethodSignatures.DisposeExplicit);
 
@@ -103,13 +86,24 @@ namespace Gendarme.Rules.Design {
 				}
 			}
 
+			FieldCandidates.Clear ();
+
 			foreach (FieldDefinition field in type.Fields) {
 				// we can't dispose static fields in IDisposable
 				if (field.IsStatic)
 					continue;
-				if (field.FieldType.GetElementType ().IsNative ()) {
-					Runner.Report (field, Severity.High, Confidence.High, 
-						abstractWarning ? AbstractTypeMessage : TypeMessage);
+				TypeDefinition fieldType = field.FieldType.GetElementType ().Resolve ();
+				if (fieldType == null)
+					continue;
+				if (FieldTypeIsCandidate (fieldType))
+					FieldCandidates.Add (field);
+			}
+
+			// if there are fields types that implements IDisposable
+			if (type.HasMethods && (FieldCandidates.Count > 0)) {
+				// check if we're assigning new object to them
+				foreach (MethodDefinition method in type.Methods) {
+					CheckMethod (method, abstractWarning);
 				}
 			}
 
@@ -119,5 +113,15 @@ namespace Gendarme.Rules.Design {
 
 			return Runner.CurrentRuleResult;
 		}
+#if false
+		public void Bitmask ()
+		{
+			OpCodeBitmask mask = new OpCodeBitmask ();
+			mask.Set (Code.Stfld);
+			mask.Set (Code.Stelem_Ref);
+			Console.WriteLine (mask);
+		}
+#endif
 	}
 }
+
diff --git a/gendarme/rules/Gendarme.Rules.Design/TypesWithDisposableFieldsShouldBeDisposableRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/TypesWithDisposableFieldsShouldBeDisposableRule.cs
similarity index 50%
rename from gendarme/rules/Gendarme.Rules.Design/TypesWithDisposableFieldsShouldBeDisposableRule.cs
rename to gendarme/rules/Gendarme.Rules.Correctness/TypesWithDisposableFieldsShouldBeDisposableRule.cs
index b1d6f85..1731951 100644
--- a/gendarme/rules/Gendarme.Rules.Design/TypesWithDisposableFieldsShouldBeDisposableRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/TypesWithDisposableFieldsShouldBeDisposableRule.cs
@@ -1,10 +1,12 @@
 //
-// Gendarme.Rules.Design.TypesWithDisposableFieldsShouldBeDisposableRule
+// Gendarme.Rules.Correctness.TypesWithDisposableFieldsShouldBeDisposableRule
 //
 // Authors:
 //	Andreas Noever <andreas.noever at gmail.com>
+//	Sebastien Pouliot  <sebastien at ximian.com>
 //
 //  (C) 2008 Andreas Noever
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,23 +28,20 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System;
-using System.Text;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.IO;
-
 using Mono.Cecil;
 using Mono.Cecil.Cil;
+
 using Gendarme.Framework;
+using Gendarme.Framework.Engines;
 using Gendarme.Framework.Helpers;
 using Gendarme.Framework.Rocks;
 
-namespace Gendarme.Rules.Design {
+namespace Gendarme.Rules.Correctness {
 
 	/// <summary>
-	/// This rule will fire if a type contains disposable fields but does not implement
-	/// <c>System.IDisposable</c>.
+	/// This rule will fire if a type contains disposable fields, i.e. fields whose types implements 
+	/// <c>System.IDisposable</c>, but where the type itself does not implement <c>System.IDisposable</c>.
+	/// The rule will not report types that are not assigning themselves new instances to the fields.
 	/// </summary>
 	/// <example>
 	/// Bad examples:
@@ -76,60 +75,61 @@ namespace Gendarme.Rules.Design {
 	[Problem ("This type contains disposable field(s) but doesn't implement IDisposable.")]
 	[Solution ("Implement IDisposable and free the disposable field(s) in the Dispose method.")]
 	[FxCopCompatibility ("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable")]
-	public class TypesWithDisposableFieldsShouldBeDisposableRule : Rule, ITypeRule {
+	[EngineDependency (typeof (OpCodeEngine))]
+	public class TypesWithDisposableFieldsShouldBeDisposableRule : TypesShouldBeDisposableBaseRule {
 
-		private const string AbstractTypeMessage = "Field implement IDisposable. Type should implement a non-abstract Dispose() method";
-		private const string TypeMessage = "Field implement IDisposable. Type should implement a Dispose() method";
-		private const string AbstractDisposeMessage = "Some field(s) implement IDisposable. Making this method abstract shifts the reponsability of disposing those fields to the inheritors of this class.";
+		static OpCodeBitmask StoreFieldBitmask = new OpCodeBitmask (0x0, 0x400000000000000, 0x80000000, 0x0);
 
-		static bool IsAbstract (MethodDefinition method)
-		{
-			return ((method != null) && (method.IsAbstract));
+		protected override string AbstractTypeMessage { 
+			get { return "Field implement IDisposable. Type should implement a non-abstract Dispose() method"; }
 		}
 
-		public RuleResult CheckType (TypeDefinition type)
-		{
-			// rule doesn't apply to enums, interfaces, structs, delegates or generated code
-			if (type.IsEnum || type.IsInterface || type.IsValueType || type.IsDelegate () || type.IsGeneratedCode ())
-				return RuleResult.DoesNotApply;
+		protected override string TypeMessage { 
+			get { return "Field implement IDisposable. Type should implement a Dispose() method";  }
+		}
 
-			MethodDefinition explicitDisposeMethod = null;
-			MethodDefinition implicitDisposeMethod = null;
+		protected override string AbstractDisposeMessage { 
+			get { return "Some field(s) implement IDisposable. Making this method abstract shifts the reponsability of disposing those fields to the inheritors of this class."; }
+		}
 
-			bool abstractWarning = false;
+		protected override void CheckMethod (MethodDefinition method, bool abstractWarning)
+		{
+			if ((method == null) || !method.HasBody)
+				return;
 
-			if (type.Implements ("System.IDisposable")) {
-				implicitDisposeMethod = type.GetMethod (MethodSignatures.Dispose);
-				explicitDisposeMethod = type.GetMethod (MethodSignatures.DisposeExplicit);
+			OpCodeBitmask bitmask = OpCodeEngine.GetBitmask (method);
+			// method must have a NEWOBJ and either STFLD or STELEM_REF
+			if (!bitmask.Get (Code.Newobj) || !bitmask.Intersect (StoreFieldBitmask))
+				return;
 
-				if (IsAbstract (implicitDisposeMethod) || IsAbstract (explicitDisposeMethod)) {
-					abstractWarning = true;
-				} else {
-					return RuleResult.Success;
+			foreach (Instruction ins in method.Body.Instructions) {
+				if (!ins.Is (Code.Newobj))
+					continue;
+
+				FieldDefinition field = null;
+				Instruction next = ins.Next;
+				if (next.Is (Code.Stfld)) {
+					field = next.Operand as FieldDefinition;
+				} else if (next.Is (Code.Stelem_Ref)) {
+					Instruction origin = next.TraceBack (method);
+					if (origin != null)
+						field = origin.Operand as FieldDefinition;
 				}
-			}
 
-			foreach (FieldDefinition field in type.Fields) {
-				// we can't dispose static fields in IDisposable
-				if (field.IsStatic)
-					continue;
-				TypeDefinition fieldType = field.FieldType.GetElementType ().Resolve ();
-				if (fieldType == null)
-					continue;
-				// enums and primitives don't implement IDisposable
-				if (fieldType.IsEnum || fieldType.IsPrimitive)
-					continue;
-				if (fieldType.Implements ("System.IDisposable")) {
+				if (field != null && FieldCandidates.Contains (field)) {
 					Runner.Report (field, Severity.High, Confidence.High,
 						abstractWarning ? AbstractTypeMessage : TypeMessage);
 				}
 			}
+		}
 
-			// Warn about possible confusion if the Dispose methods are abstract
-			if (IsAbstract (implicitDisposeMethod))
-				Runner.Report (implicitDisposeMethod, Severity.Medium, Confidence.High, AbstractDisposeMessage);
+		protected override bool FieldTypeIsCandidate (TypeDefinition type)
+		{
+			// enums and primitives don't implement IDisposable
+			if ((type == null) || type.IsEnum || type.IsPrimitive)
+				return false;
 
-			return Runner.CurrentRuleResult;
+			return type.Implements ("System", "IDisposable");
 		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Design/TypesWithNativeFieldsShouldBeDisposableRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/TypesWithNativeFieldsShouldBeDisposableRule.cs
similarity index 52%
rename from gendarme/rules/Gendarme.Rules.Design/TypesWithNativeFieldsShouldBeDisposableRule.cs
rename to gendarme/rules/Gendarme.Rules.Correctness/TypesWithNativeFieldsShouldBeDisposableRule.cs
index 113a5dd..1273a75 100644
--- a/gendarme/rules/Gendarme.Rules.Design/TypesWithNativeFieldsShouldBeDisposableRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/TypesWithNativeFieldsShouldBeDisposableRule.cs
@@ -1,10 +1,12 @@
 //
-// Gendarme.Rules.Design.TypesWithNativeFieldsShouldBeDisposableRule
+// Gendarme.Rules.Correctness.TypesWithNativeFieldsShouldBeDisposableRule
 //
 // Authors:
 //	Andreas Noever <andreas.noever at gmail.com>
+//	Sebastien Pouliot  <sebastien at ximian.com>
 //
 //  (C) 2008 Andreas Noever
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,13 +28,15 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System;
 using Mono.Cecil;
+using Mono.Cecil.Cil;
+
 using Gendarme.Framework;
+using Gendarme.Framework.Engines;
 using Gendarme.Framework.Helpers;
 using Gendarme.Framework.Rocks;
 
-namespace Gendarme.Rules.Design {
+namespace Gendarme.Rules.Correctness {
 
 	/// <summary>
 	/// This rule will fire if a type contains <c>IntPtr</c>, <c>UIntPtr</c>, or 
@@ -70,54 +74,61 @@ namespace Gendarme.Rules.Design {
 	[Problem ("This type contains native field(s) but doesn't implement IDisposable.")]
 	[Solution ("Implement IDisposable and free the native field(s) in the Dispose method.")]
 	[FxCopCompatibility ("Microsoft.Design", "CA1049:TypesThatOwnNativeResourcesShouldBeDisposable")]
-	public class TypesWithNativeFieldsShouldBeDisposableRule : Rule, ITypeRule {
+	[EngineDependency (typeof (OpCodeEngine))]
+	public class TypesWithNativeFieldsShouldBeDisposableRule : TypesShouldBeDisposableBaseRule {
 
-		private const string AbstractTypeMessage = "Field is native. Type should implement a non-abstract Dispose() method";
-		private const string TypeMessage = "Field is native. Type should implement a Dispose() method";
-		private const string AbstractDisposeMessage = "Some fields are native pointers. Making this method abstract shifts the reponsability of disposing those fields to the inheritors of this class.";
+		static OpCodeBitmask StoreFieldBitmask = new OpCodeBitmask (0x0, 0x400000000000000, 0x80000000, 0x0);
 
-		static bool IsAbstract (MethodDefinition method)
-		{
-			return ((method != null) && (method.IsAbstract));
+		protected override string AbstractTypeMessage { 
+			get { return "Field is native. Type should implement a non-abstract Dispose() method"; }
 		}
 
-		public RuleResult CheckType (TypeDefinition type)
-		{
-			// rule doesn't apply to enums, interfaces, structs, delegates or generated code
-			if (type.IsEnum || type.IsInterface || type.IsValueType || type.IsDelegate () || type.IsGeneratedCode ())
-				return RuleResult.DoesNotApply;
+		protected override string TypeMessage { 
+			get { return "Field is native. Type should implement a Dispose() method";  }
+		}
 
-			MethodDefinition explicitDisposeMethod = null;
-			MethodDefinition implicitDisposeMethod = null;
+		protected override string AbstractDisposeMessage { 
+			get { return "Some fields are native pointers. Making this method abstract shifts the reponsability of disposing those fields to the inheritors of this class."; }
+		}
 
-			bool abstractWarning = false;
+		protected override void CheckMethod (MethodDefinition method, bool abstractWarning)
+		{
+			if ((method == null) || !method.HasBody)
+				return;
 
-			if (type.Implements ("System.IDisposable")) {
-				implicitDisposeMethod = type.GetMethod (MethodSignatures.Dispose);
-				explicitDisposeMethod = type.GetMethod (MethodSignatures.DisposeExplicit);
+			OpCodeBitmask bitmask = OpCodeEngine.GetBitmask (method);
+			// method must have a CALL[VIRT] and either STFLD or STELEM_REF
+			if (!bitmask.Intersect (OpCodeBitmask.Calls) || !bitmask.Intersect (StoreFieldBitmask))
+				return;
 
-				if (IsAbstract (implicitDisposeMethod) || IsAbstract (explicitDisposeMethod)) {
-					abstractWarning = true;
-				} else {
-					return RuleResult.Success;
+			foreach (Instruction ins in method.Body.Instructions) {
+				MethodReference mr = (ins.Operand as MethodReference);
+				if (mr == null || mr.DeclaringType.IsNative ())
+					continue;
+
+				FieldDefinition field = null;
+				Instruction next = ins.Next;
+				if (next.Is (Code.Stfld)) {
+					field = next.Operand as FieldDefinition;
+				} else if (next.Is (Code.Stobj) || next.Is (Code.Stind_I)) {
+					Instruction origin = next.TraceBack (method);
+					if (origin.Is (Code.Ldelema)) {
+						origin = origin.TraceBack (method);
+						if (origin != null)
+							field = origin.Operand as FieldDefinition;
+					}
 				}
-			}
 
-			foreach (FieldDefinition field in type.Fields) {
-				// we can't dispose static fields in IDisposable
-				if (field.IsStatic)
-					continue;
-				if (field.FieldType.GetElementType ().IsNative ()) {
-					Runner.Report (field, Severity.High, Confidence.High, 
+				if (field != null && FieldCandidates.Contains (field)) {
+					Runner.Report (field, Severity.High, Confidence.High,
 						abstractWarning ? AbstractTypeMessage : TypeMessage);
 				}
 			}
+		}
 
-			// Warn about possible confusion if the Dispose methods are abstract
-			if (IsAbstract (implicitDisposeMethod))
-				Runner.Report (implicitDisposeMethod, Severity.Medium, Confidence.High, AbstractDisposeMessage);
-
-			return Runner.CurrentRuleResult;
+		protected override bool FieldTypeIsCandidate (TypeDefinition type)
+		{
+			return ((type != null) && type.IsNative ());
 		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/UseNoInliningWithGetCallingAssemblyRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/UseNoInliningWithGetCallingAssemblyRule.cs
index 0026e04..702ab6b 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/UseNoInliningWithGetCallingAssemblyRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/UseNoInliningWithGetCallingAssemblyRule.cs
@@ -71,32 +71,33 @@ namespace Gendarme.Rules.Correctness {
 	[EngineDependency (typeof (OpCodeEngine))]
 	public class UseNoInliningWithGetCallingAssemblyRule : Rule, IMethodRule {
 
-		private const string Assembly = "System.Reflection.Assembly";
-
 		public override void Initialize (IRunner runner)
 		{
 			base.Initialize (runner);
 
 			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				// if the module does not reference System.Reflection.Assembly 
-				// then no method inside it will be calling GetCallingAssembly
+				// if the module does not reference System.Reflection.Assembly.GetCallingAssembly
+				// then there's no point in enabling the rule
 				Active = (e.CurrentAssembly.Name.Name == "mscorlib" ||
-					e.CurrentModule.HasTypeReference (Assembly));
+					e.CurrentModule.AnyMemberReference ((MemberReference mr) => {
+						return IsGetCallingAssembly (mr);
+					})
+				);
 			};
 		}
 
+		static bool IsGetCallingAssembly (MemberReference method)
+		{
+			return method.IsNamed ("System.Reflection", "Assembly", "GetCallingAssembly");
+		}
+
 		static bool IsCallToGetCallingAssembly (Instruction instruction)
 		{
 			var code = instruction.OpCode.Code;
 			if (code != Code.Call && code != Code.Callvirt)
 				return false;
 
-			var method = instruction.Operand as MethodReference;
-			if (method == null)
-				return false;
-
-			return method.Name == "GetCallingAssembly"
-				&& method.DeclaringType.FullName == Assembly;
+			return IsGetCallingAssembly (instruction.GetMethod ());
 		}
 
 		public RuleResult CheckMethod (MethodDefinition method)
diff --git a/gendarme/rules/Gendarme.Rules.Correctness/UseValueInPropertySetterRule.cs b/gendarme/rules/Gendarme.Rules.Correctness/UseValueInPropertySetterRule.cs
index 0e55cbc..c97e3ee 100644
--- a/gendarme/rules/Gendarme.Rules.Correctness/UseValueInPropertySetterRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Correctness/UseValueInPropertySetterRule.cs
@@ -103,7 +103,7 @@ namespace Gendarme.Rules.Correctness {
 				ParameterDefinition pd = instruction.GetParameter (method);
 				if (pd != null) {
 					empty = false;
-					if (pd.GetSequence () == 1) // value
+					if (pd.Index == 0) // value
 						return RuleResult.Success;
 					continue;
 				}
diff --git a/gendarme/rules/Gendarme.Rules.Design.Generic/AvoidDeclaringCustomDelegatesRule.cs b/gendarme/rules/Gendarme.Rules.Design.Generic/AvoidDeclaringCustomDelegatesRule.cs
index 467157a..9156493 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Generic/AvoidDeclaringCustomDelegatesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design.Generic/AvoidDeclaringCustomDelegatesRule.cs
@@ -38,9 +38,8 @@ using Gendarme.Framework.Rocks;
 namespace Gendarme.Rules.Design.Generic {
 
 	/// <summary>
-	/// This rule will fire if custom delegates are defined when either pre-defined
-	/// <code>Action</code>, <code>Action<T[,...]></code> or <code>Func<[Tx,...]TResult></code>
-	/// could have been used. This rule applies only to code using the framework version 2.0 (or later).
+	/// This rule will fire if custom delegates are defined when either pre-defined <code>System.Action</code>, 
+	/// <code>Action<T[,...]></code> or <code>Func<[Tx,...]TResult></code> could have been used.
 	/// </summary>
 	/// <example>
 	/// Bad example (without return value):
@@ -68,32 +67,10 @@ namespace Gendarme.Rules.Design.Generic {
 	/// private Func<int,string,int> func_delegate;
 	/// </code>
 	/// </example>
-	/// <remarks>This rule is available since Gendarme 2.8</remarks>
+	/// <remarks>This rule applies only to assemblies targeting .NET 2.0 and later.</remarks>
 	[Problem ("This delegate could be replaced with an existing framework delegate.")]
 	[Solution ("Prefer the use of Action, Action<T...> and Func<...,TResult> types.")]
-	public class AvoidDeclaringCustomDelegatesRule : Rule, ITypeRule {
-
-		private int MaxParameter = 4; // NET_2_0
-
-		public override void Initialize (IRunner runner)
-		{
-			base.Initialize (runner);
-
-			// we only want to run this on assemblies that use 2.0 or later
-			// since generics were not available before
-			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				TargetRuntime runtime = e.CurrentModule.Runtime;
-				if (runtime >= TargetRuntime.Net_4_0) {
-					MaxParameter = 16;
-					Active = true;
-				} else if (runtime >= TargetRuntime.Net_2_0) {
-					MaxParameter = 4;
-					Active = true;
-				} else {
-					Active = false;
-				}
-			};
-		}
+	public class AvoidDeclaringCustomDelegatesRule : GenericsBaseRule, ITypeRule {
 
 		static string[] ActionMessage = {
 			"Replace with Action()",
@@ -157,7 +134,7 @@ namespace Gendarme.Rules.Design.Generic {
 				n = pdc.Count;
 				// too many parameters to directly use Action/Func
 				// so we lower severity and suggest grouping them
-				if (n > MaxParameter) {
+				if (n > ((type.Module.Runtime >= TargetRuntime.Net_4_0) ? 16 : 4)) {
 					severity = Severity.Low;
 					n = 1;
 					use_structure = true;
@@ -170,7 +147,7 @@ namespace Gendarme.Rules.Design.Generic {
 				}
 			}
 
-			string msg = (invoke.ReturnType.FullName == "System.Void") ? ActionMessage [n] : FuncMessage [n];
+			string msg = invoke.ReturnType.IsNamed ("System", "Void") ? ActionMessage [n] : FuncMessage [n];
 			if (use_structure)
 				msg += " and use a structure to hold all your parameters into <T>.";
 			Runner.Report (type, severity, Confidence.High, msg);
diff --git a/gendarme/rules/Gendarme.Rules.Design.Generic/AvoidExcessiveParametersOnGenericTypesRule.cs b/gendarme/rules/Gendarme.Rules.Design.Generic/AvoidExcessiveParametersOnGenericTypesRule.cs
index e5a8353..d4d02d0 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Generic/AvoidExcessiveParametersOnGenericTypesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design.Generic/AvoidExcessiveParametersOnGenericTypesRule.cs
@@ -37,7 +37,8 @@ using Gendarme.Framework.Rocks;
 namespace Gendarme.Rules.Design.Generic {
 
 	/// <summary>
-	/// A type should not have more than two generic parameters.
+	/// A visible type should not have more than two generic parameters. This makes it
+	/// hard for consumers to remember what each parameter is required for.
 	/// </summary>
 	/// <example>
 	/// Bad example:
@@ -53,11 +54,12 @@ namespace Gendarme.Rules.Design.Generic {
 	/// }
 	/// </code>
 	/// </example>
-
-	[Problem ("A type has more than two generic parameters.")]
+	/// <remarks>This rule applies only to assemblies targeting .NET 2.0 and later.</remarks>
+	[Problem ("A visible type has more than two generic parameters.")]
 	[Solution ("Redesign the type so it doesn't take more than two generic parameters.")]
 	[FxCopCompatibility ("Microsoft.Design", "CA1005:AvoidExcessiveParametersOnGenericTypes")]
-	public class AvoidExcessiveParametersOnGenericTypesRule : Rule, ITypeRule {
+	public class AvoidExcessiveParametersOnGenericTypesRule : GenericsBaseRule, ITypeRule {
+
 		public RuleResult CheckType (TypeDefinition type)
 		{
 			if (!type.IsClass || !type.HasGenericParameters || !type.IsVisible ())
diff --git a/gendarme/rules/Gendarme.Rules.Design.Generic/AvoidMethodWithUnusedGenericTypeRule.cs b/gendarme/rules/Gendarme.Rules.Design.Generic/AvoidMethodWithUnusedGenericTypeRule.cs
index b369332..18d21eb 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Generic/AvoidMethodWithUnusedGenericTypeRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design.Generic/AvoidMethodWithUnusedGenericTypeRule.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 
@@ -75,50 +76,37 @@ namespace Gendarme.Rules.Design.Generic {
 	/// }
 	/// </code>
 	/// </example>
-	/// <remarks>This rule is available since Gendarme 2.2</remarks>
-
+	/// <remarks>This rule applies only to assemblies targeting .NET 2.0 and later.</remarks>
 	[Problem ("One or more generic type parameters are not used in the formal parameter list.")]
 	[Solution ("This prevents the compiler from inferring types when the method is used which results in hard to use API definitions.")]
 	[FxCopCompatibility ("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter")]
-	public class AvoidMethodWithUnusedGenericTypeRule : Rule, IMethodRule {
-
-		public override void Initialize (IRunner runner)
-		{
-			base.Initialize (runner);
-
-			// we only want to run this on assemblies that use 2.0 or later
-			// since generics were not available before
-			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				Active = (e.CurrentModule.Runtime >= TargetRuntime.Net_2_0);
-			};
-		}
+	public class AvoidMethodWithUnusedGenericTypeRule : GenericsBaseRule, IMethodRule {
 
-		static bool FindGenericType (IGenericInstance git, string fullname)
+		static bool FindGenericType (IGenericInstance git, string nameSpace, string name)
 		{
 			foreach (object o in git.GenericArguments) {
-				if (IsGenericParameter (o, fullname))
+				if (IsGenericParameter (o, nameSpace, name))
 					return true;
 
 				GenericInstanceType inner = (o as GenericInstanceType);
-				if ((inner != null) && (FindGenericType (inner, fullname)))
+				if ((inner != null) && (FindGenericType (inner, nameSpace, name)))
 					return true;
 			}
 			return false;
 		}
 
-		static bool IsGenericParameter (object obj, string fullname)
+		static bool IsGenericParameter (object obj, string nameSpace, string name)
 		{
-			GenericParameter gp = (obj as GenericParameter);
-			return ((gp != null) && (gp.FullName == fullname));
+			return (obj as GenericParameter).IsNamed (nameSpace, name);
 		}
 
-		static bool IsGenericType (MemberReference type, string fullname)
+		static bool IsGenericType (TypeReference type, string nspace, string name)
 		{
-			if (type.FullName == fullname)
+			if (type.IsNamed (nspace, name))
 				return true;
 
 			var type_spec = type as TypeSpecification;
-			if (type_spec != null && type_spec.ElementType.FullName == fullname)
+			if (type_spec != null && type_spec.ElementType.IsNamed (nspace, name))
 				return true;
 
 			// handle things like ICollection<T>
@@ -126,7 +114,7 @@ namespace Gendarme.Rules.Design.Generic {
 			if (git == null)
 				return false;
 
-			return FindGenericType (git, fullname);
+			return FindGenericType (git, nspace, name);
 		}
 
 		public RuleResult CheckMethod (MethodDefinition method)
@@ -139,21 +127,23 @@ namespace Gendarme.Rules.Design.Generic {
 			foreach (GenericParameter gp in method.GenericParameters) {
 				Severity severity = Severity.Medium;
 				bool found = false;
-				string gp_fullname = gp.FullName;
+				string nspace = gp.Namespace;
+				string name = gp.Name;
 				// ... is being used by the method parameters
 				foreach (ParameterDefinition pd in method.Parameters) {
-					if (IsGenericType (pd.ParameterType, gp_fullname)) {
+					if (IsGenericType (pd.ParameterType, nspace, name)) {
 						found = true;
 						break;
 					}
 				}
 				if (!found) {
 					// it's a defect when used only for the return value - but we reduce its severity
-					if (IsGenericType (method.ReturnType, gp_fullname))
+					if (IsGenericType (method.ReturnType, nspace, name))
 						severity = Severity.Low;
 				}
 				if (!found) {
-					string msg = String.Format ("Generic parameter '{0}' is not used by the method parameters.", gp_fullname);
+					string msg = String.Format (CultureInfo.InvariantCulture,
+						"Generic parameter '{0}.{1}' is not used by the method parameters.", nspace, name);
 					Runner.Report (method, severity, Confidence.High, msg);
 				}
 			}
diff --git a/gendarme/rules/Gendarme.Rules.Design.Generic/DoNotDeclareStaticMembersOnGenericTypesRule.cs b/gendarme/rules/Gendarme.Rules.Design.Generic/DoNotDeclareStaticMembersOnGenericTypesRule.cs
index 00badaa..bc77797 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Generic/DoNotDeclareStaticMembersOnGenericTypesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design.Generic/DoNotDeclareStaticMembersOnGenericTypesRule.cs
@@ -33,13 +33,14 @@ using Gendarme.Framework.Rocks;
 namespace Gendarme.Rules.Design.Generic {
 
 	/// <summary>
-	/// This rule checks for generic types that contain static members.
+	/// This rule checks for generic types that contain static members. Such members requires the type argument
+	/// to be specified when consumed, leading to harder to use or confusing API.
 	/// </summary>
 	/// <example>
 	/// Bad example:
 	/// <code>
 	/// public class BadClass<T> {
-	///	public static string member () {
+	///	public static string Member () {
 	///	}
 	/// }
 	/// </code>
@@ -48,16 +49,16 @@ namespace Gendarme.Rules.Design.Generic {
 	/// Good example:
 	/// <code>
 	/// public class GoodClass<T> {
-	///	public string member () {
+	///	public string Member () {
 	///	}
 	/// }
 	/// </code>
 	/// </example>
-
+	/// <remarks>This rule applies only to assemblies targeting .NET 2.0 and later.</remarks>
 	[Problem ("An externally visible generic type has a static member.")]
 	[Solution ("Remove the static member or change it to an instance member.")]
 	[FxCopCompatibility ("Microsoft.Design", "CA1000:DoNotDeclareStaticMembersOnGenericTypes")]
-	public class DoNotDeclareStaticMembersOnGenericTypesRule : Rule, ITypeRule {
+	public class DoNotDeclareStaticMembersOnGenericTypesRule : GenericsBaseRule, ITypeRule {
 		public RuleResult CheckType (TypeDefinition type)
 		{
 			if (!type.IsClass || !type.HasGenericParameters || !type.IsVisible ())
diff --git a/gendarme/rules/Gendarme.Rules.Design.Generic/DoNotExposeGenericListsRule.cs b/gendarme/rules/Gendarme.Rules.Design.Generic/DoNotExposeGenericListsRule.cs
index c8712ad..37f3904 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Generic/DoNotExposeGenericListsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design.Generic/DoNotExposeGenericListsRule.cs
@@ -37,8 +37,8 @@ using Gendarme.Framework.Rocks;
 namespace Gendarme.Rules.Design.Generic {
 
 	/// <summary>
-	/// A type has an externally visible member that is, returns, or has a signature containing a 
-	/// System.Collections.Generic.List<T>.
+	/// A type has an externally visible member that is, returns or has a signature containing a 
+	/// <c>System.Collections.Generic.List<T></c>.
 	/// </summary>
 	/// <example>
 	/// Bad example:
@@ -56,17 +56,17 @@ namespace Gendarme.Rules.Design.Generic {
 	/// }
 	/// </code>
 	/// </example>
-
+	/// <remarks>This rule applies only to assemblies targeting .NET 2.0 and later.</remarks>
 	[Problem ("The type exposes System.Collections.Generic.List<T>.")]
 	[Solution ("Use a type such as System.Collections.ObjectModel.Collection<T> instead.")]
 	[FxCopCompatibility ("Microsoft.Design", "CA1002:DoNotExposeGenericLists")]
-	public class DoNotExposeGenericListsRule : Rule, ITypeRule {
+	public class DoNotExposeGenericListsRule : GenericsBaseRule, ITypeRule {
 		private const string List = "List`1";
 
 		private static bool IsList (TypeReference type)
 		{			
 			return type.Namespace == "System.Collections.Generic" &&
-				type.Name.StartsWith (List);
+				type.Name.StartsWith (List, StringComparison.Ordinal);
 		}
 
 		private void CheckField (FieldReference field)
@@ -80,9 +80,7 @@ namespace Gendarme.Rules.Design.Generic {
 			if (!IsList (property.PropertyType))
 				return;
 
-			MethodDefinition getm = property.GetMethod;
-			MethodDefinition setm = property.SetMethod;
-			if (((getm != null) && getm.IsVisible ()) || ((setm != null) && setm.IsVisible ()))
+			if (property.GetMethod.IsVisible () || property.SetMethod.IsVisible ())
 				Runner.Report (property, Severity.Medium, Confidence.Total);
 		}
 
diff --git a/gendarme/rules/Gendarme.Rules.Design.Generic/DoNotExposeNestedGenericSignaturesRule.cs b/gendarme/rules/Gendarme.Rules.Design.Generic/DoNotExposeNestedGenericSignaturesRule.cs
index 40450bc..d8c5f01 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Generic/DoNotExposeNestedGenericSignaturesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design.Generic/DoNotExposeNestedGenericSignaturesRule.cs
@@ -41,7 +41,7 @@ namespace Gendarme.Rules.Design.Generic {
 	/// <c>List<List<int>></c>. Such types are hard to construct and should
 	/// be avoided because simpler alternatives generally exist.
 	/// Since some language, like C#, have direct support for nullable types, i.e. 
-	/// <c>Nullable<T></c> this specific case is ignored by the rule.
+	/// <c>System.Nullable<T></c> this specific case is ignored by the rule.
 	/// </summary>
 	/// <example>
 	/// Bad example:
@@ -63,23 +63,11 @@ namespace Gendarme.Rules.Design.Generic {
 	/// }
 	/// </code>
 	/// </example>
-	/// <remarks>This rule is available since Gendarme 2.4</remarks>
-
+	/// <remarks>This rule applies only to assemblies targeting .NET 2.0 and later.</remarks>
 	[Problem ("This method exposes a nested generic type in its signature.")]
 	[Solution ("Remove the nested generics to keep the visible API simple to use.")]
 	[FxCopCompatibility ("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
-	public class DoNotExposeNestedGenericSignaturesRule : Rule, IMethodRule {
-
-		public override void Initialize (IRunner runner)
-		{
-			base.Initialize (runner);
-
-			// we only want to run this on assemblies that use 2.0 or later
-			// since generics were not available before
-			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				Active = (e.CurrentModule.Runtime >= TargetRuntime.Net_2_0);
-			};
-		}
+	public class DoNotExposeNestedGenericSignaturesRule : GenericsBaseRule, IMethodRule {
 
 		static Severity? Check (TypeReference type)
 		{
@@ -91,7 +79,7 @@ namespace Gendarme.Rules.Design.Generic {
 						// nullable are an exception because there is syntaxic sugar (at 
 						// least in some language like C#) to make them easier to use
 						// note: FxCop does not ignore them
-						if (git.ElementType.FullName == "System.Nullable`1")
+						if (git.ElementType.IsNamed ("System", "Nullable`1"))
 							return null;
 						// FIXME: we should look at ignoring LINQ queries too, because it
 						// too pretty much hides the complexity of nested generics
diff --git a/gendarme/rules/Gendarme.Rules.Design.Generic/Gendarme.Rules.Design.Generic.csproj b/gendarme/rules/Gendarme.Rules.Design.Generic/Gendarme.Rules.Design.Generic.csproj
index 9ab2871..17731ea 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Generic/Gendarme.Rules.Design.Generic.csproj
+++ b/gendarme/rules/Gendarme.Rules.Design.Generic/Gendarme.Rules.Design.Generic.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Gendarme.Rules.Design.Generic</RootNamespace>
     <AssemblyName>Gendarme.Rules.Design.Generic</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -24,6 +44,7 @@
     <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Design.Generic.xml</DocumentationFile>
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -35,6 +56,7 @@
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
     <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Design.Generic.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -52,6 +74,7 @@
     <Compile Include="DoNotDeclareStaticMembersOnGenericTypesRule.cs" />
     <Compile Include="DoNotExposeGenericListsRule.cs" />
     <Compile Include="DoNotExposeNestedGenericSignaturesRule.cs" />
+    <Compile Include="GenericsBaseRule.cs" />
     <Compile Include="ImplementGenericCollectionInterfacesRule.cs" />
     <Compile Include="UseGenericEventHandlerRule.cs" />
     <Compile Include="PreferGenericsOverRefObjectRule.cs" />
@@ -66,6 +89,23 @@
       <Name>Gendarme.Framework</Name>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/console/Helpers.cs b/gendarme/rules/Gendarme.Rules.Design.Generic/GenericsBaseRule.cs
similarity index 66%
copy from gendarme/console/Helpers.cs
copy to gendarme/rules/Gendarme.Rules.Design.Generic/GenericsBaseRule.cs
index c399452..12be75c 100644
--- a/gendarme/console/Helpers.cs
+++ b/gendarme/rules/Gendarme.Rules.Design.Generic/GenericsBaseRule.cs
@@ -1,10 +1,10 @@
 //
-// Gendarme Console Settings
+// Gendarme.Rules.Design.Generic.GenericBaseRule
 //
 // Authors:
 //	Sebastien Pouliot <sebastien at ximian.com>
 //
-// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -13,10 +13,10 @@
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -27,21 +27,24 @@
 //
 
 using System;
-using System.IO;
-using System.Reflection;
+using Mono.Cecil;
+
+using Gendarme.Framework;
 
-namespace Gendarme {
+namespace Gendarme.Rules.Design.Generic {
 
-	static class Helpers {
+	public abstract class GenericsBaseRule : Rule {
 
-		public static Stream GetStreamFromResource (string resourceName)
+		public override void Initialize (IRunner runner)
 		{
-			Assembly executing = Assembly.GetExecutingAssembly ();
-			foreach (string resource in executing.GetManifestResourceNames ()) {
-				if (resource.EndsWith (resourceName))
-					return executing.GetManifestResourceStream (resource);
-			}
-			return null;
+			base.Initialize (runner);
+
+			// we only want to run Design.Generic.* rules on assemblies that 
+			// use 2.0 or later since generics were not available before
+			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
+				Active = (e.CurrentModule.Runtime >= TargetRuntime.Net_2_0);
+			};
 		}
 	}
 }
+
diff --git a/gendarme/rules/Gendarme.Rules.Design.Generic/ImplementGenericCollectionInterfacesRule.cs b/gendarme/rules/Gendarme.Rules.Design.Generic/ImplementGenericCollectionInterfacesRule.cs
index 87391eb..c2d2c32 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Generic/ImplementGenericCollectionInterfacesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design.Generic/ImplementGenericCollectionInterfacesRule.cs
@@ -36,9 +36,9 @@ using Gendarme.Framework.Rocks;
 namespace Gendarme.Rules.Design.Generic {
 
 	/// <summary>
-	/// This rule checks for types which implement the non-generic IEnumerable interface but 
-	/// not the IEnumerable<T> interface. Implementing the generic version
-	/// of IEnumerable avoids casts, and possibly boxing, when iterating the collection.
+	/// This rule checks for types which implement the non-generic <code>System.IEnumerable</code> interface but 
+	/// not the <code>System.IEnumerable<T></code> interface. Implementing the generic version
+	/// of <code>System.IEnumerable</code> avoids casts, and possibly boxing, when iterating the collection.
 	/// </summary>
 	/// <example>
 	/// Bad example:
@@ -64,23 +64,11 @@ namespace Gendarme.Rules.Design.Generic {
 	/// }
 	/// </code>
 	/// </example>
-	/// <remarks>Before Gendarme 2.2 this rule was part of Gendarme.Rules.Design assembly.</remarks>
-
+	/// <remarks>This rule applies only to assemblies targeting .NET 2.0 and later.</remarks>
 	[Problem ("This type implements the non-generic IEnumerable interface but not IEnumerable<T> which would make your collection type-safe.")]
 	[Solution ("Implement one of generic collection interfaces such as IEnumerable<T>, ICollection<T> or IList<T>.")]
 	[FxCopCompatibility ("Microsoft.Design", "CA1010:CollectionsShouldImplementGenericInterface")]
-	public class ImplementGenericCollectionInterfacesRule : Rule, ITypeRule {
-
-		public override void Initialize (IRunner runner)
-		{
-			base.Initialize (runner);
-
-			// we only want to run this on assemblies that use 2.0 or later
-			// since generics were not available before
-			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				Active = (e.CurrentModule.Runtime >= TargetRuntime.Net_2_0);
-			};
-		}
+	public class ImplementGenericCollectionInterfacesRule : GenericsBaseRule, ITypeRule {
 
 		public RuleResult CheckType (TypeDefinition type)
 		{
@@ -93,15 +81,15 @@ namespace Gendarme.Rules.Design.Generic {
 				return RuleResult.DoesNotApply;
 
 			// rule only applies if the type implements IEnumerable
-			if (!type.Implements ("System.Collections.IEnumerable"))
+			if (!type.Implements ("System.Collections", "IEnumerable"))
 				return RuleResult.DoesNotApply;
 		
 			// rule does not apply to the types implementing IDictionary
-			if (type.Implements ("System.Collections.IDictionary"))
+			if (type.Implements ("System.Collections", "IDictionary"))
 				return RuleResult.DoesNotApply;
 
 			// the type should implement IEnumerable<T> too
-			if (!type.Implements ("System.Collections.Generic.IEnumerable`1"))
+			if (!type.Implements ("System.Collections.Generic", "IEnumerable`1"))
 				Runner.Report (type, Severity.Medium, Confidence.High);
 
 			return Runner.CurrentRuleResult;
diff --git a/gendarme/rules/Gendarme.Rules.Design.Generic/Makefile.am b/gendarme/rules/Gendarme.Rules.Design.Generic/Makefile.am
index 4e50027..701ad0e 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Generic/Makefile.am
+++ b/gendarme/rules/Gendarme.Rules.Design.Generic/Makefile.am
@@ -7,6 +7,7 @@ rules_sources =  \
 	DoNotDeclareStaticMembersOnGenericTypesRule.cs \
 	DoNotExposeGenericListsRule.cs \
 	DoNotExposeNestedGenericSignaturesRule.cs \
+	GenericsBaseRule.cs \
 	ImplementGenericCollectionInterfacesRule.cs \
 	PreferGenericsOverRefObjectRule.cs \
 	UseGenericEventHandlerRule.cs
diff --git a/gendarme/rules/Gendarme.Rules.Design.Generic/Makefile.in b/gendarme/rules/Gendarme.Rules.Design.Generic/Makefile.in
index 6d2d276..b22972d 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Generic/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Design.Generic/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(rules_categorydir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
-rules_categorySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(rules_category_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,20 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(rules_documentation_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -130,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -258,6 +334,7 @@ rules_sources = \
 	DoNotDeclareStaticMembersOnGenericTypesRule.cs \
 	DoNotExposeGenericListsRule.cs \
 	DoNotExposeNestedGenericSignaturesRule.cs \
+	GenericsBaseRule.cs \
 	ImplementGenericCollectionInterfacesRule.cs \
 	PreferGenericsOverRefObjectRule.cs \
 	UseGenericEventHandlerRule.cs
@@ -280,14 +357,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Design.Generic/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Design.Generic/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Design.Generic/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Design.Generic/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -297,6 +374,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../common.make $(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -305,42 +383,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-rules_categorySCRIPTS: $(rules_category_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_categorydir)" || $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)"
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_categorydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(rules_categorySCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	    $(rules_categorySCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rules_categorydir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rules_categorydir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-rules_categorySCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	done
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(rules_categorydir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -349,7 +448,7 @@ uninstall-rules_documentationDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -366,7 +465,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -374,7 +473,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -400,16 +499,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -417,14 +516,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -436,7 +535,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -445,29 +544,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -488,29 +592,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -533,10 +649,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -544,6 +665,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -563,6 +685,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -572,18 +696,28 @@ install-data-am: install-rules_categorySCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -605,8 +739,8 @@ ps-am:
 uninstall-am: uninstall-rules_categorySCRIPTS \
 	uninstall-rules_documentationDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -626,11 +760,11 @@ uninstall-am: uninstall-rules_categorySCRIPTS \
 
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -639,7 +773,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
@@ -659,6 +793,7 @@ $(rules_doc_source):
 
 clean-local:
 	rm -fr doc
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Design.Generic/PreferGenericsOverRefObjectRule.cs b/gendarme/rules/Gendarme.Rules.Design.Generic/PreferGenericsOverRefObjectRule.cs
index 56f67a4..fe94e7f 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Generic/PreferGenericsOverRefObjectRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design.Generic/PreferGenericsOverRefObjectRule.cs
@@ -38,7 +38,7 @@ namespace Gendarme.Rules.Design.Generic {
 
 	/// <summary>
 	/// This rule fires if a method has a reference argument (<c>ref</c> or
-	/// <c>out</c> in C#) to System.Object. These methods can generally be
+	/// <c>out</c> in C#) to <c>System.Object</c>. These methods can generally be
 	/// rewritten in .NET 2.0 using generics which provides type safety, eliminates
 	/// casts, and makes the API easier to consume.
 	/// </summary>
@@ -61,23 +61,11 @@ namespace Gendarme.Rules.Design.Generic {
 	/// }
 	/// </code>
 	/// </example>
-	/// <remarks>This rule is available since Gendarme 2.2</remarks>
-
+	/// <remarks>This rule applies only to assemblies targeting .NET 2.0 and later.</remarks>
 	[Problem ("This method contains a reference parameter to System.Object which is often an indication that the code is not type safe.")]
 	[Solution ("Change the parameter to use a generic type where the caller will provide the type.")]
 	[FxCopCompatibility ("Microsoft.Design", "CA1007:UseGenericsWhereAppropriate")]
-	public class PreferGenericsOverRefObjectRule : Rule, IMethodRule {
-
-		public override void Initialize (IRunner runner)
-		{
-			base.Initialize (runner);
-
-			// we only want to run this on assemblies that use 2.0 or later
-			// since generics were not available before
-			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				Active = (e.CurrentModule.Runtime >= TargetRuntime.Net_2_0);
-			};
-		}
+	public class PreferGenericsOverRefObjectRule : GenericsBaseRule, IMethodRule {
 
 		public RuleResult CheckMethod (MethodDefinition method)
 		{
@@ -86,11 +74,11 @@ namespace Gendarme.Rules.Design.Generic {
 				return RuleResult.DoesNotApply;
 
 			// exclude the "bool Try* (ref)" pattern from the rule
-			if (method.Name.StartsWith ("Try", StringComparison.Ordinal) && (method.ReturnType.FullName == "System.Boolean"))
+			if (method.Name.StartsWith ("Try", StringComparison.Ordinal) && method.ReturnType.IsNamed ("System", "Boolean"))
 				return RuleResult.DoesNotApply;
 
 			foreach (ParameterDefinition parameter in method.Parameters) {
-				if (parameter.ParameterType.FullName != "System.Object&")
+				if (!parameter.ParameterType.IsNamed ("System", "Object&"))
 					continue;
 
 				// suggest using generics
diff --git a/gendarme/rules/Gendarme.Rules.Design.Generic/Test/Makefile.in b/gendarme/rules/Gendarme.Rules.Design.Generic/Test/Makefile.in
index 701cef0..c3c537b 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Generic/Test/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Design.Generic/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Design.Generic/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Design.Generic/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Design.Generic/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Design.Generic/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -298,6 +338,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -306,18 +348,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -352,6 +404,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Design.Generic/Test/Tests.Rules.Design.Generic.csproj b/gendarme/rules/Gendarme.Rules.Design.Generic/Test/Tests.Rules.Design.Generic.csproj
index ca2b70d..5eb62ff 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Generic/Test/Tests.Rules.Design.Generic.csproj
+++ b/gendarme/rules/Gendarme.Rules.Design.Generic/Test/Tests.Rules.Design.Generic.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Tests.Rules.Design.Generic</RootNamespace>
     <AssemblyName>Tests.Rules.Design.Generic</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -21,6 +41,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -29,6 +50,7 @@
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
@@ -76,6 +98,23 @@
   <ItemGroup>
     <Folder Include="Properties\" />
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.Design.Generic/UseGenericEventHandlerRule.cs b/gendarme/rules/Gendarme.Rules.Design.Generic/UseGenericEventHandlerRule.cs
index 9535a2a..71083fd 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Generic/UseGenericEventHandlerRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design.Generic/UseGenericEventHandlerRule.cs
@@ -38,8 +38,8 @@ using Gendarme.Framework.Rocks;
 namespace Gendarme.Rules.Design.Generic {
 
 	/// <summary>
-	/// This rule fires if an assembly targets .NET 2.0 or later and defines a delegate
-	/// which can be replaced by <c>System.EventHandler<TEventArgs></c>.
+	/// This rule fires if an assembly defines a delegate which can be
+	/// replaced by <c>System.EventHandler<TEventArgs></c>.
 	/// </summary>
 	/// <example>
 	/// Bad example:
@@ -57,23 +57,11 @@ namespace Gendarme.Rules.Design.Generic {
 	/// public event EventHandler<AuthenticityEventArgs> CheckedAuthenticity;
 	/// </code>
 	/// </example>
-	/// <remarks>This rule is available since Gendarme 2.2</remarks>
-
+	/// <remarks>This rule applies only to assemblies targeting .NET 2.0 and later.</remarks>
 	[Problem ("This delegate definition is not needed with .NET 2.0 and later runtimes.")]
 	[Solution ("Replace the delegate with System.EventHandler<TEventArgs>.")]
 	[FxCopCompatibility ("Microsoft.Design", "CA1003:UseGenericEventHandlerInstances")]
-	public class UseGenericEventHandlerRule : Rule, ITypeRule {
-
-		public override void Initialize (IRunner runner)
-		{
-			base.Initialize (runner);
-
-			// we only want to run this on assemblies that use 2.0 or later
-			// since generics were not available before
-			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				Active = (e.CurrentModule.Runtime >= TargetRuntime.Net_2_0);
-			};
-		}
+	public class UseGenericEventHandlerRule : GenericsBaseRule, ITypeRule {
 
 		public RuleResult CheckType (TypeDefinition type)
 		{
@@ -86,7 +74,7 @@ namespace Gendarme.Rules.Design.Generic {
 			if (invoke == null)
 				return RuleResult.DoesNotApply;
 
-			if (invoke.ReturnType.FullName != "System.Void")
+			if (!invoke.ReturnType.IsNamed ("System", "Void"))
 				return RuleResult.Success;
 
 			if (!invoke.HasParameters)
@@ -95,9 +83,9 @@ namespace Gendarme.Rules.Design.Generic {
 			IList<ParameterDefinition> pdc = invoke.Parameters;
 			if (pdc.Count != 2)
 				return RuleResult.Success;
-			if (pdc [0].ParameterType.FullName != "System.Object")
+			if (!pdc [0].ParameterType.IsNamed ("System", "Object"))
 				return RuleResult.Success;
-			if (!pdc [1].ParameterType.Inherits ("System.EventArgs"))
+			if (!pdc [1].ParameterType.Inherits ("System", "EventArgs"))
 				return RuleResult.Success;
 
 			Runner.Report (type, Severity.Medium, Confidence.High);
diff --git a/gendarme/rules/Gendarme.Rules.Design.Linq/AvoidExtensionMethodOnSystemObjectRule.cs b/gendarme/rules/Gendarme.Rules.Design.Linq/AvoidExtensionMethodOnSystemObjectRule.cs
index a5935e0..a2f1308 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Linq/AvoidExtensionMethodOnSystemObjectRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design.Linq/AvoidExtensionMethodOnSystemObjectRule.cs
@@ -77,8 +77,11 @@ namespace Gendarme.Rules.Design.Linq {
 			// extension methods are only available in FX3.5
 			// check runtime >= NET2_0 (fast) then check if [ExtensionAttribute] is referenced
 			Runner.AnalyzeModule += (object o, RunnerEventArgs e) => {
-				Active = e.CurrentModule.Runtime >= TargetRuntime.Net_2_0 &&
-					e.CurrentModule.HasTypeReference ("System.Runtime.CompilerServices.ExtensionAttribute");
+				Active = (e.CurrentModule.Runtime >= TargetRuntime.Net_2_0 &&
+					e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+						return tr.IsNamed ("System.Runtime.CompilerServices", "ExtensionAttribute");
+					})
+				);
 			};
 		}
 
@@ -92,7 +95,7 @@ namespace Gendarme.Rules.Design.Linq {
 			if (!method.HasParameters)
 				return false;
 
-			return method.HasAttribute ("System.Runtime.CompilerServices.ExtensionAttribute");
+			return method.HasAttribute ("System.Runtime.CompilerServices", "ExtensionAttribute");
 		}
 
 		public RuleResult CheckMethod (MethodDefinition method)
@@ -100,7 +103,7 @@ namespace Gendarme.Rules.Design.Linq {
 			if (!IsExtension (method))
 				return RuleResult.DoesNotApply;
 
-			if (method.Parameters [0].ParameterType.FullName != "System.Object")
+			if (!method.Parameters [0].ParameterType.IsNamed ("System", "Object"))
 				return RuleResult.Success;
 
 			Runner.Report (method, Severity.High, Confidence.High);
diff --git a/gendarme/rules/Gendarme.Rules.Design.Linq/Gendarme.Rules.Design.Linq.csproj b/gendarme/rules/Gendarme.Rules.Design.Linq/Gendarme.Rules.Design.Linq.csproj
index 6a09a06..135c620 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Linq/Gendarme.Rules.Design.Linq.csproj
+++ b/gendarme/rules/Gendarme.Rules.Design.Linq/Gendarme.Rules.Design.Linq.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Gendarme.Rules.Design.Linq</RootNamespace>
     <AssemblyName>Gendarme.Rules.Design.Linq</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -24,6 +44,7 @@
     <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Design.Linq.xml</DocumentationFile>
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -35,6 +56,7 @@
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
     <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Design.Linq.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -58,6 +80,23 @@
       <Name>Gendarme.Framework</Name>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.Design.Linq/Makefile.in b/gendarme/rules/Gendarme.Rules.Design.Linq/Makefile.in
index 6606b60..27704b9 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Linq/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Design.Linq/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(rules_categorydir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
-rules_categorySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(rules_category_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,20 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(rules_documentation_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -130,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -261,14 +337,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Design.Linq/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Design.Linq/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Design.Linq/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Design.Linq/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -278,6 +354,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../common.make $(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -286,42 +363,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-rules_categorySCRIPTS: $(rules_category_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_categorydir)" || $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)"
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_categorydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(rules_categorySCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	    $(rules_categorySCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rules_categorydir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rules_categorydir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-rules_categorySCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	done
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(rules_categorydir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -330,7 +428,7 @@ uninstall-rules_documentationDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -347,7 +445,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -355,7 +453,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -381,16 +479,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -398,14 +496,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -417,7 +515,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -426,29 +524,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -469,29 +572,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -514,10 +629,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -525,6 +645,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -544,6 +665,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -553,18 +676,28 @@ install-data-am: install-rules_categorySCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -586,8 +719,8 @@ ps-am:
 uninstall-am: uninstall-rules_categorySCRIPTS \
 	uninstall-rules_documentationDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -607,11 +740,11 @@ uninstall-am: uninstall-rules_categorySCRIPTS \
 
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -620,7 +753,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
@@ -640,6 +773,7 @@ $(rules_doc_source):
 
 clean-local:
 	rm -fr doc
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Design.Linq/Test/Makefile.in b/gendarme/rules/Gendarme.Rules.Design.Linq/Test/Makefile.in
index 47ec18c..8ccbf13 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Linq/Test/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Design.Linq/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Design.Linq/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Design.Linq/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Design.Linq/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Design.Linq/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -298,6 +338,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -306,18 +348,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -352,6 +404,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Design.Linq/Test/Tests.Rules.Design.Linq.csproj b/gendarme/rules/Gendarme.Rules.Design.Linq/Test/Tests.Rules.Design.Linq.csproj
index 2a013ee..10db1dc 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Linq/Test/Tests.Rules.Design.Linq.csproj
+++ b/gendarme/rules/Gendarme.Rules.Design.Linq/Test/Tests.Rules.Design.Linq.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Tests.Rules.Design.Linq</RootNamespace>
     <AssemblyName>Tests.Rules.Design.Linq</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -21,6 +41,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -29,6 +50,7 @@
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
@@ -68,6 +90,23 @@
   <ItemGroup>
     <Folder Include="Properties\" />
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.Design/AttributeArgumentsShouldHaveAccessorsRule.cs b/gendarme/rules/Gendarme.Rules.Design/AttributeArgumentsShouldHaveAccessorsRule.cs
index df472de..cc037aa 100644
--- a/gendarme/rules/Gendarme.Rules.Design/AttributeArgumentsShouldHaveAccessorsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/AttributeArgumentsShouldHaveAccessorsRule.cs
@@ -26,6 +26,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 
 using Mono.Cecil;
 
@@ -106,11 +107,18 @@ namespace Gendarme.Rules.Design {
 
 			// look through getters
 			allProperties.Clear ();
-			foreach (PropertyDefinition property in type.Properties) {
-				if (property.GetMethod != null) {
-					allProperties.Add (property.Name);
+
+			TypeDefinition t = type;
+			// Walk up the inheritance tree so that inherited properties are counted
+			do
+			{
+				foreach (PropertyDefinition property in t.Properties) {
+					if (property.GetMethod != null) {
+						allProperties.Add (property.Name);
+					}
 				}
-			}
+				t = t.BaseType != null ? t.BaseType.Resolve () : null;
+			} while (t != null  && !t.IsNamed ("System", "Attribute"));
 
 			// look through parameters
 			foreach (MethodDefinition constructor in type.Methods) {
@@ -119,9 +127,11 @@ namespace Gendarme.Rules.Design {
 
 				foreach (ParameterDefinition param in constructor.Parameters) {
 					 // pascal case it
-					string correspondingPropertyName = Char.ToUpper (param.Name [0]).ToString () + param.Name.Substring (1);
+					string correspondingPropertyName = Char.ToUpper (param.Name [0], CultureInfo.InvariantCulture).ToString (CultureInfo.InvariantCulture) +
+						param.Name.Substring (1);
 					if (!allProperties.Contains (correspondingPropertyName)) {
-						string s = String.Format ("Add '{0}' property to the attribute class.", correspondingPropertyName);
+						string s = String.Format (CultureInfo.InvariantCulture, 
+							"Add '{0}' property to the attribute class.", correspondingPropertyName);
 						Runner.Report (param, Severity.Medium, Confidence.High, s);
 						allProperties.Add (correspondingPropertyName); // to avoid double catching same property (e.g. from different constructors)
 					}
diff --git a/gendarme/rules/Gendarme.Rules.Design/AvoidPublicInstanceFieldsRule.cs b/gendarme/rules/Gendarme.Rules.Design/AvoidPublicInstanceFieldsRule.cs
index 0641913..9932c47 100644
--- a/gendarme/rules/Gendarme.Rules.Design/AvoidPublicInstanceFieldsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/AvoidPublicInstanceFieldsRule.cs
@@ -25,6 +25,7 @@
 // THE SOFTWARE.
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 
@@ -89,11 +90,13 @@ namespace Gendarme.Rules.Design {
 
 				string name = fd.Name;
 				if (fd.FieldType.IsArray) {
-					string s = String.Format ("Consider changing the field '{0}' to a private or internal field and add a 'Set{1}{2}' method.",
-						name, Char.ToUpper (name [0]).ToString (), name.Substring (1));
+					string s = String.Format (CultureInfo.InvariantCulture, 
+						"Consider changing the field '{0}' to a private or internal field and add a 'Set{1}{2}' method.",
+						name, Char.ToUpper (name [0], CultureInfo.InvariantCulture).ToString (CultureInfo.InvariantCulture), name.Substring (1));
 					Runner.Report (fd, Severity.Medium, Confidence.Total, s);
 				} else {
-					string s = String.Format ("Field '{0}' should be private or internal and its value accessed through a property.", name);
+					string s = String.Format (CultureInfo.InvariantCulture, 
+						"Field '{0}' should be private or internal and its value accessed through a property.", name);
 					Runner.Report (fd, Severity.Medium, Confidence.Total, s);
 				}
 			}
diff --git a/gendarme/rules/Gendarme.Rules.Design/AvoidRefAndOutParametersRule.cs b/gendarme/rules/Gendarme.Rules.Design/AvoidRefAndOutParametersRule.cs
index 2e86234..b8828e9 100644
--- a/gendarme/rules/Gendarme.Rules.Design/AvoidRefAndOutParametersRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/AvoidRefAndOutParametersRule.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 using Mono.Cecil;
 
 using Gendarme.Framework;
@@ -139,7 +140,7 @@ namespace Gendarme.Rules.Design {
 				string how = null;
 				if (parameter.IsOut) {
 					// out is permitted for the "bool Try* (...)" pattern
-					if ((method.ReturnType.FullName == "System.Boolean") && 
+					if (method.ReturnType.IsNamed ("System", "Boolean") && 
 						method.Name.StartsWith ("Try", StringComparison.Ordinal)) {
 						continue;
 					}
@@ -153,7 +154,8 @@ namespace Gendarme.Rules.Design {
 				if ((how != null) && !IsSignatureDictatedByInterface (method)) {
 					// goal is to keep the API as simple as possible so this is more severe for public than protected methods
 					Severity severity = method.IsPublic ? Severity.Medium : Severity.Low;
-					string msg = String.Format ("Parameter '{0}' passed by reference ({1}).", parameter.Name, how);
+					string msg = String.Format (CultureInfo.InvariantCulture,
+						"Parameter '{0}' passed by reference ({1}).", parameter.Name, how);
 					Runner.Report (parameter, severity, Confidence.Total, msg);
 				}
 			}
diff --git a/gendarme/rules/Gendarme.Rules.Design/AvoidSmallNamespaceRule.cs b/gendarme/rules/Gendarme.Rules.Design/AvoidSmallNamespaceRule.cs
index 138b556..76f590a 100644
--- a/gendarme/rules/Gendarme.Rules.Design/AvoidSmallNamespaceRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/AvoidSmallNamespaceRule.cs
@@ -29,6 +29,7 @@
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.Globalization;
 
 using Mono.Cecil;
 
@@ -164,7 +165,8 @@ namespace Gendarme.Rules.Design {
 				// e.g. VS.NET adds a .Properties namespace to SWF apps
 				if ((count > 0) && (count < Minimum)) {
 					NamespaceDefinition n = NamespaceDefinition.GetDefinition (ns);
-					string msg = String.Format ("Only {0} visible types are defined inside this namespace.", count);
+					string msg = String.Format (CultureInfo.CurrentCulture, 
+						"Only {0} visible types are defined inside this namespace.", count);
 					// overloads of Report cannot be used here since the 'target' has been lost in the runner
 					Runner.Report (new Defect (this, n, n, Severity.Low, Confidence.Total, msg));
 				}
diff --git a/gendarme/rules/Gendarme.Rules.Design/ConsiderAddingInterfaceRule.cs b/gendarme/rules/Gendarme.Rules.Design/ConsiderAddingInterfaceRule.cs
index 342218f..ddcb92a 100644
--- a/gendarme/rules/Gendarme.Rules.Design/ConsiderAddingInterfaceRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/ConsiderAddingInterfaceRule.cs
@@ -28,6 +28,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 using System.Linq;
 
 using Mono.Cecil;
@@ -143,7 +144,8 @@ namespace Gendarme.Rules.Design {
 					if (HasConstraints (type))
 						continue;
 					if (DoesTypeStealthilyImplementInterface (type, iface)) {
-						string msg = string.Format ("Type implements '{0}' interface but does not declare it.", iface);
+						string msg = string.Format (CultureInfo.InvariantCulture,
+							"Type implements '{0}' interface but does not declare it.", iface);
 						// use our own Defect since the *real* target (of analysis) is 'type' not 'iface'
 						Runner.Report (new Defect (this, type, type, Severity.Medium, Confidence.High, msg));
 					}
@@ -165,7 +167,7 @@ namespace Gendarme.Rules.Design {
 				return false;
 
 			//type already publicly says it implements the interface
-			if (type.Implements (iface.FullName))
+			if (type.Implements (iface.Namespace, iface.Name))
 				return false;
 
 			foreach (MethodDefinition m in mdc) {
diff --git a/gendarme/rules/Gendarme.Rules.Design/ConsiderConvertingFieldToNullableRule.cs b/gendarme/rules/Gendarme.Rules.Design/ConsiderConvertingFieldToNullableRule.cs
index 453fc23..e5ffcfc 100644
--- a/gendarme/rules/Gendarme.Rules.Design/ConsiderConvertingFieldToNullableRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/ConsiderConvertingFieldToNullableRule.cs
@@ -25,6 +25,7 @@
 // THE SOFTWARE.
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 
@@ -75,7 +76,7 @@ namespace Gendarme.Rules.Design {
 
 		static bool IsHasField (FieldReference fd, ref string prefix, ref string suffix)
 		{
-			if (fd.FieldType.FullName != "System.Boolean")
+			if (!fd.FieldType.IsNamed ("System", "Boolean"))
 				return false;
 
 			string name = fd.Name;
@@ -122,7 +123,9 @@ namespace Gendarme.Rules.Design {
 					&& HasValueTypeField(type, string.Concat(prefix,suffix)) ) {
 					//TODO: check if they are both used in the same method? does the complexity worth it?
 					string s = (Runner.VerbosityLevel > 0)
-						? String.Format ("Field '{0}' should probably be a nullable if '{1}' purpose is to inform if '{0}' has been set.", fd.Name, suffix)
+						? String.Format (CultureInfo.InvariantCulture, 
+							"Field '{0}' should probably be a nullable if '{1}' purpose is to inform if '{0}' has been set.", 
+							fd.Name, suffix)
 						: string.Empty;
 					Runner.Report (fd, Severity.Low, Confidence.Low, s);
 				}
@@ -140,7 +143,7 @@ namespace Gendarme.Rules.Design {
 		{
 			foreach (FieldDefinition field in type.Fields) {
 				if (field.FieldType.IsValueType
-					&& "System.Nullable`1" != field.FieldType.GetElementType().FullName
+					&& !field.FieldType.GetElementType ().IsNamed ("System", "Nullable`1")
 					&& 0 == string.Compare(name, field.Name, StringComparison.OrdinalIgnoreCase))
 					return field;
 			}
diff --git a/gendarme/rules/Gendarme.Rules.Design/ConsiderConvertingMethodToPropertyRule.cs b/gendarme/rules/Gendarme.Rules.Design/ConsiderConvertingMethodToPropertyRule.cs
index 9d4ebbe..01622f4 100644
--- a/gendarme/rules/Gendarme.Rules.Design/ConsiderConvertingMethodToPropertyRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/ConsiderConvertingMethodToPropertyRule.cs
@@ -90,9 +90,9 @@ namespace Gendarme.Rules.Design {
 		string ReportAssociatedSetter (MethodDefinition getter)
 		{
 			string name = "Set" + getter.Name.Substring (3);
-			parameter [0] = getter.ReturnType.FullName;
+			parameter [0] = getter.ReturnType.GetFullName ();
 			MethodDefinition setter = getter.DeclaringType.GetMethod (name, Void, parameter);
-			return setter == null ? String.Empty : setter.ToString ();
+			return setter == null ? String.Empty : setter.GetFullName ();
 		}
 
 		public RuleResult CheckMethod (MethodDefinition method)
@@ -130,7 +130,7 @@ namespace Gendarme.Rules.Design {
 			bool get = name.StartsWith ("get", StringComparison.OrdinalIgnoreCase);
 			bool isp = name.StartsWith ("is", StringComparison.OrdinalIgnoreCase);
 			bool has = name.StartsWith ("has", StringComparison.OrdinalIgnoreCase);
-			if ((get || isp || has) && (method.Parameters.Count == 0) && (return_type.FullName != Void)) {
+			if ((get || isp || has) && !method.HasParameters && !return_type.IsNamed ("System", "Void")) {
 				// if it's a getter then look for a setter (to complete the report)
 				string msg = get ? ReportAssociatedSetter (method) : String.Empty;
 				Runner.Report (method, Severity.Low, Confidence.Normal, msg);
diff --git a/gendarme/rules/Gendarme.Rules.Design/ConsiderUsingStaticTypeRule.cs b/gendarme/rules/Gendarme.Rules.Design/ConsiderUsingStaticTypeRule.cs
index d6a5691..d024c20 100644
--- a/gendarme/rules/Gendarme.Rules.Design/ConsiderUsingStaticTypeRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/ConsiderUsingStaticTypeRule.cs
@@ -4,7 +4,7 @@
 // Authors:
 //	Sebastien Pouliot <sebastien at ximian.com>
 //
-// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2008, 2011 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -37,8 +37,8 @@ namespace Gendarme.Rules.Design {
 
 	/// <summary>
 	/// This rule checks for types that contain only static members and, if the assembly
-	/// targets the CLR version 2.0 or later, suggests that the type be made <c>static</c>.
-	/// The rule will ignore assemblies targeting earlier versions of the CLR.
+	/// targets the CLR version 2.0 or later, suggests that the type be made <c>static</c>
+	/// or, for earlier versions, that the type be made <c>sealed</c>.
 	/// </summary>
 	/// <example>
 	/// Bad example:
@@ -51,7 +51,7 @@ namespace Gendarme.Rules.Design {
 	/// </code>
 	/// </example>
 	/// <example>
-	/// Good example:
+	/// Good example (targetting CLR 2.0 and later):
 	/// <code>
 	/// public static class Class {
 	///	public static void Method ()
@@ -60,22 +60,22 @@ namespace Gendarme.Rules.Design {
 	/// }
 	/// </code>
 	/// </example>
+	/// <example>
+	/// Good example (targetting CLR 1.x):
+	/// <code>
+	/// public sealed class Class {
+	///	public static void Method ()
+	///	{
+	///	}
+	/// }
+	/// </code>
+	/// </example>
 
 	[Problem ("This type contains only static fields and methods and should be static.")]
-	[Solution ("Change this type into a static type to gain clarity and better error reporting.")]
+	[Solution ("Change this type into a static (or sealed for 1.x) type gain clarity and better error reporting.")]
+	[FxCopCompatibility ("Microsoft.Design", "CA1052:StaticHolderTypesShouldBeSealed")]
 	public class ConsiderUsingStaticTypeRule : Rule, ITypeRule {
 
-		public override void Initialize (IRunner runner)
-		{
-			base.Initialize (runner);
-
-			// Static type exists only since 2.0 so there's no point to execute this
-			// rule on every type if the assembly target runtime is earlier than 2.0
-			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				Active = (e.CurrentModule.Runtime >= TargetRuntime.Net_2_0);
-			};
-		}
-
 		static bool IsAllStatic (TypeDefinition type)
 		{
 			if (type.HasMethods) {
@@ -99,31 +99,15 @@ namespace Gendarme.Rules.Design {
 			return true;
 		}
 
-		static int GetMethodCount (TypeDefinition type)
-		{
-			if (!type.HasMethods)
-				return 0;
-
-			int methods = 0;
-
-			foreach (var method in type.Methods) {
-				if (!method.IsConstructor)
-					methods++;
-			}
-
-			return methods;
-		}
-
 		public RuleResult CheckType (TypeDefinition type)
 		{
 			// rule applies only if the type isn't: an enum, an interface, a struct, a delegate or compiler generated
-			if (type.IsEnum || type.IsInterface || type.IsValueType || !type.HasFields && GetMethodCount (type) == 0
-				|| type.IsDelegate () || type.IsGeneratedCode () 
-				|| type.BaseType != null && type.BaseType.FullName != "System.Object")
+			if (type.IsEnum || type.IsInterface || type.IsValueType || type.IsDelegate () || type.IsGeneratedCode () 
+				|| type.BaseType != null && !type.BaseType.IsNamed ("System", "Object"))
 				return RuleResult.DoesNotApply;
 			
-			// success if the type is already static
-			if (type.IsStatic ())
+			// success if the type is already static or, before 2.0, is it's sealed
+			if ((type.Module.Runtime >= TargetRuntime.Net_2_0) ? type.IsStatic () : type.IsSealed)
 				return RuleResult.Success;
 			
 			if (IsAllStatic (type)) {
diff --git a/gendarme/rules/Gendarme.Rules.Design/DeclareEventHandlersCorrectlyRule.cs b/gendarme/rules/Gendarme.Rules.Design/DeclareEventHandlersCorrectlyRule.cs
index 82386a2..d6cf62b 100644
--- a/gendarme/rules/Gendarme.Rules.Design/DeclareEventHandlersCorrectlyRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/DeclareEventHandlersCorrectlyRule.cs
@@ -28,6 +28,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 using Gendarme.Framework;
 using Gendarme.Framework.Rocks;
 using Gendarme.Framework.Helpers;
@@ -85,11 +86,12 @@ namespace Gendarme.Rules.Design {
 
 		private bool CheckReturnVoid (IMetadataTokenProvider eventType, IMethodSignature invoke)
 		{
-			string full_name = invoke.ReturnType.FullName;
-			if (String.Compare (full_name, "System.Void") == 0)
+			TypeReference rtype = invoke.ReturnType;
+			if (rtype.IsNamed ("System", "Void"))
 				return true;
 
-			string msg = String.Format ("The delegate should return void, not {0}", full_name);
+			string msg = String.Format (CultureInfo.InvariantCulture, 
+				"The delegate should return void, not {0}", rtype.GetFullName ());
 			Runner.Report (eventType, Severity.Medium, Confidence.High, msg);
 			return false;
 		}
@@ -112,14 +114,16 @@ namespace Gendarme.Rules.Design {
 			IList<ParameterDefinition> pdc = invoke.Parameters;
 			int count = pdc.Count;
 			if (count >= 1) {
-				string type_name = pdc [0].ParameterType.FullName;
-				if (String.Compare (type_name, "System.Object") != 0) {
-					Runner.Report (eventType, Severity.Medium, Confidence.High, String.Format ("The first parameter should have an object, not {0}", type_name));
+				TypeReference ptype = pdc [0].ParameterType;
+				if (!ptype.IsNamed ("System", "Object")) {
+					string msg = String.Format (CultureInfo.InvariantCulture, 
+						"The first parameter should have an object, not {0}", ptype.GetFullName ());
+					Runner.Report (eventType, Severity.Medium, Confidence.High, msg);
 					ok = false;
 				}
 			}
 			if (count >= 2) {
-				if (!pdc [1].ParameterType.Inherits ("System.EventArgs")) {
+				if (!pdc [1].ParameterType.Inherits ("System", "EventArgs")) {
 					Runner.Report (eventType, Severity.Medium, Confidence.High, "The second parameter should be a subclass of System.EventArgs");
 					ok = false;
 				}
@@ -129,10 +133,12 @@ namespace Gendarme.Rules.Design {
 
 		private bool CheckParameterName (IMetadataTokenProvider eventType, ParameterReference invokeParameter, string expectedName)
 		{
-			if (String.Compare (invokeParameter.Name, expectedName) == 0)
+			if (invokeParameter.Name == expectedName)
 				return true;
 
-			Runner.Report (eventType, Severity.Low, Confidence.High, String.Format ("The expected name is {0}, not {1}", expectedName, invokeParameter.Name));
+			string msg = String.Format (CultureInfo.InvariantCulture, "The expected name is {0}, not {1}", 
+				expectedName, invokeParameter.Name);
+			Runner.Report (eventType, Severity.Low, Confidence.High, msg);
 			return false;
 		}
 		
@@ -189,9 +195,9 @@ namespace Gendarme.Rules.Design {
 			return valid;
 		}
 
-		private bool CheckGenericDelegate (MemberReference type)
+		private bool CheckGenericDelegate (TypeReference type)
 		{
-			if (type.FullName == "System.EventHandler`1")
+			if (type.IsNamed ("System", "EventHandler`1"))
 				return true;
 
 			Runner.Report (type, Severity.Medium, Confidence.High, "Generic delegates should use EventHandler<TEventArgs>");
diff --git a/gendarme/rules/Gendarme.Rules.Design/DisposableTypesShouldHaveFinalizerRule.cs b/gendarme/rules/Gendarme.Rules.Design/DisposableTypesShouldHaveFinalizerRule.cs
index 56133c9..dff2b48 100644
--- a/gendarme/rules/Gendarme.Rules.Design/DisposableTypesShouldHaveFinalizerRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/DisposableTypesShouldHaveFinalizerRule.cs
@@ -75,7 +75,7 @@ namespace Gendarme.Rules.Design {
 				return RuleResult.DoesNotApply;
 
 			// rule onyly applies to type that implements IDisposable
-			if (!type.Implements ("System.IDisposable"))
+			if (!type.Implements ("System", "IDisposable"))
 				return RuleResult.DoesNotApply;
 
 			// no problem is a finalizer is found
diff --git a/gendarme/rules/Gendarme.Rules.Design/DoNotDeclareSettersOnCollectionPropertiesRule.cs b/gendarme/rules/Gendarme.Rules.Design/DoNotDeclareSettersOnCollectionPropertiesRule.cs
new file mode 100644
index 0000000..37c7b8c
--- /dev/null
+++ b/gendarme/rules/Gendarme.Rules.Design/DoNotDeclareSettersOnCollectionPropertiesRule.cs
@@ -0,0 +1,124 @@
+// 
+// Gendarme.Rules.Design.DoNotDeclareSettersOnCollectionPropertiesRule
+//
+// Authors:
+//	Sebastien Pouliot <sebastien at ximian.com>
+//
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using Mono.Cecil;
+
+using Gendarme.Framework;
+using Gendarme.Framework.Rocks;
+
+namespace Gendarme.Rules.Design {
+
+	/// <summary>
+	/// The rule detect <c>System.Collections.ICollection</c> and 
+	/// <c>System.Collections.Generic.ICollection<T></c> properties that declare a visible setter.
+	/// There is rarely a need to be able to replace the collection (e.g. most collections provide a <c>Clear</c>
+	/// method) and having a getter only does not prevent the consumer from adding and removing items in the collection.
+	/// Also read-only properties have special support for binary and XML serialization, making your code more useful.
+	/// A special exception is made for <c>System.Security.PermissionSet</c> and types that derives from it.
+	/// </summary>
+	/// <example>
+	/// Bad example:
+	/// <code>
+	/// public class Holder {
+	///	public string Name { get; set; }
+	///	public ICollection<string> List { get; set; }
+	/// }
+	/// 
+	/// public static Holder Copy (Holder h)
+	/// {
+	///	Holder copy = new Holder ();
+	///	copy.Name = h.Name;
+	///	// bad, same list would be shared between instances
+	///	copy.List = h.List;
+	///	copy.List.AddRange (h.List);
+	///	return copy;
+	/// }
+	/// </code>
+	/// </example>
+	/// <example>
+	/// Good example:
+	/// <code>
+	/// public class Holder {
+	///	List<string> list;
+	///	
+	///	public Holder ()
+	///	{
+	///		list = new List<string> ();
+	///	}
+	///	
+	///	public string Name { get; set; }
+	///	
+	///	public ICollection<string> List { 
+	///		get { return list; }
+	///	}
+	/// }
+	/// 
+	/// public static Holder Copy (Holder h)
+	/// {
+	///	Holder copy = new Holder ();
+	///	copy.Name = h.Name;
+	///	copy.List.AddRange (h.List);
+	///	return copy;
+	/// }
+	/// </code>
+	/// </example>
+	[Problem ("A visible setter is declared for an ICollection (or derived) property")]
+	[Solution ("Replace the setter with a method or decrease the setter visibility")]
+	[FxCopCompatibility ("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+	public class DoNotDeclareSettersOnCollectionPropertiesRule : Rule, ITypeRule {
+
+		static bool IsICollection (TypeReference type)
+		{
+			if (type.Implements ("System.Collections", "ICollection"))
+				return true;
+
+			return type.Implements ("System.Collections.Generic", "ICollection`1");
+		}
+
+		static bool IsSpecialCase (TypeReference type)
+		{
+			return type.Inherits ("System.Security", "PermissionSet");
+		}
+
+		public RuleResult CheckType (TypeDefinition type)
+		{
+			if (!type.HasProperties || !type.IsVisible ())
+				return RuleResult.DoesNotApply;
+
+			bool is_interface = type.IsInterface;
+			foreach (PropertyDefinition pd in type.Properties) {
+				MethodDefinition setter = pd.SetMethod;
+				if ((setter == null) || (!is_interface && !setter.IsVisible ()))
+					continue;
+
+				TypeReference ptype = pd.PropertyType;
+				if (IsICollection (ptype) && !IsSpecialCase (ptype))
+					Runner.Report (setter, Severity.Medium, Confidence.High);
+			}
+			return Runner.CurrentRuleResult;
+		}
+	}
+}
diff --git a/gendarme/rules/Gendarme.Rules.Design/EnsureSymmetryForOverloadedOperatorsRule.cs b/gendarme/rules/Gendarme.Rules.Design/EnsureSymmetryForOverloadedOperatorsRule.cs
index 7f45898..33d8fce 100644
--- a/gendarme/rules/Gendarme.Rules.Design/EnsureSymmetryForOverloadedOperatorsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/EnsureSymmetryForOverloadedOperatorsRule.cs
@@ -28,6 +28,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 using Mono.Cecil;
 
 using Gendarme.Framework;
@@ -124,7 +125,7 @@ namespace Gendarme.Rules.Design {
 					return; //both are defined
 			}
 
-			string s = string.Format (Message, pair.Key.Name, pair.Value.Name);
+			string s = string.Format (CultureInfo.InvariantCulture, Message, pair.Key.Name, pair.Value.Name);
 			Runner.Report (op, severity, Confidence.Total, s);
 		}
 	}
diff --git a/gendarme/rules/Gendarme.Rules.Design/EnumeratorsShouldBeStronglyTypedRule.cs b/gendarme/rules/Gendarme.Rules.Design/EnumeratorsShouldBeStronglyTypedRule.cs
index 815b329..a3bc8e4 100644
--- a/gendarme/rules/Gendarme.Rules.Design/EnumeratorsShouldBeStronglyTypedRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/EnumeratorsShouldBeStronglyTypedRule.cs
@@ -78,29 +78,40 @@ namespace Gendarme.Rules.Design {
 	[FxCopCompatibility ("Microsoft.Design", "CA1038:EnumeratorsShouldBeStronglyTyped")]
 	public class EnumeratorsShouldBeStronglyTypedRule : StronglyTypedRule, ITypeRule {
 
+		private MethodSignature [] Empty = { };
+		private static string [] Current = { "Current" };
+
 		protected override MethodSignature [] GetMethods ()
 		{
-			return new MethodSignature [] { };
+			return Empty;
 		}
 
 		protected override string [] GetProperties ()
 		{
-			return new string [] { "Current" };
+			return Current;
 		}
 
 		protected override string InterfaceName {
-			get { return "System.Collections.IEnumerator"; }
+			get { return "IEnumerator"; }
+		}
+
+		protected override string InterfaceNamespace {
+			get { return "System.Collections"; }
 		}
 
 		override public RuleResult CheckType (TypeDefinition type)
 		{
 			TypeReference baseType = type;
 			while (baseType != null) {
-				string name = baseType.FullName;
-				if (name == "System.Collections.CollectionBase" ||
-					name == "System.Collections.DictionaryBase" ||
-					name == "System.Collections.ReadOnlyCollectionBase")
-					return RuleResult.DoesNotApply;
+				if (baseType.Namespace == "System.Collections") {
+					switch (baseType.Name) {
+					case "CollectionBase":
+					case "DictionaryBase":
+					case "ReadOnlyCollectionBase":
+						return RuleResult.DoesNotApply;
+					}
+				}
+
 				TypeDefinition td = baseType.Resolve ();
 				if (td != null)
 					baseType = td.BaseType;
diff --git a/gendarme/rules/Gendarme.Rules.Design/EnumsShouldUseInt32Rule.cs b/gendarme/rules/Gendarme.Rules.Design/EnumsShouldUseInt32Rule.cs
index 13460c2..3d2da47 100644
--- a/gendarme/rules/Gendarme.Rules.Design/EnumsShouldUseInt32Rule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/EnumsShouldUseInt32Rule.cs
@@ -25,6 +25,7 @@
 // THE SOFTWARE.
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 
@@ -89,33 +90,36 @@ namespace Gendarme.Rules.Design {
 
 			// rule applies!
 
-			string value_type = null;
+			TypeReference ftype = null;
 
 			foreach (FieldDefinition field in type.Fields) {
 				// we looking for the special value__
 				if (!field.IsStatic) {
-					value_type = field.FieldType.FullName;
+					ftype = field.FieldType;
 					break;
 				}
 			}
 
-			Severity severity;
-			switch (value_type) {
-			case "System.Int32":
-				return RuleResult.Success;
-			// some are bad choice (when possible) but usable by all CLS compliant languages
-			case "System.Byte":
-			case "System.Int16":
-			case "System.Int64":
+			Severity severity = Severity.Critical;
+			if ((ftype != null) && (ftype.Namespace == "System")) {
+				switch (ftype.Name) {
+				case "Int32":
+					return RuleResult.Success;
+				// some are bad choice (when possible) but usable by all CLS compliant languages
+				case "Byte":
+				case "Int16":
+				case "Int64":
 				severity = Severity.High;
-				break;
-			// while others are not usable in non-CLS compliant languages
-			default: // System.SByte, System.UInt16, System.UInt32, System.UInt64
-				severity = Severity.Critical;
-				break;
+					break;
+				// while others are not usable in non-CLS compliant languages
+				default: // System.SByte, System.UInt16, System.UInt32, System.UInt64
+					severity = Severity.Critical;
+					break;
+				}
 			}
 
-			string text = String.Format ("Enums should use System.Int32 instead of '{0}'.", value_type);
+			string text = String.Format (CultureInfo.InvariantCulture, 
+				"Enums should use System.Int32 instead of '{0}'.", ftype.GetFullName ());
 			Runner.Report (type, severity, Confidence.Total, text);
 			return RuleResult.Failure;
 		}
diff --git a/gendarme/rules/Gendarme.Rules.Design/Gendarme.Rules.Design.csproj b/gendarme/rules/Gendarme.Rules.Design/Gendarme.Rules.Design.csproj
index c9f8ed4..9f6ad7c 100755
--- a/gendarme/rules/Gendarme.Rules.Design/Gendarme.Rules.Design.csproj
+++ b/gendarme/rules/Gendarme.Rules.Design/Gendarme.Rules.Design.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Gendarme.Rules.Design</RootNamespace>
     <AssemblyName>Gendarme.Rules.Design</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -24,6 +44,7 @@
     <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Design.xml</DocumentationFile>
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -35,6 +56,7 @@
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
     <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Design.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -90,8 +112,6 @@
     <Compile Include="ProvideTryParseAlternativeRule.cs" />
     <Compile Include="StronglyTypedRule.cs" />
     <Compile Include="TypesShouldBeInsideNamespacesRule.cs" />
-    <Compile Include="TypesWithDisposableFieldsShouldBeDisposableRule.cs" />
-    <Compile Include="TypesWithNativeFieldsShouldBeDisposableRule.cs" />
     <Compile Include="UseCorrectDisposeSignaturesRule.cs" />
     <Compile Include="UseFlagsAttributeRule.cs" />
     <Compile Include="UsingCloneWithoutImplementingICloneableRule.cs" />
@@ -107,6 +127,23 @@
       <Name>Gendarme.Framework</Name>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.Design/ImplementEqualsAndGetHashCodeInPairRule.cs b/gendarme/rules/Gendarme.Rules.Design/ImplementEqualsAndGetHashCodeInPairRule.cs
index 14e555f..c1e01c5 100644
--- a/gendarme/rules/Gendarme.Rules.Design/ImplementEqualsAndGetHashCodeInPairRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/ImplementEqualsAndGetHashCodeInPairRule.cs
@@ -27,6 +27,7 @@
 // THE SOFTWARE.
 				
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 
@@ -99,13 +100,13 @@ namespace Gendarme.Rules.Design {
 
 			// if we have Equals but no GetHashCode method
 			if (equals && !getHashCode) {
-				string text = String.Format (Message, MethodSignatures.Equals, MethodSignatures.GetHashCode);
+				string text = String.Format (CultureInfo.InvariantCulture, Message, MethodSignatures.Equals, MethodSignatures.GetHashCode);
 				Runner.Report (type, Severity.Critical, Confidence.High, text);
 			}
 
 			// if we have GetHashCode but no Equals method
 			if (!equals && getHashCode) {
-				string text = String.Format (Message, MethodSignatures.GetHashCode, MethodSignatures.Equals);
+				string text = String.Format (CultureInfo.InvariantCulture, Message, MethodSignatures.GetHashCode, MethodSignatures.Equals);
 				Runner.Report (type, Severity.Medium, Confidence.High, text);
 			}
 
diff --git a/gendarme/rules/Gendarme.Rules.Design/ImplementIComparableCorreclyRule.cs b/gendarme/rules/Gendarme.Rules.Design/ImplementIComparableCorreclyRule.cs
index a214f80..11c45aa 100644
--- a/gendarme/rules/Gendarme.Rules.Design/ImplementIComparableCorreclyRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/ImplementIComparableCorreclyRule.cs
@@ -110,8 +110,10 @@ namespace Gendarme.Rules.Design {
 			// Note: we do not use Implements rock because we do not want a recursive answer
 			bool icomparable = false;
 			foreach (TypeReference iface in type.Interfaces) {
+				if (iface.Namespace != "System")
+					continue;
 				// catch both System.IComparable and System.IComparable`1<X>
-				if (iface.FullName.StartsWith ("System.IComparable", StringComparison.Ordinal)) {
+				if (iface.Name.StartsWith ("IComparable", StringComparison.Ordinal)) {
 					icomparable = true;
 					break;
 				}
diff --git a/gendarme/rules/Gendarme.Rules.Design/ListsAreStronglyTypedRule.cs b/gendarme/rules/Gendarme.Rules.Design/ListsAreStronglyTypedRule.cs
index f669c6a..9595df1 100644
--- a/gendarme/rules/Gendarme.Rules.Design/ListsAreStronglyTypedRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/ListsAreStronglyTypedRule.cs
@@ -74,8 +74,9 @@ namespace Gendarme.Rules.Design {
 	[Problem ("Types that implement IList should have strongly typed versions of IList.Item, IList.Add, IList.Contains, IList.IndexOf, IList.Insert and IList.Remove")]
 	[Solution ("Explicitly implement IList members and provide strongly typed alternatives to them.")]
 	[FxCopCompatibility ("Microsoft.Design", "CA1039:ListsAreStronglyTyped")]
-	public class ListsAreStronglyTypedRule : StronglyTypedRule, ITypeRule
-	{
+	public class ListsAreStronglyTypedRule : StronglyTypedRule, ITypeRule {
+
+		private static string [] Item = new string [] { "Item" };
 
 		private static string[] SystemObject = new string[] {"System.Object"};
 		private static MethodSignature Add = new MethodSignature ("Add", "System.Int32", SystemObject);
@@ -83,25 +84,31 @@ namespace Gendarme.Rules.Design {
 		private static MethodSignature IndexOf = new MethodSignature ("IndexOf", "System.Int32", SystemObject);
 		private static MethodSignature Insert = new MethodSignature ("Insert", "System.Void", new string [] { "System.Int32", "System.Object" });
 		private static MethodSignature Remove = new MethodSignature ("Remove", "System.Void", SystemObject);
-		
+
+		private static MethodSignature [] Signatures = {
+			Add,
+			Contains,
+			IndexOf,
+			Insert,
+			Remove,
+		};
+
 		protected override MethodSignature [] GetMethods ()
 		{
-			return new MethodSignature[] {
-				Add,
-				Contains,
-				IndexOf,
-				Insert,
-				Remove,
-			};
+			return Signatures;
 		}
 
 		protected override string [] GetProperties ()
 		{
-			return new string [] { "Item" };
+			return Item;
 		}
 
 		protected override string InterfaceName {
-			get { return "System.Collections.IList"; }
+			get { return "IList"; }
+		}
+
+		protected override string InterfaceNamespace {
+			get { return "System.Collections"; }
 		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Design/Makefile.am b/gendarme/rules/Gendarme.Rules.Design/Makefile.am
index d6c861d..e9545b3 100644
--- a/gendarme/rules/Gendarme.Rules.Design/Makefile.am
+++ b/gendarme/rules/Gendarme.Rules.Design/Makefile.am
@@ -17,6 +17,7 @@ rules_sources =  \
 	DeclareEventHandlersCorrectlyRule.cs \
 	DefineAZeroValueRule.cs \
 	DisposableTypesShouldHaveFinalizerRule.cs \
+	DoNotDeclareSettersOnCollectionPropertiesRule.cs \
 	DoNotDeclareVirtualMethodsInSealedTypeRule.cs \
 	DontDeclareProtectedFieldsInSealedClassRule.cs \
 	EnsureSymmetryForOverloadedOperatorsRule.cs \
@@ -46,8 +47,6 @@ rules_sources =  \
 	StronglyTypedRule.cs \
 	StronglyTypeICollectionMembersRule.cs \
 	TypesShouldBeInsideNamespacesRule.cs \
-	TypesWithDisposableFieldsShouldBeDisposableRule.cs \
-	TypesWithNativeFieldsShouldBeDisposableRule.cs \
 	UseFlagsAttributeRule.cs \
 	UseCorrectDisposeSignaturesRule.cs \
 	UsingCloneWithoutImplementingICloneableRule.cs
@@ -70,6 +69,7 @@ tests_sources = \
 	ConsiderUsingStaticTypeTest.cs \
 	DeclareEventHandlersCorrectlyTest.cs \
 	DisposableTypesShouldHaveFinalizerTest.cs \
+	DoNotDeclareSettersOnCollectionPropertiesTest.cs \
 	DoNotDeclareVirtualMethodsInSealedTypeTest.cs \
 	DontDeclareProtectedFieldsInSealedClassTest.cs \
 	EnsureSymmetryForOverloadedOperatorsTest.cs \
@@ -98,8 +98,6 @@ tests_sources = \
 	ProvideAlternativeNamesForOperatorOverloadsTest.cs \
 	StronglyTypeICollectionMembersTest.cs \
 	TypesShouldBeInsideNamespacesTest.cs \
-	TypesWithDisposableFieldsShouldBeDisposableTest.cs \
-	TypesWithNativeFieldsShouldBeDisposableTest.cs \
 	UseFlagsAttributeTest.cs \
 	UseCorrectDisposeSignaturesTest.cs \
 	UsingCloneWithoutImplementingICloneableTest.cs
diff --git a/gendarme/rules/Gendarme.Rules.Design/Makefile.in b/gendarme/rules/Gendarme.Rules.Design/Makefile.in
index 95ae583..598d350 100644
--- a/gendarme/rules/Gendarme.Rules.Design/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Design/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(rules_categorydir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
-rules_categorySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(rules_category_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,20 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(rules_documentation_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -130,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -267,6 +343,7 @@ rules_sources = \
 	DeclareEventHandlersCorrectlyRule.cs \
 	DefineAZeroValueRule.cs \
 	DisposableTypesShouldHaveFinalizerRule.cs \
+	DoNotDeclareSettersOnCollectionPropertiesRule.cs \
 	DoNotDeclareVirtualMethodsInSealedTypeRule.cs \
 	DontDeclareProtectedFieldsInSealedClassRule.cs \
 	EnsureSymmetryForOverloadedOperatorsRule.cs \
@@ -296,8 +373,6 @@ rules_sources = \
 	StronglyTypedRule.cs \
 	StronglyTypeICollectionMembersRule.cs \
 	TypesShouldBeInsideNamespacesRule.cs \
-	TypesWithDisposableFieldsShouldBeDisposableRule.cs \
-	TypesWithNativeFieldsShouldBeDisposableRule.cs \
 	UseFlagsAttributeRule.cs \
 	UseCorrectDisposeSignaturesRule.cs \
 	UsingCloneWithoutImplementingICloneableRule.cs
@@ -318,6 +393,7 @@ tests_sources = \
 	ConsiderUsingStaticTypeTest.cs \
 	DeclareEventHandlersCorrectlyTest.cs \
 	DisposableTypesShouldHaveFinalizerTest.cs \
+	DoNotDeclareSettersOnCollectionPropertiesTest.cs \
 	DoNotDeclareVirtualMethodsInSealedTypeTest.cs \
 	DontDeclareProtectedFieldsInSealedClassTest.cs \
 	EnsureSymmetryForOverloadedOperatorsTest.cs \
@@ -346,8 +422,6 @@ tests_sources = \
 	ProvideAlternativeNamesForOperatorOverloadsTest.cs \
 	StronglyTypeICollectionMembersTest.cs \
 	TypesShouldBeInsideNamespacesTest.cs \
-	TypesWithDisposableFieldsShouldBeDisposableTest.cs \
-	TypesWithNativeFieldsShouldBeDisposableTest.cs \
 	UseFlagsAttributeTest.cs \
 	UseCorrectDisposeSignaturesTest.cs \
 	UsingCloneWithoutImplementingICloneableTest.cs
@@ -359,14 +433,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Design/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Design/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Design/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Design/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -376,6 +450,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../common.make $(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -384,42 +459,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-rules_categorySCRIPTS: $(rules_category_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_categorydir)" || $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)"
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_categorydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(rules_categorySCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	    $(rules_categorySCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rules_categorydir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rules_categorydir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-rules_categorySCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	done
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(rules_categorydir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -428,7 +524,7 @@ uninstall-rules_documentationDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -445,7 +541,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -453,7 +549,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -479,16 +575,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -496,14 +592,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -515,7 +611,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -524,29 +620,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -567,29 +668,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -612,10 +725,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -623,6 +741,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -642,6 +761,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -651,18 +772,28 @@ install-data-am: install-rules_categorySCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -684,8 +815,8 @@ ps-am:
 uninstall-am: uninstall-rules_categorySCRIPTS \
 	uninstall-rules_documentationDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -705,11 +836,11 @@ uninstall-am: uninstall-rules_categorySCRIPTS \
 
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -718,7 +849,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
@@ -738,6 +869,7 @@ $(rules_doc_source):
 
 clean-local:
 	rm -fr doc
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Design/MarkAssemblyWithAttributeRule.cs b/gendarme/rules/Gendarme.Rules.Design/MarkAssemblyWithAttributeRule.cs
index 031667a..f9dc4af 100644
--- a/gendarme/rules/Gendarme.Rules.Design/MarkAssemblyWithAttributeRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/MarkAssemblyWithAttributeRule.cs
@@ -38,6 +38,7 @@ namespace Gendarme.Rules.Design {
 
 	abstract public class MarkAssemblyWithAttributeRule : Rule, IAssemblyRule {
 
+		abstract protected string AttributeNamespace { get; }
 		abstract protected string AttributeName { get; }
 
 		abstract protected Severity Severity { get; }
@@ -47,7 +48,7 @@ namespace Gendarme.Rules.Design {
 			if (!assembly.HasCustomAttributes)
 				return RuleResult.DoesNotApply;
 
-			if (assembly.HasAttribute (AttributeName))
+			if (assembly.HasAttribute (AttributeNamespace, AttributeName))
 				return RuleResult.Success;
 
 			Runner.Report (assembly, Severity, Confidence.Total);
diff --git a/gendarme/rules/Gendarme.Rules.Design/MarkAssemblyWithCLSCompliantRule.cs b/gendarme/rules/Gendarme.Rules.Design/MarkAssemblyWithCLSCompliantRule.cs
index a2594c8..c686d4b 100644
--- a/gendarme/rules/Gendarme.Rules.Design/MarkAssemblyWithCLSCompliantRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/MarkAssemblyWithCLSCompliantRule.cs
@@ -56,8 +56,12 @@ namespace Gendarme.Rules.Design {
 	[FxCopCompatibility ("Microsoft.Design", "CA1014:MarkAssembliesWithClsCompliant")]
 	public class MarkAssemblyWithCLSCompliantRule : MarkAssemblyWithAttributeRule {
 
+		protected override string AttributeNamespace {
+			get { return "System"; }
+		}
+
 		protected override string AttributeName {
-			get { return "System.CLSCompliantAttribute"; }
+			get { return "CLSCompliantAttribute"; }
 		}
 
 		protected override Severity Severity {
diff --git a/gendarme/rules/Gendarme.Rules.Design/MarkAssemblyWithComVisibleRule.cs b/gendarme/rules/Gendarme.Rules.Design/MarkAssemblyWithComVisibleRule.cs
index ca2dcc4..59dfac8 100644
--- a/gendarme/rules/Gendarme.Rules.Design/MarkAssemblyWithComVisibleRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/MarkAssemblyWithComVisibleRule.cs
@@ -55,8 +55,12 @@ namespace Gendarme.Rules.Design {
 	[FxCopCompatibility ("Microsoft.Design", "CA1017:MarkAssembliesWithComVisible")]
 	public class MarkAssemblyWithComVisibleRule : MarkAssemblyWithAttributeRule {
 
+		protected override string AttributeNamespace	{
+			get { return "System.Runtime.InteropServices"; }
+		}
+
 		protected override string AttributeName	{
-			get { return "System.Runtime.InteropServices.ComVisibleAttribute"; }
+			get { return "ComVisibleAttribute"; }
 		}
 
 		protected override Severity Severity {
diff --git a/gendarme/rules/Gendarme.Rules.Design/MissingAttributeUsageOnCustomAttributeRule.cs b/gendarme/rules/Gendarme.Rules.Design/MissingAttributeUsageOnCustomAttributeRule.cs
index addc0d5..e0e5135 100644
--- a/gendarme/rules/Gendarme.Rules.Design/MissingAttributeUsageOnCustomAttributeRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/MissingAttributeUsageOnCustomAttributeRule.cs
@@ -66,15 +66,13 @@ namespace Gendarme.Rules.Design {
 	[FxCopCompatibility ("Microsoft.Design", "CA1018:MarkAttributesWithAttributeUsage")]
 	public class MissingAttributeUsageOnCustomAttributeRule : Rule, ITypeRule {
 
-		private const string AttributeUsageAttribute = "System.AttributeUsageAttribute";
-
 		public RuleResult CheckType (TypeDefinition type)
 		{
 			// rule applies only to attributes
 			if (!type.IsAttribute ())
 				return RuleResult.DoesNotApply;
 
-			if (type.HasAttribute (AttributeUsageAttribute)) // it's ok
+			if (type.HasAttribute ("System", "AttributeUsageAttribute")) // it's ok
 				return RuleResult.Success;
 
 			Runner.Report (type, Severity.High, Confidence.Total);
diff --git a/gendarme/rules/Gendarme.Rules.Design/PreferIntegerOrStringForIndexersRule.cs b/gendarme/rules/Gendarme.Rules.Design/PreferIntegerOrStringForIndexersRule.cs
index ff8f07b..8da1533 100644
--- a/gendarme/rules/Gendarme.Rules.Design/PreferIntegerOrStringForIndexersRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/PreferIntegerOrStringForIndexersRule.cs
@@ -80,16 +80,22 @@ namespace Gendarme.Rules.Design {
 				return RuleResult.Success;
 
 			foreach (ParameterDefinition parameter in method.Parameters) {
-				switch (parameter.ParameterType.FullName) {
-				case "System.Int32":
-				case "System.Int64":
-				case "System.String":
-				case "System.Object": // tolerable in some circumstances
-					break;
-				default:
-					Runner.Report (parameter, Severity.Medium, Confidence.Total);
-					break;
+				TypeReference ptype = parameter.ParameterType;
+				bool ok = (ptype.Namespace == "System");
+				if (ok) {
+					switch (ptype.Name) {
+					case "Int32":
+					case "Int64":
+					case "String":
+					case "Object": // tolerable in some circumstances
+						break;
+					default:
+						ok = false;
+						break;
+					}
 				}
+				if (!ok)
+					Runner.Report (parameter, Severity.Medium, Confidence.Total);
 			}
 			return Runner.CurrentRuleResult;
 		}
diff --git a/gendarme/rules/Gendarme.Rules.Design/PreferUriOverStringRule.cs b/gendarme/rules/Gendarme.Rules.Design/PreferUriOverStringRule.cs
index cc15916..8143bda 100644
--- a/gendarme/rules/Gendarme.Rules.Design/PreferUriOverStringRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/PreferUriOverStringRule.cs
@@ -34,6 +34,7 @@ using Gendarme.Framework.Rocks;
 using System;
 using System.Linq;
 using System.Collections.Generic;
+using System.Globalization;
 
 namespace Gendarme.Rules.Design {
 
@@ -100,7 +101,7 @@ namespace Gendarme.Rules.Design {
 			// We assume the name is pascal- or camel- cased: to prevent false-positives (such as the urn in return),
 			// the position is only returned if the character is the first in the string, or is an uppercase letter.
 			while ((index = memberName.IndexOf (token, index, StringComparison.OrdinalIgnoreCase)) != -1) {
-				if (index == 0 || char.IsUpper (memberName [index]))
+				if (index == 0 || Char.IsUpper (memberName [index]))
 					break;
 				index += token.Length;
 			}
@@ -110,10 +111,10 @@ namespace Gendarme.Rules.Design {
 		private static bool IsUri (string memberName)
 		{
 			int index = 0;
-			while ((index = FindTokenStart (memberName, "ur", index)) != -1) {
-				if (memberName.Length < index + 2)
+			while ((index = FindTokenStart(memberName, "ur", index)) != -1){
+				if (memberName.Length <= index + 2)
 					break;
-				if (url_enders.Contains (char.ToLower (memberName [index + 2])))
+				if (url_enders.Contains(Char.ToLower(memberName[index + 2], CultureInfo.InvariantCulture)))
 					return true;
 				index += 2;
 			}
@@ -159,7 +160,7 @@ namespace Gendarme.Rules.Design {
 		{
 			// attributes are a special case where Uri cannot be used and has it's own
 			// rule to cover this: Gendarme.Rules.Correctness.AttributeStringLiteralShouldParseCorrectlyRule
-			if (method.IsConstructor && method.DeclaringType.Inherits ("System.Attribute"))
+			if (method.IsConstructor && method.DeclaringType.Inherits ("System", "Attribute"))
 				return;
 
 			var methodParams = method.Parameters;
diff --git a/gendarme/rules/Gendarme.Rules.Design/PreferXmlAbstractionsRule.cs b/gendarme/rules/Gendarme.Rules.Design/PreferXmlAbstractionsRule.cs
index 32bc46f..6ce3fdc 100644
--- a/gendarme/rules/Gendarme.Rules.Design/PreferXmlAbstractionsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/PreferXmlAbstractionsRule.cs
@@ -94,10 +94,6 @@ namespace Gendarme.Rules.Design {
 	[FxCopCompatibility ("Microsoft.Design", "CA1059:MembersShouldNotExposeCertainConcreteTypes")]
 	public class PreferXmlAbstractionsRule : Rule, IMethodRule {
 
-		const string XmlDocumentClass = "System.Xml.XmlDocument";
-		const string XPathDocumentClass = "System.Xml.XPath.XPathDocument";
-		const string XmlNodeClass = "System.Xml.XmlNode";
-
 		public override void Initialize (IRunner runner)
 		{
 			base.Initialize (runner);
@@ -119,7 +115,7 @@ namespace Gendarme.Rules.Design {
 				return RuleResult.DoesNotApply;
 
 			MethodReturnType mrt = method.MethodReturnType;
-			if (IsSpecificXmlType (mrt.ReturnType.FullName))
+			if (IsSpecificXmlType (mrt.ReturnType))
 				Runner.Report (mrt, GetSeverity (method), Confidence.High);
 
 			if (method.HasParameters) {
@@ -127,7 +123,7 @@ namespace Gendarme.Rules.Design {
 					if (parameter.IsOut)
 						continue; //out params already have their rule
 
-					if (IsSpecificXmlType (parameter.ParameterType.FullName))
+					if (IsSpecificXmlType (parameter.ParameterType))
 						Runner.Report (parameter, GetSeverity (method), Confidence.High);
 				}
 			}
@@ -135,9 +131,13 @@ namespace Gendarme.Rules.Design {
 			return Runner.CurrentRuleResult;
 		}
 
-		static bool IsSpecificXmlType (string name)
+		static bool IsSpecificXmlType (TypeReference type)
 		{
-			return name == XmlDocumentClass || name == XPathDocumentClass || name == XmlNodeClass;
+			if (type.Namespace == "System.Xml") {
+				string name = type.Name;
+				return ((name == "XmlDocument") || (name == "XmlNode"));
+			}
+			return type.IsNamed ("System.Xml.XPath", "XPathDocument");
 		}
 
 		static Severity GetSeverity (MethodDefinition method)
diff --git a/gendarme/rules/Gendarme.Rules.Design/ProvideAlternativeNamesForOperatorOverloadsRule.cs b/gendarme/rules/Gendarme.Rules.Design/ProvideAlternativeNamesForOperatorOverloadsRule.cs
index 1e1347e..e2197c5 100644
--- a/gendarme/rules/Gendarme.Rules.Design/ProvideAlternativeNamesForOperatorOverloadsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/ProvideAlternativeNamesForOperatorOverloadsRule.cs
@@ -28,6 +28,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 using Mono.Cecil;
 
 using Gendarme.Framework;
@@ -171,7 +172,8 @@ namespace Gendarme.Rules.Design {
 				}
 
 				if (!alternativeDefined) {
-					string s = String.Format ("This type implements the '{0}' operator. Some languages do not support overloaded operators so an alternative '{1}' method should be provided.",
+					string s = String.Format (CultureInfo.InvariantCulture,
+						"This type implements the '{0}' operator. Some languages do not support overloaded operators so an alternative '{1}' method should be provided.",
 						kv.Key.Name, kv.Value.Name);
 					Runner.Report (op, Severity.Medium, Confidence.High, s);
 				}
diff --git a/gendarme/rules/Gendarme.Rules.Design/StronglyTypeICollectionMembersRule.cs b/gendarme/rules/Gendarme.Rules.Design/StronglyTypeICollectionMembersRule.cs
index 637e9e8..75605a1 100644
--- a/gendarme/rules/Gendarme.Rules.Design/StronglyTypeICollectionMembersRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/StronglyTypeICollectionMembersRule.cs
@@ -72,24 +72,30 @@ namespace Gendarme.Rules.Design {
 	[Problem ("Types that implement ICollection interface should have strongly typed version of ICollection.CopyTo method")]
 	[Solution ("Explicitly implement ICollection.CopyTo and add strongly typed alternative to it")]
 	[FxCopCompatibility ("Microsoft.Design", "CA1035:ICollectionImplementationsHaveStronglyTypedMembers")]
-	public class StronglyTypeICollectionMembersRule : StronglyTypedRule, ITypeRule
-	{
+	public class StronglyTypeICollectionMembersRule : StronglyTypedRule, ITypeRule {
 
-		private static MethodSignature CopyTo = new MethodSignature("CopyTo", "System.Void",
-		                                                            new string[] {"System.Array", "System.Int32"});
+		private static string [] Empty = new string [] { };
+
+		private static MethodSignature [] CopyTo = new MethodSignature [] {
+			new MethodSignature ("CopyTo", "System.Void", new string [] { "System.Array", "System.Int32" })
+		};
 
 		protected override MethodSignature [] GetMethods ()
 		{
-			return new MethodSignature [] { CopyTo };
+			return CopyTo;
 		}
 
 		protected override string [] GetProperties ()
 		{
-			return new string [] { };
+			return Empty;
 		}
 
 		protected override string InterfaceName {
-			get { return "System.Collections.ICollection"; }
+			get { return "ICollection"; }
+		}
+
+		protected override string InterfaceNamespace {
+			get { return "System.Collections"; }
 		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Design/StronglyTypedRule.cs b/gendarme/rules/Gendarme.Rules.Design/StronglyTypedRule.cs
index f38fecc..b60feae 100644
--- a/gendarme/rules/Gendarme.Rules.Design/StronglyTypedRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/StronglyTypedRule.cs
@@ -42,12 +42,7 @@ namespace Gendarme.Rules.Design {
 		abstract protected MethodSignature [] GetMethods ();
 		abstract protected string [] GetProperties ();
 		abstract protected string InterfaceName { get; }
-
-		HashSet<string> weakTypes = new HashSet<string> {
-			"System.Object",
-			"System.Array",
-			"System.Object[]",
-		};
+		abstract protected string InterfaceNamespace { get; }
 
 		MethodSignature [] signatures;
 		string [] propertyNames;
@@ -55,7 +50,7 @@ namespace Gendarme.Rules.Design {
 
 		virtual public RuleResult CheckType (TypeDefinition type)
 		{
-			if (type.IsAbstract || type.IsGeneratedCode () || !type.Implements (InterfaceName))
+			if (type.IsAbstract || type.IsGeneratedCode () || !type.Implements (InterfaceNamespace, InterfaceName))
 				return RuleResult.DoesNotApply;
 
 			signatures = GetMethods ();
@@ -106,13 +101,26 @@ namespace Gendarme.Rules.Design {
 				ProcessProperties (baseType);
 		}
 
+		static bool IsWeak (TypeReference type)
+		{
+			if (type.Namespace != "System")
+				return false;
+			string name = type.Name;
+			return ((name == "Object") || (name == "Array") || (name == "Object[]"));
+		}
+
+		static bool IsWeak (string typeName)
+		{
+			return ((typeName == "System.Object") || (typeName == "System.Array") || (typeName == "System.Object[]"));
+		}
+
 		private void ProcessProperties (TypeDefinition baseType)
 		{
 			foreach (PropertyDefinition property in baseType.Properties) {
 				for (int i = 0; i < propertyNames.Length; i++) {
 					if (propertyNames [i] == null || propertyNames [i] != property.Name)
 						continue;
-					if (!weakTypes.Contains (property.PropertyType.FullName)) {
+					if (!IsWeak (property.PropertyType)) {
 						propertiesLeft--;
 						propertyNames [i] = null;
 					}
@@ -133,9 +141,9 @@ namespace Gendarme.Rules.Design {
 
 					bool foundStrong = true;
 					for (int j = 0; j < methodParameters.Count; j++) {
-						if (!weakTypes.Contains (signatures [i].Parameters [j]))
+						if (!IsWeak (signatures [i].Parameters [j]))
 							continue;
-						if (weakTypes.Contains (methodParameters [j].ParameterType.FullName))
+						if (IsWeak (methodParameters [j].ParameterType))
 							foundStrong = false;
 					}
 
diff --git a/gendarme/rules/Gendarme.Rules.Design/Test/AttributeArgumentsShouldHaveAccessorsTest.cs b/gendarme/rules/Gendarme.Rules.Design/Test/AttributeArgumentsShouldHaveAccessorsTest.cs
index 0640805..02c92a0 100644
--- a/gendarme/rules/Gendarme.Rules.Design/Test/AttributeArgumentsShouldHaveAccessorsTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/Test/AttributeArgumentsShouldHaveAccessorsTest.cs
@@ -196,6 +196,35 @@ namespace Test.Rules.Design {
 		}
 	}
 
+	internal abstract class FooAttribute : Attribute
+	{
+		protected FooAttribute (string foo)
+		{
+			this.Foo = foo;
+		}
+
+		public string Foo
+		{
+			get;
+			private set;
+		}
+	}
+
+	internal class FooBarAttribute : FooAttribute
+	{
+		protected FooBarAttribute (string foo, string bar) : base (foo)
+		{
+			this.Bar = bar;
+		}
+
+		public string Bar
+		{
+			get;
+			private set;
+		}
+	}
+
+
 	[TestFixture]
 	public class AttributeArgumentsShouldHaveAccessorsTest : TypeRuleTestFixture<AttributeArgumentsShouldHaveAccessorsRule> {
 
@@ -252,5 +281,11 @@ namespace Test.Rules.Design {
 		{
 			AssertRuleFailure<TwoAccessorsMissingAttribute> (2);
 		}
+
+		[Test]
+		public void TestInheritedPropertiesAttribute ()
+		{
+			AssertRuleSuccess<FooBarAttribute> ();
+		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Design/Test/ConsiderUsingStaticTypeTest.cs b/gendarme/rules/Gendarme.Rules.Design/Test/ConsiderUsingStaticTypeTest.cs
index 9e9c707..8e55722 100644
--- a/gendarme/rules/Gendarme.Rules.Design/Test/ConsiderUsingStaticTypeTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/Test/ConsiderUsingStaticTypeTest.cs
@@ -4,7 +4,7 @@
 // Authors:
 //	Sebastien Pouliot <sebastien at ximian.com>
 //
-// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2008, 2011 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -84,9 +84,9 @@ namespace Test.Rules.Design {
 		}
 
 		[Test]
-		public void SkipOnEmptyClassTest ()
+		public void EmptyClassHasDefaultPublicInstanceCtor ()
 		{
-			AssertRuleDoesNotApply<EmptyClass> ();
+			AssertRuleFailure<EmptyClass> ();
 		}
 
 		//You cannot do this class static
diff --git a/gendarme/rules/Gendarme.Rules.Design/Test/DoNotDeclareSettersOnCollectionPropertiesTest.cs b/gendarme/rules/Gendarme.Rules.Design/Test/DoNotDeclareSettersOnCollectionPropertiesTest.cs
new file mode 100644
index 0000000..4e22ddd
--- /dev/null
+++ b/gendarme/rules/Gendarme.Rules.Design/Test/DoNotDeclareSettersOnCollectionPropertiesTest.cs
@@ -0,0 +1,137 @@
+// 
+// Unit tests for DoNotDeclareSettersOnCollectionPropertiesRule
+//
+// Authors:
+//	Sebastien Pouliot <sebastien at ximian.com>
+//
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Security;
+
+using Gendarme.Rules.Design;
+
+using NUnit.Framework;
+using Test.Rules.Fixtures;
+using Test.Rules.Definitions;
+
+namespace Test.Rules.Design {
+
+	[TestFixture]
+	public class DoNotDeclareSettersOnCollectionPropertiesTest : TypeRuleTestFixture<DoNotDeclareSettersOnCollectionPropertiesRule> {
+
+		[Test]
+		public void DoesNotApply ()
+		{
+			AssertRuleDoesNotApply (SimpleTypes.Class);
+			AssertRuleDoesNotApply (SimpleTypes.Delegate);
+			AssertRuleDoesNotApply (SimpleTypes.Enum);
+			AssertRuleDoesNotApply (SimpleTypes.GeneratedType);
+			AssertRuleDoesNotApply (SimpleTypes.Interface);
+			AssertRuleDoesNotApply (SimpleTypes.Structure);
+		}
+
+		public interface IGoodInterface {
+			ICollection Collection { get; }
+			ICollection<string> GenericCollection { get; }
+		}
+
+		public class TypeImplementingGoodInterface : IGoodInterface {
+			public ICollection Collection { get; private set; }
+			public ICollection<string> GenericCollection { get; private set; }
+		}
+
+		public struct GoodStruct {
+			private ArrayList list;
+
+			public IDictionary Dictionary { get; private set; }
+			public ArrayList List { 
+				get { return list; }
+			}
+		}
+
+		[Test]
+		public void Good ()
+		{
+			AssertRuleSuccess<IGoodInterface> ();
+			AssertRuleSuccess<TypeImplementingGoodInterface> ();
+			AssertRuleSuccess<GoodStruct> ();
+		}
+
+		// interface members are not "declared" as public - but they force a type to do so!
+		public interface IBadInterface {
+			ICollection Collection { get; set; }
+			ICollection<string> GenericCollection { get; set; }
+		}
+
+		public class TypeImplementingBadInterface : IBadInterface {
+			public ICollection Collection { get; set; }
+			public ICollection<string> GenericCollection { get; set; }
+		}
+
+		public struct BadStruct {
+			public IDictionary Dictionary { private get; set; }
+			public ArrayList List { get; set; }
+		}
+
+		[Test]
+		public void Bad ()
+		{
+			AssertRuleFailure<IBadInterface> (2);
+			AssertRuleFailure<TypeImplementingBadInterface> (2);
+			AssertRuleFailure<BadStruct> (2);
+		}
+
+		public class SecurityPermissions {
+			public PermissionSet Permissions { get; set; }
+			public NamedPermissionSet NamedPermissions { get; set; }
+		}
+
+		public class Indexers {
+			int [] array;
+
+			public int this [int index] {
+				get { return array [index]; }
+				set { array [index] = value; }
+			}
+
+			public int this [int x, int y] {
+				get { return array [x]; }
+				set { array [y] = value; }
+			}
+		}
+
+		public class Arrays {
+
+			public Array Array { get; set; }
+		}
+
+		[Test]
+		public void SpecialCases ()
+		{
+			AssertRuleSuccess<SecurityPermissions> ();
+			AssertRuleSuccess<Indexers> ();
+			AssertRuleFailure<Arrays> (1);
+		}
+	}
+}
diff --git a/gendarme/rules/Gendarme.Rules.Design/Test/DoNotDeclareVirtualMethodsInSealedTypeTest.cs b/gendarme/rules/Gendarme.Rules.Design/Test/DoNotDeclareVirtualMethodsInSealedTypeTest.cs
index f495193..c5ae0ef 100644
--- a/gendarme/rules/Gendarme.Rules.Design/Test/DoNotDeclareVirtualMethodsInSealedTypeTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/Test/DoNotDeclareVirtualMethodsInSealedTypeTest.cs
@@ -4,7 +4,7 @@
 // Authors:
 //	Sebastien Pouliot  <sebastien at ximian.com>
 //
-// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2008,2011 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
@@ -25,6 +25,7 @@
 // THE SOFTWARE.
 
 using System;
+using System.Collections.Generic;
 
 using Mono.Cecil;
 using Gendarme.Rules.Design;
@@ -103,7 +104,7 @@ namespace Test.Rules.Design {
 		}
 
 		public abstract class AbstractClass {
-			public abstract string GetIt ();
+			public abstract string GetZit ();
 		}
 
 		public sealed class SealedClass : AbstractClass {
@@ -113,7 +114,7 @@ namespace Test.Rules.Design {
 				return 42;
 			}
 
-			public override string GetIt ()
+			public override string GetZit ()
 			{
 				return String.Empty;
 			}
@@ -130,5 +131,34 @@ namespace Test.Rules.Design {
 			AssertRuleDoesNotApply<AbstractClass> ();
 			AssertRuleSuccess<SealedClass> ();
 		}
+
+		// extracted from mono/mcs/class/corlib/System.Collections.Generic/EqualityComparer.cs
+		// they override 'T', not string, base methods
+		sealed class InternalStringComparer : EqualityComparer<string> {
+
+			public override int GetHashCode (string obj)
+			{
+				if (obj == null)
+					return 0;
+				return obj.GetHashCode ();
+			}
+
+			public override bool Equals (string x, string y)
+			{
+				if (x == null)
+					return y == null;
+
+				if ((object) x == (object) y)
+					return true;
+
+				return x.Equals (y);
+			}
+		}
+
+		[Test]
+		public void Generic ()
+		{
+			AssertRuleSuccess<InternalStringComparer> ();
+		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Design/Test/Makefile.in b/gendarme/rules/Gendarme.Rules.Design/Test/Makefile.in
index 1be53f2..badee8f 100644
--- a/gendarme/rules/Gendarme.Rules.Design/Test/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Design/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Design/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Design/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Design/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Design/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -298,6 +338,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -306,18 +348,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -352,6 +404,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Design/Test/PreferUriOverStringTest.cs b/gendarme/rules/Gendarme.Rules.Design/Test/PreferUriOverStringTest.cs
index ed460fd..ff975fd 100644
--- a/gendarme/rules/Gendarme.Rules.Design/Test/PreferUriOverStringTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/Test/PreferUriOverStringTest.cs
@@ -52,6 +52,11 @@ namespace Test.Rules.Design {
 			get;
 			set;
 		}
+		public string CUR
+		{
+			get; 
+			set;
+		}
 
 		public Uri GetUri ()
 		{
@@ -117,6 +122,7 @@ namespace Test.Rules.Design {
 		{
 			AssertRuleSuccess (SimpleMethods.EmptyMethod);
 			AssertRuleSuccess<GoodUris> ("GetUri");
+			AssertRuleSuccess<GoodUris>("get_CUR");
 			AssertRuleSuccess<GoodUris> ("GetNewLink");
 			AssertRuleSuccess<GoodUris> ("OverloadedMethod", new Type [] { typeof (string) });
 		}
diff --git a/gendarme/rules/Gendarme.Rules.Design/Test/Tests.Rules.Design.csproj b/gendarme/rules/Gendarme.Rules.Design/Test/Tests.Rules.Design.csproj
index cf19ae8..c59cc09 100755
--- a/gendarme/rules/Gendarme.Rules.Design/Test/Tests.Rules.Design.csproj
+++ b/gendarme/rules/Gendarme.Rules.Design/Test/Tests.Rules.Design.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Test</RootNamespace>
     <AssemblyName>Tests.Rules.Design</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -21,6 +41,8 @@
     <DefineConstants>TRACE;DEBUG;CODE_ANALYSIS</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -29,6 +51,7 @@
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
@@ -85,8 +108,6 @@
     <Compile Include="ProvideAlternativeNamesForOperatorOverloadsTest.cs" />
     <Compile Include="ProvideTryParseAlternativeTest.cs" />
     <Compile Include="TypesShouldBeInsideNamespacesTest.cs" />
-    <Compile Include="TypesWithDisposableFieldsShouldBeDisposableTest.cs" />
-    <Compile Include="TypesWithNativeFieldsShouldBeDisposableTest.cs" />
     <Compile Include="UseCorrectDisposeSignaturesTest.cs" />
     <Compile Include="UseFlagsAttributeTest.cs" />
     <Compile Include="UsingCloneWithoutImplementingICloneableTest.cs" />
@@ -112,6 +133,23 @@
   <ItemGroup>
     <Folder Include="Properties\" />
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.Design/UseCorrectDisposeSignaturesRule.cs b/gendarme/rules/Gendarme.Rules.Design/UseCorrectDisposeSignaturesRule.cs
index 6041eb4..697c61b 100644
--- a/gendarme/rules/Gendarme.Rules.Design/UseCorrectDisposeSignaturesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/UseCorrectDisposeSignaturesRule.cs
@@ -141,10 +141,10 @@ namespace Gendarme.Rules.Design {
 			if (type.IsInterface || type.IsEnum || type.IsDelegate ())
 				return RuleResult.DoesNotApply;
 			
-			if (type.Implements ("System.IDisposable")) {
+			if (type.Implements ("System", "IDisposable")) {
 				Log.WriteLine (this);
 				Log.WriteLine (this, "----------------------------------");
-				Log.WriteLine (this, type.FullName);
+				Log.WriteLine (this, type);
 				
 				MethodDefinition dispose0 = null;
 				MethodDefinition dispose1 = null;
@@ -236,7 +236,7 @@ namespace Gendarme.Rules.Design {
 		{
 			if (type.HasInterfaces) {
 				foreach (TypeReference candidate in type.Interfaces) {
-					if (candidate.FullName == "System.IDisposable")
+					if (candidate.IsNamed ("System", "IDisposable"))
 						return true;
 				}
 			}
diff --git a/gendarme/rules/Gendarme.Rules.Design/UseFlagsAttributeRule.cs b/gendarme/rules/Gendarme.Rules.Design/UseFlagsAttributeRule.cs
index 79671d8..c6adf87 100644
--- a/gendarme/rules/Gendarme.Rules.Design/UseFlagsAttributeRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/UseFlagsAttributeRule.cs
@@ -27,6 +27,7 @@
 using System;
 using System.Collections.Generic;
 using System.Diagnostics;
+using System.Globalization;
 using System.Linq;
 
 using Mono.Cecil;
@@ -94,7 +95,7 @@ namespace Gendarme.Rules.Design {
 							values.Add (value);
 
 					} else {
-						long v = Convert.ToInt64 (o);
+						long v = Convert.ToInt64 (o, CultureInfo.InvariantCulture);
 
 						if (v > 0) {
 							value = (ulong) v;
@@ -159,7 +160,7 @@ namespace Gendarme.Rules.Design {
 #if DEBUG
 			Log.WriteLine (this);
 			Log.WriteLine (this, "------------------------------------");
-			Log.WriteLine (this, type.FullName);
+			Log.WriteLine (this, type);
 			Log.WriteLine (this, "values: {0}", string.Join (" ", (from x in values select x.ToString ("X4")).ToArray ()));
 #endif
 
diff --git a/gendarme/rules/Gendarme.Rules.Design/UsingCloneWithoutImplementingICloneableRule.cs b/gendarme/rules/Gendarme.Rules.Design/UsingCloneWithoutImplementingICloneableRule.cs
index f33e66f..3184afc 100644
--- a/gendarme/rules/Gendarme.Rules.Design/UsingCloneWithoutImplementingICloneableRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Design/UsingCloneWithoutImplementingICloneableRule.cs
@@ -95,7 +95,7 @@ namespace Gendarme.Rules.Design {
 		public RuleResult CheckType (TypeDefinition type)
 		{
 			// rule applies to type that doesn't implement System.IClonable
-			if (type.Implements ("System.ICloneable"))
+			if (type.Implements ("System", "ICloneable"))
 				return RuleResult.DoesNotApply;
 
 			foreach (MethodDefinition method in type.Methods) {
@@ -110,7 +110,7 @@ namespace Gendarme.Rules.Design {
 
 				// that return System.Object, e.g. public object Clone()
 				// or the current type, e.g. public <type> Clone()
-				if (method.ReturnType.FullName == "System.Object")
+				if (method.ReturnType.IsNamed ("System", "Object"))
 					Runner.Report (method, Severity.Low, Confidence.High);
 			}
 
diff --git a/gendarme/rules/Gendarme.Rules.Exceptions/AvoidArgumentExceptionDefaultConstructorRule.cs b/gendarme/rules/Gendarme.Rules.Exceptions/AvoidArgumentExceptionDefaultConstructorRule.cs
index 6ddab93..44b14df 100644
--- a/gendarme/rules/Gendarme.Rules.Exceptions/AvoidArgumentExceptionDefaultConstructorRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Exceptions/AvoidArgumentExceptionDefaultConstructorRule.cs
@@ -96,21 +96,22 @@ namespace Gendarme.Rules.Exceptions {
 					continue;
 
 				TypeReference type = ctor.DeclaringType;
-				string name = type.FullName;
-				switch (name) {
-				// most common cases
-				case "System.ArgumentException":
-				case "System.ArgumentNullException":
-				case "System.ArgumentOutOfRangeException":
-				case "System.DuplicateWaitObjectException":
-					Runner.Report (method, ins, Severity.Medium, Confidence.Total, name);
-					break;
-				default:
-					if (!name.EndsWith ("Exception", StringComparison.Ordinal))
-						break;
-					if (type.Inherits ("System.ArgumentException"))
-						Runner.Report (method, ins, Severity.Medium, Confidence.Total, name);
-					break;
+				string name = type.Name;
+				if (type.Namespace == "System") {
+					// most common cases
+					switch (name) {
+					case "ArgumentException":
+					case "ArgumentNullException":
+					case "ArgumentOutOfRangeException":
+					case "DuplicateWaitObjectException":
+						Runner.Report (method, ins, Severity.Medium, Confidence.Total, type.GetFullName ());
+						continue;
+					}
+				}
+
+				if (name.EndsWith ("Exception", StringComparison.Ordinal)) {
+					if (type.Inherits ("System", "ArgumentException"))
+						Runner.Report (method, ins, Severity.Medium, Confidence.Total, type.GetFullName ());
 				}
 			}
 			return Runner.CurrentRuleResult;
diff --git a/gendarme/rules/Gendarme.Rules.Exceptions/AvoidThrowingBasicExceptionsRule.cs b/gendarme/rules/Gendarme.Rules.Exceptions/AvoidThrowingBasicExceptionsRule.cs
index a43d01c..0ac510d 100644
--- a/gendarme/rules/Gendarme.Rules.Exceptions/AvoidThrowingBasicExceptionsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Exceptions/AvoidThrowingBasicExceptionsRule.cs
@@ -26,6 +26,7 @@
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
+using Mono.Cecil;
 using Gendarme.Framework;
 
 namespace Gendarme.Rules.Exceptions {
@@ -67,15 +68,12 @@ namespace Gendarme.Rules.Exceptions {
 	[FxCopCompatibility ("Microsoft.Usage", "CA2201:DoNotRaiseReservedExceptionTypes")]
 	public class AvoidThrowingBasicExceptionsRule : NewExceptionsRule {
 
-		static string [] BasicExceptions = { 
-			"System.Exception", 
-			"System.ApplicationException", 
-			"System.SystemException"
-		};
-
-		protected override string [] GetExceptionTypes ()
+		protected override bool CheckException (TypeReference type)
 		{
-			return BasicExceptions;
+			if ((type == null) || (type.Namespace != "System"))
+				return false;
+			string name = type.Name;
+			return ((name == "Exception") || (name == "ApplicationException") || (name == "SystemException"));
 		}
 
 		protected override Severity Severity {
diff --git a/gendarme/rules/Gendarme.Rules.Exceptions/DoNotDestroyStackTraceRule.cs b/gendarme/rules/Gendarme.Rules.Exceptions/DoNotDestroyStackTraceRule.cs
index b1587d7..661b53f 100644
--- a/gendarme/rules/Gendarme.Rules.Exceptions/DoNotDestroyStackTraceRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Exceptions/DoNotDestroyStackTraceRule.cs
@@ -1,7 +1,7 @@
 //
 // DoNotDestroyStackTraceRule
 //
-// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2008, 2011 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -23,7 +23,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System;
 using System.Collections.Generic;
 
 using Mono.Cecil;
@@ -31,6 +30,7 @@ using Mono.Cecil.Cil;
 
 using Gendarme.Framework;
 using Gendarme.Framework.Engines;
+using Gendarme.Framework.Helpers;
 using Gendarme.Framework.Rocks;
 using Gendarme.Rules.Exceptions.Impl;
 
@@ -74,39 +74,116 @@ namespace Gendarme.Rules.Exceptions {
 	[FxCopCompatibility ("Microsoft.Usage", "CA2200:RethrowToPreserveStackDetails")]
 	public class DoNotDestroyStackTraceRule : Rule, IMethodRule {
 
+		// all branches instructions except leave[_s]
+		static OpCodeBitmask branches = new OpCodeBitmask (0xFFFFFC0000000000, 0xF, 0x0, 0x0);
+
 		private List<int> warned_offsets_in_method = new List<int> ();
 
 		public RuleResult CheckMethod (MethodDefinition method)
 		{
 			// rule only applies to methods with IL and exceptions handlers
-			if (!method.HasBody)
-				return RuleResult.DoesNotApply;
-
-			MethodBody body = method.Body;
-			if (!body.HasExceptionHandlers)
+			if (!method.HasBody || !method.Body.HasExceptionHandlers)
 				return RuleResult.DoesNotApply;
 
 			// and when the IL contains a Throw instruction (Rethrow is fine)
-			if (!OpCodeEngine.GetBitmask (method).Get (Code.Throw))
+			OpCodeBitmask mask = OpCodeEngine.GetBitmask (method);
+			if (!mask.Get (Code.Throw))
 				return RuleResult.DoesNotApply;
 
+			// we can use a faster code path when no branches are present in the method
+			if (mask.Intersect (branches)) {
+				Branches (method);
+			} else {
+				Branchless (method);
+			}
+
 			warned_offsets_in_method.Clear ();
+
+			return Runner.CurrentRuleResult;
+		}
+
+		private void Branchless (MethodDefinition method)
+		{
+			// Current stack position: 0 = top of stack
+			int exStackPos = 0;
+			// Local variable position: -1 = not stored in local variable
+			int localVarPos = -1;
+
+			foreach (ExceptionHandler eh in method.Body.ExceptionHandlers) {
+				if (eh.HandlerType != ExceptionHandlerType.Catch)
+					continue;
+
+				ProcessCatchBlock (eh.HandlerStart, eh.HandlerEnd, method, ref exStackPos, ref localVarPos);
+			}
+		}
+
+		private void ProcessCatchBlock (Instruction first, Instruction last, MethodDefinition method, ref int exStackPos, ref int localVarPos)
+		{
+			Instruction cur = null;
+			
+			while (cur != last) {
+				if (cur == null)
+					cur = first;
+				else
+					cur = cur.Next;
+
+				// Rethrown exception - no problem!
+				if (cur.Is (Code.Rethrow))
+					return;
+
+				if (cur.IsStoreLocal ()) {
+					int varIndex = cur.GetVariable (method).Index;
+					if (exStackPos == 0) {
+						// Storing argument on top of stack in local variable reference
+						localVarPos = varIndex;
+						exStackPos = -1;
+					} else if (localVarPos != -1 && varIndex == localVarPos)
+						// Writing over orignal exception...
+						localVarPos = -1;
+				} else if (localVarPos != -1 && cur.IsLoadLocal ()) {
+					int varIndex = cur.GetVariable (method).Index;
+					if (varIndex == localVarPos)
+						// Loading exception from local var back onto stack
+						exStackPos = 0;
+				} else if (cur.Is (Code.Throw) && exStackPos == 0) {
+					// If our original exception is on top of the stack,
+					// we're rethrowing it.This is deemed naughty...
+					if (!warned_offsets_in_method.Contains (cur.Offset)) {
+						Runner.Report (method, cur, Severity.Critical, Confidence.High);
+						warned_offsets_in_method.Add (cur.Offset);
+					}
+					return;
+				} else if (exStackPos != -1) {
+					// If we're still on the stack, track our position after
+					// this instruction
+					int numPops = cur.GetPopCount (method);
+					if (exStackPos < numPops) {
+						// Popped ex off of stack
+						exStackPos = -1;
+					} else {
+						int numPushes = cur.GetPushCount ();
+						exStackPos += numPushes - numPops;
+					}
+				}
+			}
+		}
+
+		private void Branches (MethodDefinition method)
+		{
 			ExecutionPathFactory epf = new ExecutionPathFactory ();
 
-			foreach (ExceptionHandler eh in body.ExceptionHandlers) {
+			foreach (ExceptionHandler eh in method.Body.ExceptionHandlers) {
 				if (eh.HandlerType != ExceptionHandlerType.Catch)
 					continue;
 
 				var list = epf.CreatePaths (eh.HandlerStart, eh.HandlerEnd);
 				if (list.Count == 0) {
 					Runner.Report (method, eh.HandlerStart, Severity.Medium, Confidence.Normal, "Handler too complex for analysis");
-				}  else {
+				} else {
 					foreach (ExecutionPathCollection catchPath in list)
 						ProcessCatchPath (catchPath, method);
 				}
 			}
-
-			return Runner.CurrentRuleResult;
 		}
 
 		private void ProcessCatchPath (IEnumerable<ExecutionBlock> catchPath, MethodDefinition method)
@@ -120,54 +197,41 @@ namespace Gendarme.Rules.Exceptions {
 			int localVarPos = -1;
 
 			foreach (ExecutionBlock block in catchPath) {
-				Instruction cur = null;
-				
-				while (cur != block.Last) {
-					if (cur == null)
-						cur = block.First;
-					else
-						cur = cur.Next;
- 
-					if (cur.OpCode == OpCodes.Rethrow)
-						// Rethrown exception - no problem!
-						return;
-
-					if (cur.IsStoreLocal ()) {
-						int varIndex = cur.GetVariable (method).Index;
-						if (exStackPos == 0) {
-							// Storing argument on top of stack in local variable reference
-							localVarPos = varIndex;
-							exStackPos = -1;
-						} else if (localVarPos != -1 && varIndex == localVarPos)
-							// Writing over orignal exception...
-							localVarPos = -1;
-					} else if (localVarPos != -1 && cur.IsLoadLocal ()) {
-						int varIndex = cur.GetVariable (method).Index;
-						if (varIndex == localVarPos)
-							// Loading exception from local var back onto stack
-							exStackPos = 0;
-					} else if (cur.OpCode == OpCodes.Throw && exStackPos == 0) {
-						// If our original exception is on top of the stack,
-						// we're rethrowing it.This is deemed naughty...
-						if (!warned_offsets_in_method.Contains (cur.Offset)) {
-							Runner.Report (method, cur, Severity.Critical, Confidence.High);
-							warned_offsets_in_method.Add (cur.Offset);
-						}
-						return;
-					} else if (exStackPos != -1) {
-						// If we're still on the stack, track our position after
-						// this instruction
-						int numPops = cur.GetPopCount (method);
-						if (exStackPos < numPops) {
-							// Popped ex off of stack
-							exStackPos = -1;
-						} else {
-							int numPushes = cur.GetPushCount ();
-							exStackPos += numPushes - numPops;
-						}
-					}
-				}
+				ProcessCatchBlock (block.First, block.Last, method, ref exStackPos, ref localVarPos);
 			}
 		}
+#if false
+		public void Bitmask ()
+		{
+			OpCodeBitmask branches = new OpCodeBitmask ();
+			branches.Set (Code.Beq);
+			branches.Set (Code.Beq_S);
+			branches.Set (Code.Bge);
+			branches.Set (Code.Bge_S);
+			branches.Set (Code.Bge_Un);
+			branches.Set (Code.Bge_Un_S);
+			branches.Set (Code.Bgt);
+			branches.Set (Code.Bgt_S);
+			branches.Set (Code.Bgt_Un);
+			branches.Set (Code.Bgt_Un_S);
+			branches.Set (Code.Ble);
+			branches.Set (Code.Ble_S);
+			branches.Set (Code.Ble_Un);
+			branches.Set (Code.Ble_Un_S);
+			branches.Set (Code.Blt);
+			branches.Set (Code.Blt_S);
+			branches.Set (Code.Blt_Un);
+			branches.Set (Code.Blt_Un_S);
+			branches.Set (Code.Bne_Un);
+			branches.Set (Code.Bne_Un_S);
+			branches.Set (Code.Br);
+			branches.Set (Code.Br_S);
+			branches.Set (Code.Brfalse);
+			branches.Set (Code.Brfalse_S);
+			branches.Set (Code.Brtrue);
+			branches.Set (Code.Brtrue_S);
+			Console.WriteLine (branches);
+		}
+#endif
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Exceptions/DoNotThrowInNonCatchClausesRule.cs b/gendarme/rules/Gendarme.Rules.Exceptions/DoNotThrowInNonCatchClausesRule.cs
new file mode 100644
index 0000000..f237349
--- /dev/null
+++ b/gendarme/rules/Gendarme.Rules.Exceptions/DoNotThrowInNonCatchClausesRule.cs
@@ -0,0 +1,113 @@
+//
+// Gendarme.Rules.Exceptions.DoNotThrowInNonCatchClausesRule
+//
+// Authors:
+//	Sebastien Pouliot <sebastien at ximian.com>
+//
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using Mono.Cecil;
+using Mono.Cecil.Cil;
+
+using Gendarme.Framework;
+using Gendarme.Framework.Engines;
+using Gendarme.Framework.Rocks;
+
+namespace Gendarme.Rules.Exceptions {
+
+	/// <summary>
+	/// This rule detects exceptions that are throw in <c>fault</c>, <c>filter</c> or 
+	/// <c>finally</c> clauses. Such exceptions will make it much harder to debug your 
+	/// applications since it will hide the original exception.
+	/// </summary>
+	/// <example>
+	/// Bad example:
+	/// <code>
+	/// int err = 0;
+	/// try {
+	///	err = Initialize ();
+	/// }
+	/// finally {
+	///	Cleanup ();
+	///	if (err != 0)
+	///		throw new NotSupportedException ();
+	/// }
+	/// </code>
+	/// </example>
+	/// <example>
+	/// Good example:
+	/// <code>
+	/// try {
+	///	if (Initialize () != 0)
+	///		throw new NotSupportedException ();
+	/// }
+	/// finally {
+	///	Cleanup ();
+	/// }
+	/// </code>
+	/// </example>
+	[Problem ("An exception is thrown in a fault, filter or finally clause.")]
+	[Solution ("Remove the exception or move it inside the try or catch clause.")]
+	[FxCopCompatibility ("Microsoft.Usage", "CA2219:DoNotRaiseExceptionsInExceptionClauses")]
+	[EngineDependency (typeof (OpCodeEngine))]
+	public class DoNotThrowInNonCatchClausesRule : Rule, IMethodRule {
+
+		void CheckBlock (MethodDefinition method, Instruction start, Instruction end)
+		{
+			Instruction ins = start;
+			while (ins != end) {
+				if (ins.Is (Code.Throw))
+					Runner.Report (method, ins, Severity.High, Confidence.High);
+				ins = ins.Next;
+			}
+		}
+
+		public RuleResult CheckMethod (MethodDefinition method)
+		{
+			// rule only applies to methods with IL...
+			if (!method.HasBody)
+				return RuleResult.DoesNotApply;
+
+			// ... and exceptions handlers
+			MethodBody body = method.Body;
+			if (!body.HasExceptionHandlers)
+				return RuleResult.DoesNotApply;
+
+			// and when the IL contains a Throw instruction (Rethrow is fine)
+			if (!OpCodeEngine.GetBitmask (method).Get (Code.Throw))
+				return RuleResult.DoesNotApply;
+
+			foreach (ExceptionHandler eh in body.ExceptionHandlers) {
+				// throwing in catch handler is fine
+				if (eh.HandlerType == ExceptionHandlerType.Catch)
+					continue;
+
+				CheckBlock (method, eh.HandlerStart, eh.HandlerEnd);
+				if (eh.FilterStart != null)
+					CheckBlock (method, eh.FilterStart, eh.HandlerStart);
+			}
+
+			return Runner.CurrentRuleResult;
+		}
+	}
+}
diff --git a/gendarme/rules/Gendarme.Rules.Exceptions/DoNotThrowInUnexpectedLocationRule.cs b/gendarme/rules/Gendarme.Rules.Exceptions/DoNotThrowInUnexpectedLocationRule.cs
index 88e4379..cd7ad5b 100644
--- a/gendarme/rules/Gendarme.Rules.Exceptions/DoNotThrowInUnexpectedLocationRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Exceptions/DoNotThrowInUnexpectedLocationRule.cs
@@ -28,6 +28,9 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System.Globalization;
+using System.Text;
+
 using Mono.Cecil;
 using Mono.Cecil.Cil;
 
@@ -160,10 +163,27 @@ namespace Gendarme.Rules.Exceptions {
 		private static readonly OpCodeBitmask OverflowThrowers = new OpCodeBitmask (0x0, 0x8000000000000000, 0x3FC07F8000001FF, 0x0);
 		private static readonly OpCodeBitmask Casts = new OpCodeBitmask (0x0, 0x48000000000000, 0x400000000, 0x0);
 
-		private static readonly string [] GetterExceptions = new string [] {"System.InvalidOperationException", "System.NotSupportedException"};
-		private static readonly string [] IndexerExceptions = new string [] {"System.InvalidOperationException", "System.NotSupportedException", "System.ArgumentException", "System.Collections.Generic.KeyNotFoundException"};
-		private static readonly string [] EventExceptions = new string [] {"System.InvalidOperationException", "System.NotSupportedException", "System.ArgumentException"};
-		private static readonly string [] HashCodeExceptions = new string [] {"System.ArgumentException"};
+		private static readonly string [][] GetterExceptions = new string [][] {
+			new string [] { "System", "InvalidOperationException" },
+			new string [] { "System", "NotSupportedException"}
+		};
+
+		private static readonly string [][] IndexerExceptions = new string [][] {
+			new string [] { "System", "InvalidOperationException" }, 
+			new string [] { "System", "NotSupportedException" }, 
+			new string [] { "System", "ArgumentException" }, 
+			new string [] { "System.Collections.Generic", "KeyNotFoundException" }
+		};
+
+		private static readonly string [][] EventExceptions = new string [][] {
+			new string [] { "System", "InvalidOperationException" }, 
+			new string [] { "System", "NotSupportedException" }, 
+			new string [] { "System", "ArgumentException" }
+		};
+
+		private static readonly string [][] HashCodeExceptions = new string [][] {
+			new string [] { "System", "ArgumentException" }
+		};
 
 		private static bool CheckAttributes (MethodReference method, MethodAttributes attrs)
 		{
@@ -180,7 +200,7 @@ namespace Gendarme.Rules.Exceptions {
 		
 		private MethodSignature equals_signature;
 		private MethodSignature hashcode_signature;
-		private string [] allowedExceptions;
+		private string [][] allowedExceptions;
 		private Severity severity;
 		private bool is_equals;
 
@@ -189,7 +209,7 @@ namespace Gendarme.Rules.Exceptions {
 			base.Initialize (runner);
 
 			Runner.AnalyzeType += delegate (object sender, RunnerEventArgs e) {
-				if (e.CurrentType.Implements ("System.Collections.Generic.IEqualityComparer`1")) {
+				if (e.CurrentType.Implements ("System.Collections.Generic", "IEqualityComparer`1")) {
 					equals_signature = EqualityComparer_Equals;
 					hashcode_signature = EqualityComparer_GetHashCode;
 				} else {
@@ -220,7 +240,7 @@ namespace Gendarme.Rules.Exceptions {
 				return PreflightVirtualMethod (method);
 			} else if (method.HasParameters && (method.Name == "Dispose")) {
 				IList<ParameterDefinition> pdc = method.Parameters;
-				if ((pdc.Count == 1) && (pdc [0].ParameterType.FullName == "System.Boolean"))
+				if ((pdc.Count == 1) && pdc [0].ParameterType.IsNamed ("System", "Boolean"))
 					return "Dispose (bool)";
 			} else if (MethodSignatures.TryParse.Matches (method)) {
 				return "TryParse";
@@ -269,7 +289,7 @@ namespace Gendarme.Rules.Exceptions {
 			} else if (MethodSignatures.Finalize.Matches (method)) {
 				return "Finalizers";
 			} else if (MethodSignatures.Dispose.Matches (method) || MethodSignatures.DisposeExplicit.Matches (method)) {
-				if (method.DeclaringType.Implements ("System.IDisposable"))
+				if (method.DeclaringType.Implements ("System", "IDisposable"))
 					return "IDisposable.Dispose";
 			} else if (equals_signature != null && equals_signature.Matches (method)) {
 				return "IEqualityComparer<T>.Equals";
@@ -288,14 +308,16 @@ namespace Gendarme.Rules.Exceptions {
 		{
 			switch (ins.OpCode.Code) {
 			case Code.Castclass:
-				return string.Format (" (cast to {0})", ((TypeReference) ins.Operand).Name);
+				return String.Format (CultureInfo.InvariantCulture, " (cast to {0})", 
+					((TypeReference) ins.Operand).Name);
 
 			case Code.Throw:					// this one is obvious
 				return string.Empty;
 
 			case Code.Unbox:
 			case Code.Unbox_Any:
-				return string.Format (" (unbox from {0})", ((TypeReference) ins.Operand).Name);
+				return String.Format (CultureInfo.InvariantCulture, " (unbox from {0})", 
+					((TypeReference) ins.Operand).Name);
 				
 			case Code.Ckfinite:
 				return " (the expression will throw if the value is a NAN or an infinity)";
@@ -360,7 +382,7 @@ namespace Gendarme.Rules.Exceptions {
 						if (ins.Previous.Is (Code.Newobj)) {
 							MethodReference mr = (MethodReference) ins.Previous.Operand;
 							TypeReference tr = mr.DeclaringType;
-							if (tr.FullName == "System.NotImplementedException" || tr.Inherits ("System.NotImplementedException"))
+							if (tr.IsNamed ("System", "NotImplementedException") || tr.Inherits ("System", "NotImplementedException"))
 								continue;
 						}	
 					
@@ -372,13 +394,22 @@ namespace Gendarme.Rules.Exceptions {
 						// If the throw does not one of the enumerated exceptions  (or 
 						// a subclass) then we have a problem.
 						else if (ins.Previous.Is (Code.Newobj)) {
-							MethodReference mr = (MethodReference) ins.Previous.Operand;
-							string name = mr.DeclaringType.FullName;
-							if (Array.IndexOf (allowedExceptions, name) < 0) {
-								if (!allowedExceptions.Any (e => mr.DeclaringType.Inherits (e))) {
-									Report (method, ins, methodLabel);
+							TypeReference type = (ins.Previous.Operand as MethodReference ).DeclaringType;
+							bool allowed = false;
+							foreach (string[] entry in allowedExceptions) {
+								if (type.IsNamed (entry [0], entry [1]))
+									allowed = true;
+							}
+							if (!allowed) {
+								foreach (string [] entry in allowedExceptions) {
+									if (type.Inherits (entry [0], entry [1])) {
+										allowed = true;
+										break;
+									}
 								}
 							}
+							if (!allowed)
+								Report (method, ins, methodLabel);
 						}	
 					}
 				}
@@ -388,10 +419,21 @@ namespace Gendarme.Rules.Exceptions {
 		private void Report (MethodDefinition method, Instruction ins, string methodLabel)
 		{
 			string mesg;
-			if (allowedExceptions == null)
-				mesg = string.Format ("{0} should not throw{1}.", methodLabel, ExplainThrow (ins));
-			else
-				mesg = string.Format ("{0} should only throw {1} or a subclass{2}.", methodLabel, string.Join (", ", allowedExceptions), ExplainThrow (ins));
+			if (allowedExceptions == null) {
+				mesg = String.Format (CultureInfo.InvariantCulture,
+					"{0} should not throw{1}.", methodLabel, ExplainThrow (ins));
+			} else {
+				StringBuilder sb = new StringBuilder ();
+				sb.Append (methodLabel).Append (" should only throw ");
+				for (int i = 0; i < allowedExceptions.Length; i++) {
+					string [] entry = allowedExceptions [i];
+					sb.Append (entry [0]).Append ('.').Append (entry [1]);
+					if (i < allowedExceptions.Length - 1)
+						sb.Append (", ");
+				}
+				sb.Append (" or a subclass").Append (ExplainThrow (ins)).Append ('.');
+				mesg = sb.ToString ();
+			}
 
 			Log.WriteLine (this, "{0:X4}: {1}", ins.Offset, mesg);
 			Runner.Report (method, ins, severity, Confidence.High, mesg);
diff --git a/gendarme/rules/Gendarme.Rules.Exceptions/DoNotThrowReservedExceptionRule.cs b/gendarme/rules/Gendarme.Rules.Exceptions/DoNotThrowReservedExceptionRule.cs
index c69fc7c..a7d989b 100644
--- a/gendarme/rules/Gendarme.Rules.Exceptions/DoNotThrowReservedExceptionRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Exceptions/DoNotThrowReservedExceptionRule.cs
@@ -24,6 +24,7 @@
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
+using Mono.Cecil;
 using Gendarme.Framework;
 
 namespace Gendarme.Rules.Exceptions {
@@ -65,16 +66,20 @@ namespace Gendarme.Rules.Exceptions {
 	[FxCopCompatibility ("Microsoft.Usage", "CA2201:DoNotRaiseReservedExceptionTypes")]
 	public class DoNotThrowReservedExceptionRule : NewExceptionsRule {
 
-		static string [] ReservedExceptions = { 
-			"System.ExecutionEngineException", 
-			"System.IndexOutOfRangeException", 
-			"System.NullReferenceException", 
-			"System.OutOfMemoryException" 
-		};
-
-		protected override string [] GetExceptionTypes ()
+		protected override bool CheckException (TypeReference type)
 		{
-			return ReservedExceptions;
+			if (type == null)
+				return false;
+
+			switch (type.Name) {
+			case "ExecutionEngineException":
+			case "IndexOutOfRangeException":
+			case "NullReferenceException":
+			case "OutOfMemoryException":
+				return (type.Namespace == "System");
+			default:
+				return false;
+			}
 		}
 
 		protected override Severity Severity {
diff --git a/gendarme/rules/Gendarme.Rules.Exceptions/DontSwallowErrorsCatchingNonspecificExceptionsRule.cs b/gendarme/rules/Gendarme.Rules.Exceptions/DontSwallowErrorsCatchingNonspecificExceptionsRule.cs
index fce1269..903f5a6 100644
--- a/gendarme/rules/Gendarme.Rules.Exceptions/DontSwallowErrorsCatchingNonspecificExceptionsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Exceptions/DontSwallowErrorsCatchingNonspecificExceptionsRule.cs
@@ -91,16 +91,13 @@ namespace Gendarme.Rules.Exceptions {
 		//}
 		//catch {
 		//}
-		private static bool IsForbiddenTypeInCatches (string typeName)
+		private static bool IsForbiddenTypeInCatches (TypeReference type)
 		{
-			switch (typeName) {
-			case "System.Exception":
-			case "System.SystemException":
-			case "System.Object":
-				return true;
-			default:
+			if (type.Namespace != "System")
 				return false;
-			}
+
+			string name = type.Name;
+			return ((name == "Exception") || (name == "SystemException") || (name == "Object"));
 		}
 
 		// will always return exceptionHandler.HandlerStart if there's no 'rethrow' inside the method
@@ -127,8 +124,7 @@ namespace Gendarme.Rules.Exceptions {
 			bool has_rethrow = OpCodeEngine.GetBitmask (method).Get (Code.Rethrow);
 			foreach (ExceptionHandler exceptionHandler in body.ExceptionHandlers) {
 				if (exceptionHandler.HandlerType == ExceptionHandlerType.Catch) {
-					string catchTypeName = exceptionHandler.CatchType.FullName;
-					if (IsForbiddenTypeInCatches (catchTypeName)) {
+					if (IsForbiddenTypeInCatches (exceptionHandler.CatchType)) {
 						// quickly find 'throw_instruction' if there's no 'rethrow' used in this method
 						Instruction throw_instruction = has_rethrow ?
 							ThrowsGeneralException (exceptionHandler) :
diff --git a/gendarme/rules/Gendarme.Rules.Exceptions/ExceptionShouldBeVisibleRule.cs b/gendarme/rules/Gendarme.Rules.Exceptions/ExceptionShouldBeVisibleRule.cs
index 284e5e7..1cce0b2 100644
--- a/gendarme/rules/Gendarme.Rules.Exceptions/ExceptionShouldBeVisibleRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Exceptions/ExceptionShouldBeVisibleRule.cs
@@ -74,18 +74,16 @@ namespace Gendarme.Rules.Exceptions {
 
 		public RuleResult CheckType (TypeDefinition type)
 		{
-			if (type.BaseType == null)
+			TypeReference btype = type.BaseType;
+			if (btype == null)
 				return RuleResult.DoesNotApply;
 
 			// rule apply only to type that inherits from the base exceptions
-			switch (type.BaseType.FullName) {
-			case "System.Exception":
-			case "System.SystemException":
-			case "System.ApplicationException":
-				break;
-			default:
+			if (btype.Namespace != "System")
+				return RuleResult.DoesNotApply;
+			string name = btype.Name;
+			if ((name != "Exception") && (name != "SystemException") && (name != "ApplicationException"))
 				return RuleResult.DoesNotApply;
-			}
 
 			if (type.IsAbstract || type.IsVisible ())
 				return RuleResult.Success;
diff --git a/gendarme/rules/Gendarme.Rules.Exceptions/Gendarme.Rules.Exceptions.csproj b/gendarme/rules/Gendarme.Rules.Exceptions/Gendarme.Rules.Exceptions.csproj
index 179882b..db66ede 100644
--- a/gendarme/rules/Gendarme.Rules.Exceptions/Gendarme.Rules.Exceptions.csproj
+++ b/gendarme/rules/Gendarme.Rules.Exceptions/Gendarme.Rules.Exceptions.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -12,9 +12,11 @@
     <AssemblyName>Gendarme.Rules.Exceptions</AssemblyName>
     <FileUpgradeFlags>
     </FileUpgradeFlags>
-    <OldToolsVersion>2.0</OldToolsVersion>
+    <OldToolsVersion>3.5</OldToolsVersion>
     <UpgradeBackupLocation>
     </UpgradeBackupLocation>
+    <IsWebBootstrapper>true</IsWebBootstrapper>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <PublishUrl>http://localhost/Gendarme.Rules.Exceptions/</PublishUrl>
     <Install>true</Install>
     <InstallFrom>Web</InstallFrom>
@@ -27,10 +29,9 @@
     <MapFileExtensions>true</MapFileExtensions>
     <ApplicationRevision>0</ApplicationRevision>
     <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>true</IsWebBootstrapper>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -43,6 +44,7 @@
     <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Exceptions.xml</DocumentationFile>
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -54,6 +56,7 @@
     <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Exceptions.xml</DocumentationFile>
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -96,14 +99,33 @@
     <None Include="ChangeLog" />
   </ItemGroup>
   <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
diff --git a/gendarme/rules/Gendarme.Rules.Exceptions/InstantiateArgumentExceptionCorrectlyRule.cs b/gendarme/rules/Gendarme.Rules.Exceptions/InstantiateArgumentExceptionCorrectlyRule.cs
index b9b5dab..b085345 100644
--- a/gendarme/rules/Gendarme.Rules.Exceptions/InstantiateArgumentExceptionCorrectlyRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Exceptions/InstantiateArgumentExceptionCorrectlyRule.cs
@@ -130,7 +130,7 @@ namespace Gendarme.Rules.Exceptions {
 				return;
 
 			// OK		public ArgumentException (string message, Exception innerException)
-			if (pdc [1].ParameterType.FullName != "System.String")
+			if (!pdc [1].ParameterType.IsNamed ("System", "String"))
 				return;
 
 			// CHECK	public ArgumentException (string message, string paramName)
@@ -153,12 +153,17 @@ namespace Gendarme.Rules.Exceptions {
 			// OK		protected ArgumentNullException (SerializationInfo info, StreamingContext context)
 			// OK		public ArgumentNullException (string message, Exception innerException)
 			IList<ParameterDefinition> pdc = constructor.Parameters;
-			if ((pdc.Count == 2) && (pdc [1].ParameterType.FullName != "System.String"))
+			if ((pdc.Count == 2) && !pdc [1].ParameterType.IsNamed ("System", "String"))
 				return;
 
 			// CHECK	public ArgumentNullException (string paramName)
 			// CHECK	public ArgumentNullException (string paramName, string message)
 			Instruction call = ins.TraceBack (method, 0);
+			
+			// call will be null if there is branching logic in the selection of a message - just fon't check in this case
+			if (call == null)
+				return;
+
 			string name = call.Operand as string;
 			if (MatchesAnyParameter (method, name))
 				return;
@@ -187,18 +192,19 @@ namespace Gendarme.Rules.Exceptions {
 					continue;
 
 				MethodReference ctor = (current.Operand as MethodReference);
+				TypeReference type = ctor.DeclaringType;
+				if (type.Namespace != "System")
+					continue;
 
-				switch (ctor.DeclaringType.FullName) {
-				case "System.ArgumentException":
+				switch (type.Name) {
+				case "ArgumentException":
 					CheckArgumentException (ctor, current, method);
 					break;
-				case "System.ArgumentNullException":
-				case "System.ArgumentOutOfRangeException":
-				case "System.DuplicateWaitObjectException":
+				case "ArgumentNullException":
+				case "ArgumentOutOfRangeException":
+				case "DuplicateWaitObjectException":
 					CheckOtherExceptions (ctor, current, method);
 					break;
-				default:
-					continue;
 				}
 			}
 
diff --git a/gendarme/rules/Gendarme.Rules.Exceptions/Makefile.am b/gendarme/rules/Gendarme.Rules.Exceptions/Makefile.am
index 071342b..30c2b74 100644
--- a/gendarme/rules/Gendarme.Rules.Exceptions/Makefile.am
+++ b/gendarme/rules/Gendarme.Rules.Exceptions/Makefile.am
@@ -4,6 +4,7 @@ rules_sources =  \
 	AvoidArgumentExceptionDefaultConstructorRule.cs \
 	AvoidThrowingBasicExceptionsRule.cs \
 	DoNotDestroyStackTraceRule.cs \
+	DoNotThrowInNonCatchClausesRule.cs \
 	DoNotThrowInUnexpectedLocationRule.cs \
 	DoNotThrowReservedExceptionRule.cs \
 	DontSwallowErrorsCatchingNonspecificExceptionsRule.cs \
@@ -19,6 +20,7 @@ rules_sources =  \
 tests_sources = \
 	AvoidArgumentExceptionDefaultConstructorTest.cs \
 	AvoidThrowingBasicExceptionsTest.cs \
+	DoNotThrowInNonCatchClausesTest.cs \
 	DoNotThrowInUnexpectedLocationTest.cs \
 	DontDestroyStackTraceTest.cs \
 	DontSwallowErrorsCatchingNonspecificExceptionsTest.cs \
diff --git a/gendarme/rules/Gendarme.Rules.Exceptions/Makefile.in b/gendarme/rules/Gendarme.Rules.Exceptions/Makefile.in
index 707eb4c..8872432 100644
--- a/gendarme/rules/Gendarme.Rules.Exceptions/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Exceptions/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(rules_categorydir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
-rules_categorySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(rules_category_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,20 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(rules_documentation_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -130,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -254,6 +330,7 @@ rules_sources = \
 	AvoidArgumentExceptionDefaultConstructorRule.cs \
 	AvoidThrowingBasicExceptionsRule.cs \
 	DoNotDestroyStackTraceRule.cs \
+	DoNotThrowInNonCatchClausesRule.cs \
 	DoNotThrowInUnexpectedLocationRule.cs \
 	DoNotThrowReservedExceptionRule.cs \
 	DontSwallowErrorsCatchingNonspecificExceptionsRule.cs \
@@ -269,6 +346,7 @@ rules_sources = \
 tests_sources = \
 	AvoidArgumentExceptionDefaultConstructorTest.cs \
 	AvoidThrowingBasicExceptionsTest.cs \
+	DoNotThrowInNonCatchClausesTest.cs \
 	DoNotThrowInUnexpectedLocationTest.cs \
 	DontDestroyStackTraceTest.cs \
 	DontSwallowErrorsCatchingNonspecificExceptionsTest.cs \
@@ -285,14 +363,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Exceptions/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Exceptions/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Exceptions/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Exceptions/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -302,6 +380,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../common.make $(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -310,42 +389,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-rules_categorySCRIPTS: $(rules_category_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_categorydir)" || $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)"
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_categorydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(rules_categorySCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	    $(rules_categorySCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rules_categorydir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rules_categorydir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-rules_categorySCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	done
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(rules_categorydir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -354,7 +454,7 @@ uninstall-rules_documentationDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -371,7 +471,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -379,7 +479,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -405,16 +505,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -422,14 +522,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -441,7 +541,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -450,29 +550,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -493,29 +598,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -538,10 +655,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -549,6 +671,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -568,6 +691,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -577,18 +702,28 @@ install-data-am: install-rules_categorySCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -610,8 +745,8 @@ ps-am:
 uninstall-am: uninstall-rules_categorySCRIPTS \
 	uninstall-rules_documentationDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -631,11 +766,11 @@ uninstall-am: uninstall-rules_categorySCRIPTS \
 
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -644,7 +779,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
@@ -664,6 +799,7 @@ $(rules_doc_source):
 
 clean-local:
 	rm -fr doc
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Exceptions/MissingExceptionConstructorsRule.cs b/gendarme/rules/Gendarme.Rules.Exceptions/MissingExceptionConstructorsRule.cs
index 32663e5..d4d86af 100644
--- a/gendarme/rules/Gendarme.Rules.Exceptions/MissingExceptionConstructorsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Exceptions/MissingExceptionConstructorsRule.cs
@@ -26,6 +26,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 
 using Mono.Cecil;
 
@@ -86,9 +87,6 @@ namespace Gendarme.Rules.Exceptions {
 	[FxCopCompatibility ("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors")]
 	public class MissingExceptionConstructorsRule : Rule, ITypeRule {
 
-		// non-localizable
-		private const string Exception = "System.Exception";
-
 		// localizable
 		private const string MissingConstructor = "Exception is missing '{0} {1}{2}' constructor.";
 
@@ -97,15 +95,15 @@ namespace Gendarme.Rules.Exceptions {
 			if (!ctor.IsPublic)
 				return false;
 
-			return (ctor.Parameters [0].ParameterType.FullName == "System.String");
+			return (ctor.Parameters [0].ParameterType.IsNamed ("System", "String"));
 		}
 
 		private static bool CheckForInnerExceptionConstructor (IMethodSignature ctor)
 		{
 			IList<ParameterDefinition> pdc = ctor.Parameters;
-			string first = pdc [0].ParameterType.FullName;
-			string last = pdc [pdc.Count - 1].ParameterType.FullName;
-			return ((first == "System.String") && (last == Exception));
+			if (!pdc [0].ParameterType.IsNamed ("System", "String"))
+				return false;
+			return pdc [pdc.Count - 1].ParameterType.IsNamed ("System", "Exception");
 		}
 
 		private static bool CheckForSerializationConstructor (MethodDefinition ctor)
@@ -119,7 +117,7 @@ namespace Gendarme.Rules.Exceptions {
 		public RuleResult CheckType (TypeDefinition type)
 		{
 			// rule apply only to type that inherits from System.Exception
-			if (!type.Inherits (Exception))
+			if (!type.Inherits ("System", "Exception"))
 				return RuleResult.DoesNotApply;
 
 			// rule applies, only Success or Failure from the point on
@@ -166,21 +164,24 @@ namespace Gendarme.Rules.Exceptions {
 			}
 
 			if (!empty_ctor) {
-				string s = String.Format (MissingConstructor, "public", type.Name, "()");
+				string s = String.Format (CultureInfo.InvariantCulture, MissingConstructor, "public", 
+					type.Name, "()");
 				Runner.Report (type, Severity.High, Confidence.Total, s);
 			}
 			if (!string_ctor) {
-				string s = String.Format (MissingConstructor, "public", type.Name, "(string message)");
+				string s = String.Format (CultureInfo.InvariantCulture, MissingConstructor, "public", 
+					type.Name, "(string message)");
 				Runner.Report (type, Severity.High, Confidence.Total, s);
 			}
 			if (!inner_exception_ctor) {
-				string s = String.Format (MissingConstructor, "public", type.Name,
-					"(string message, Exception innerException)");
+				string s = String.Format (CultureInfo.InvariantCulture, MissingConstructor, "public", 
+					type.Name, "(string message, Exception innerException)");
 				Runner.Report (type, Severity.High, Confidence.Total, s);
 			}
 			if (!serialization_ctor) {
-				string s = String.Format (MissingConstructor, (type.IsSealed) ? "private" : "protected",
-					type.Name, "(SerializationInfo info, StreamingContext context)");
+				string s = String.Format (CultureInfo.InvariantCulture, MissingConstructor, 
+					(type.IsSealed) ? "private" : "protected", type.Name, 
+					"(SerializationInfo info, StreamingContext context)");
 				Runner.Report (type, Severity.High, Confidence.Total, s);
 			}
 
diff --git a/gendarme/rules/Gendarme.Rules.Exceptions/NewExceptionRule.cs b/gendarme/rules/Gendarme.Rules.Exceptions/NewExceptionRule.cs
index f2d3f75..22605f2 100644
--- a/gendarme/rules/Gendarme.Rules.Exceptions/NewExceptionRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Exceptions/NewExceptionRule.cs
@@ -46,12 +46,14 @@ namespace Gendarme.Rules.Exceptions {
 			// if the module does not reference any of these types, don't analyze it
 			// (unless this is corlib itself since they're defined in it :-)
 			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				Active = (e.CurrentAssembly.Name.Name == "mscorlib") ||
-					e.CurrentModule.HasAnyTypeReference (GetExceptionTypes ());
+				Active = (e.CurrentAssembly.Name.Name == "mscorlib" ||
+					e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+						return CheckException (tr);
+					}));
 			};
 		}
 
-		abstract protected string [] GetExceptionTypes ();
+		abstract protected bool CheckException (TypeReference type);
 		abstract protected Severity Severity { get; }
 
 		public RuleResult CheckMethod (MethodDefinition method)
@@ -69,18 +71,12 @@ namespace Gendarme.Rules.Exceptions {
 				if (ins.OpCode.Code != Code.Newobj)
 					continue;
 
-				// obtain a reference to constructor
-				MethodReference ctor = (ins.Operand as MethodReference);
+				// obtain a reference to the constructor's type
+				TypeReference ctype = (ins.Operand as MethodReference).DeclaringType;
 
-				// what type is it?
-				string name = ctor.DeclaringType.FullName;
-				foreach (string exception_type in GetExceptionTypes ()) {
-					if (name == exception_type) {
-						// report a defect including the offending exception type found
-						Runner.Report (method, ins, Severity, Confidence.High, name);
-						break;
-					}
-				}
+				// report a defect if an offending exception type is found
+				if (CheckException (ctype))
+					Runner.Report (method, ins, Severity, Confidence.High, ctype.Name);
 			}
 
 			return Runner.CurrentRuleResult;
diff --git a/gendarme/rules/Gendarme.Rules.Exceptions/Test/DoNotThrowInNonCatchClausesTest.cs b/gendarme/rules/Gendarme.Rules.Exceptions/Test/DoNotThrowInNonCatchClausesTest.cs
new file mode 100644
index 0000000..9bb6ddd
--- /dev/null
+++ b/gendarme/rules/Gendarme.Rules.Exceptions/Test/DoNotThrowInNonCatchClausesTest.cs
@@ -0,0 +1,136 @@
+//
+// Unit Tests for DoNotThrowInNonCatchClausesRule
+//
+// Authors:
+//	Sebastien Pouliot <sebastien at ximian.com>
+//
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using Gendarme.Rules.Exceptions;
+
+using NUnit.Framework;
+using Test.Rules.Definitions;
+using Test.Rules.Fixtures;
+
+namespace Test.Rules.Exceptions {
+
+	[TestFixture]
+	public class DoNotThrowInNonCatchClausesTest : MethodRuleTestFixture<DoNotThrowInNonCatchClausesRule> {
+
+		[Test]
+		public void DoesNotApply ()
+		{
+			AssertRuleDoesNotApply (SimpleMethods.ExternalMethod);
+			AssertRuleDoesNotApply (SimpleMethods.EmptyMethod);
+		}
+
+		void ThrowInTry ()
+		{
+			try {
+				throw new NotImplementedException ("no luck");
+			}
+			finally {
+				Console.WriteLine ();
+			}
+		}
+
+		void ThrowInCatch ()
+		{
+			try {
+				Console.WriteLine ();
+			}
+			catch (Exception e) {
+				throw new NotImplementedException ("no luck", e);
+			}
+		}
+
+		// copied from DontDestroyStackTraceTest since CSC compiles the HandlerEnd as past the method offset
+		void ThrowCatchThrowNew ()
+		{
+			try {
+				throw new NotImplementedException ();
+			}
+			catch (Exception) {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[Test]
+		public void Success ()
+		{
+			AssertRuleSuccess<DoNotThrowInNonCatchClausesTest> ("ThrowInTry");
+			AssertRuleSuccess<DoNotThrowInNonCatchClausesTest> ("ThrowInCatch");
+			AssertRuleSuccess<DoNotThrowInNonCatchClausesTest> ("ThrowCatchThrowNew");
+		}
+
+		void RethrowInCatch ()
+		{
+			try {
+				Console.WriteLine ();
+			}
+			catch (Exception) {
+				throw; // rethrow in IL which is seen only in catch clauses
+			}
+		}
+
+		[Test]
+		public void Rethrow ()
+		{
+			AssertRuleDoesNotApply<DoNotThrowInNonCatchClausesTest> ("RethrowInCatch");
+		}
+
+		void ThrowInFinally ()
+		{
+			try {
+				Console.WriteLine ();
+			}
+			finally {
+				throw new NotImplementedException ("no luck");
+			}
+		}
+
+		void ThrowInFinallyToo ()
+		{
+			try {
+				throw new NotImplementedException ("no luck");
+			}
+			catch (Exception e) {
+				throw new NotImplementedException ("no more luck", e);
+			}
+			finally {
+				if (GetType ().IsSealed)
+					throw new NotImplementedException ("never any luck");
+				else
+					throw new NotSupportedException ("stop playing cards");
+			}
+		}
+
+		[Test]
+		public void Failure ()
+		{
+			AssertRuleFailure<DoNotThrowInNonCatchClausesTest> ("ThrowInFinally", 1);
+			AssertRuleFailure<DoNotThrowInNonCatchClausesTest> ("ThrowInFinallyToo", 2);
+		}
+	}
+}
diff --git a/gendarme/rules/Gendarme.Rules.Exceptions/Test/InstantiateArgumentExceptionCorrectlyTest.cs b/gendarme/rules/Gendarme.Rules.Exceptions/Test/InstantiateArgumentExceptionCorrectlyTest.cs
index 8727b8b..d53501d 100644
--- a/gendarme/rules/Gendarme.Rules.Exceptions/Test/InstantiateArgumentExceptionCorrectlyTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Exceptions/Test/InstantiateArgumentExceptionCorrectlyTest.cs
@@ -777,5 +777,49 @@ namespace Test.Rules.Exceptions {
 			AssertRuleSuccess<InstantiateArgumentExceptionCorrectlyTest> ("get_Item");
 			AssertRuleSuccess<InstantiateArgumentExceptionCorrectlyTest> ("set_Item");
 		}
+
+		public void ArgumentNullExceptionWithBranchInMessageSelectionAndIncorrectParameterName(int parameter)
+		{
+			throw new ArgumentNullException("asdf", parameter > 0 ? "little parameter " : "big parameter");
+		}
+
+		public void ArgumentOutOfRangeExceptionWithBranchInMessageSelectionAndIncorrectParameterName(int parameter)
+		{
+			throw new ArgumentOutOfRangeException("asdf", parameter > 0 ? "little parameter " : "big parameter");
+		}
+
+		public void DuplicateWaitObjectExceptionWithBranchInMessageSelectionAndIncorrectParameterName(int parameter)
+		{
+			throw new DuplicateWaitObjectException("asdf", parameter > 0 ? "little parameter " : "big parameter");
+		}
+
+		public void ArgumentNullExceptionWithBranchInMessageSelectionAndCorrectParameterName(int parameter)
+		{
+			throw new ArgumentNullException("parameter", parameter > 0 ? "little parameter " : "big parameter");
+		}
+
+		public void ArgumentOutOfRangeExceptionWithBranchInMessageSelectionAndCorrectParameterName(int parameter)
+		{
+			throw new ArgumentOutOfRangeException("parameter", parameter > 0 ? "little parameter " : "big parameter");
+		}
+
+		public void DuplicateWaitObjectExceptionWithBranchInMessageSelectionAndCorrectParameterName(int parameter)
+		{
+			throw new DuplicateWaitObjectException("parameter", parameter > 0 ? "little parameter " : "big parameter");
+		}
+
+		[Test]
+		public void ArgumentExceptionsWithBranchInMessageSelectionDoesNotThrow()
+		{
+			AssertRuleSuccess<InstantiateArgumentExceptionCorrectlyTest>("ArgumentNullExceptionWithBranchInMessageSelectionAndCorrectParameterName");
+			AssertRuleSuccess<InstantiateArgumentExceptionCorrectlyTest>("ArgumentOutOfRangeExceptionWithBranchInMessageSelectionAndCorrectParameterName");
+			AssertRuleSuccess<InstantiateArgumentExceptionCorrectlyTest>("DuplicateWaitObjectExceptionWithBranchInMessageSelectionAndCorrectParameterName");
+
+			//Ideally the rules below would be AssertRuleFailure - but better to incorrectly pass than to throw an unhandled exception
+			// If the handling code is changed a better resolution here may be possible
+			AssertRuleSuccess<InstantiateArgumentExceptionCorrectlyTest>("ArgumentNullExceptionWithBranchInMessageSelectionAndIncorrectParameterName");
+			AssertRuleSuccess<InstantiateArgumentExceptionCorrectlyTest>("ArgumentOutOfRangeExceptionWithBranchInMessageSelectionAndIncorrectParameterName");
+			AssertRuleSuccess<InstantiateArgumentExceptionCorrectlyTest>("DuplicateWaitObjectExceptionWithBranchInMessageSelectionAndIncorrectParameterName");
+		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Exceptions/Test/Makefile.in b/gendarme/rules/Gendarme.Rules.Exceptions/Test/Makefile.in
index 05d7e15..8a0c6e1 100644
--- a/gendarme/rules/Gendarme.Rules.Exceptions/Test/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Exceptions/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Exceptions/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Exceptions/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Exceptions/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Exceptions/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -298,6 +338,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -306,18 +348,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -352,6 +404,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Exceptions/Test/Tests.Rules.Exceptions.csproj b/gendarme/rules/Gendarme.Rules.Exceptions/Test/Tests.Rules.Exceptions.csproj
index d37db89..2e31f25 100644
--- a/gendarme/rules/Gendarme.Rules.Exceptions/Test/Tests.Rules.Exceptions.csproj
+++ b/gendarme/rules/Gendarme.Rules.Exceptions/Test/Tests.Rules.Exceptions.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -12,9 +12,11 @@
     <AssemblyName>Tests.Rules.Exceptions</AssemblyName>
     <FileUpgradeFlags>
     </FileUpgradeFlags>
-    <OldToolsVersion>2.0</OldToolsVersion>
+    <OldToolsVersion>3.5</OldToolsVersion>
     <UpgradeBackupLocation>
     </UpgradeBackupLocation>
+    <IsWebBootstrapper>true</IsWebBootstrapper>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <PublishUrl>http://localhost/Tests.Rules.Exceptions/</PublishUrl>
     <Install>true</Install>
     <InstallFrom>Web</InstallFrom>
@@ -27,10 +29,9 @@
     <MapFileExtensions>true</MapFileExtensions>
     <ApplicationRevision>0</ApplicationRevision>
     <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>true</IsWebBootstrapper>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -40,6 +41,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -48,6 +50,7 @@
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
@@ -95,14 +98,33 @@
     <None Include="ChangeLog" />
   </ItemGroup>
   <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
diff --git a/gendarme/rules/Gendarme.Rules.Exceptions/UseObjectDisposedExceptionRule.cs b/gendarme/rules/Gendarme.Rules.Exceptions/UseObjectDisposedExceptionRule.cs
index fbb1f0f..8636091 100644
--- a/gendarme/rules/Gendarme.Rules.Exceptions/UseObjectDisposedExceptionRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Exceptions/UseObjectDisposedExceptionRule.cs
@@ -150,7 +150,9 @@ namespace Gendarme.Rules.Exceptions {
 		
 		private void CheckBody (MethodDefinition method)
 		{
-			string fullname = method.DeclaringType.FullName;
+			TypeReference type = method.DeclaringType;
+			string nspace = type.Namespace;
+			string name = type.Name;
 			foreach (Instruction ins in method.Body.Instructions) {
 				switch (ins.OpCode.Code) {
 				case Code.Call:
@@ -160,7 +162,7 @@ namespace Gendarme.Rules.Exceptions {
 						MethodDefinition callee = target.Resolve ();
 						if (callee != null) {
 							if (!callee.IsPublic && !callee.IsStatic) {
-								if (callee.DeclaringType.FullName == fullname) {
+								if (callee.DeclaringType.IsNamed (nspace, name)) {
 									Instruction instance = ins.TraceBack (method);
 									if (instance != null && instance.OpCode.Code == Code.Ldarg_0) {
 										Log.WriteLine (this, "found non-public this call at {0:X4}", ins.Offset);
@@ -187,7 +189,7 @@ namespace Gendarme.Rules.Exceptions {
 				case Code.Ldflda:
 					if (!field_access_using_this) {
 						FieldReference field = (FieldReference) ins.Operand;
-						if (field.DeclaringType.FullName == fullname) {
+						if (field.DeclaringType.IsNamed (nspace, name)) {
 							Instruction instance = ins.TraceBack (method);
 							if (instance != null && instance.OpCode.Code == Code.Ldarg_0) {
 								Log.WriteLine (this, "found field access at {0:X4}", ins.Offset);
@@ -200,7 +202,7 @@ namespace Gendarme.Rules.Exceptions {
 				case Code.Newobj:
 					if (!creates_exception) {
 						MethodReference ctor = (MethodReference) ins.Operand;
-						if (ctor.DeclaringType.FullName == "System.ObjectDisposedException") {
+						if (ctor.DeclaringType.IsNamed ("System", "ObjectDisposedException")) {
 							Log.WriteLine (this, "creates exception at {0:X4}", ins.Offset);
 							creates_exception = true;
 						}
@@ -220,7 +222,7 @@ namespace Gendarme.Rules.Exceptions {
 			
 			if (method.IsPublic) {
 				if (OpCodeEngine.GetBitmask (method).Intersect (CallsAndFields)) {
-					if (method.DeclaringType.Implements ("System.IDisposable")) {
+					if (method.DeclaringType.Implements ("System", "IDisposable")) {
 						if (AllowedToThrow (method)) {
 							needs = true;
 						}
diff --git a/gendarme/rules/Gendarme.Rules.Gendarme/DefectsMustBeReportedRule.cs b/gendarme/rules/Gendarme.Rules.Gendarme/DefectsMustBeReportedRule.cs
index ab02b90..9376fc6 100644
--- a/gendarme/rules/Gendarme.Rules.Gendarme/DefectsMustBeReportedRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Gendarme/DefectsMustBeReportedRule.cs
@@ -75,11 +75,11 @@ namespace Gendarme.Rules.Gendarme {
 	public class DefectsMustBeReportedRule : GendarmeRule, ITypeRule {
 		public RuleResult CheckType (TypeDefinition type)
 		{
-			if (type.IsAbstract || !type.Implements ("Gendarme.Framework.IRule") || !type.HasMethods)
+			if (type.IsAbstract || !type.HasMethods || !type.Implements ("Gendarme.Framework", "IRule"))
 				return RuleResult.DoesNotApply;
 
 			foreach (MethodDefinition method in type.Methods) {
-				if (!method.HasBody || !OpCodeBitmask.Calls.Intersect (OpCodeEngine.GetBitmask (method)) || method.IsConstructor)
+				if (method.IsConstructor || !method.HasBody || !OpCodeBitmask.Calls.Intersect (OpCodeEngine.GetBitmask (method)))
 					continue;
 
 				foreach (Instruction instruction in method.Body.Instructions) {
@@ -87,9 +87,9 @@ namespace Gendarme.Rules.Gendarme {
 						continue;
 					
 					MethodReference m = (instruction.Operand as MethodReference);
-					if (m == null || m.DeclaringType.FullName != "Gendarme.Framework.IRunner")
+					if (m == null || (m.Name != "Report"))
 						continue;
-					if (m.Name == "Report")
+					if (m.DeclaringType.IsNamed ("Gendarme.Framework", "IRunner"))
 						return RuleResult.Success;
 				}
 				
diff --git a/gendarme/rules/Gendarme.Rules.Gendarme/DoNotThrowExceptionRule.cs b/gendarme/rules/Gendarme.Rules.Gendarme/DoNotThrowExceptionRule.cs
index 271e793..78ae7a7 100644
--- a/gendarme/rules/Gendarme.Rules.Gendarme/DoNotThrowExceptionRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Gendarme/DoNotThrowExceptionRule.cs
@@ -74,7 +74,7 @@ namespace Gendarme.Rules.Gendarme {
 
 			Runner.AnalyzeType += (object sender, RunnerEventArgs e) =>
 			{
-				Active = e.CurrentType.Implements ("Gendarme.Framework.IRule");
+				Active = e.CurrentType.Implements ("Gendarme.Framework", "IRule");
 			};
 		}
 
@@ -89,7 +89,7 @@ namespace Gendarme.Rules.Gendarme {
 
 			if (method.IsSetter && method.IsPublic) {
 				PropertyDefinition property = method.GetPropertyByAccessor ();
-				if (property != null && property.HasCustomAttributes && property.HasAttribute ("System.ComponentModel.DescriptionAttribute"))
+				if (property.HasAttribute ("System.ComponentModel", "DescriptionAttribute"))
 					return RuleResult.Success;
 			}
 
@@ -105,7 +105,7 @@ namespace Gendarme.Rules.Gendarme {
 					continue;
 
 				TypeReference type = m.DeclaringType;
-				if (type.FullName != "System.NotImplementedException" && !type.Inherits ("System.NotImplementedException"))
+				if (type.Inherits ("System", "Exception"))
 					Runner.Report (method, instruction, Severity.Medium, Confidence.High);
 			}
 
diff --git a/gendarme/rules/Gendarme.Rules.Gendarme/Gendarme.Rules.Gendarme.csproj b/gendarme/rules/Gendarme.Rules.Gendarme/Gendarme.Rules.Gendarme.csproj
index 0201472..77396b1 100755
--- a/gendarme/rules/Gendarme.Rules.Gendarme/Gendarme.Rules.Gendarme.csproj
+++ b/gendarme/rules/Gendarme.Rules.Gendarme/Gendarme.Rules.Gendarme.csproj
@@ -1,73 +1,112 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{619CDBD4-D89E-47E1-9A82-0F194A665D48}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Gendarme.Rules.Gendarme</RootNamespace>
-    <AssemblyName>Gendarme.Rules.Gendarme</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>..\..\console\bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Gendarme.xml</DocumentationFile>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>..\..\console\bin\Release\</OutputPath>
-    <DefineConstants>TRACE;RELEASE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Gendarme.xml</DocumentationFile>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\..\AssemblyStaticInfo.cs">
-      <Link>AssemblyStaticInfo.cs</Link>
-    </Compile>
-    <Compile Include="DefectsMustBeReportedRule.cs" />
-    <Compile Include="DoNotThrowExceptionRule.cs" />
-    <Compile Include="GendarmeRule.cs" />
-    <Compile Include="MissingEngineDependencyRule.cs" />
-    <Compile Include="ReviewAttributesOnRulesRule.cs" />
-    <Compile Include="UseCorrectSuffixRule.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\..\..\cecil\Mono.Cecil.csproj">
-      <Project>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</Project>
-      <Name>Mono.Cecil</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\framework\Gendarme.Framework.csproj">
-      <Project>{CD6818D5-B398-486C-B180-92A07B143AFD}</Project>
-      <Name>Gendarme.Framework</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <Folder Include="Properties\" />
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{619CDBD4-D89E-47E1-9A82-0F194A665D48}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Gendarme.Rules.Gendarme</RootNamespace>
+    <AssemblyName>Gendarme.Rules.Gendarme</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\console\bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Gendarme.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\..\console\bin\Release\</OutputPath>
+    <DefineConstants>TRACE;RELEASE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Gendarme.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\AssemblyStaticInfo.cs">
+      <Link>AssemblyStaticInfo.cs</Link>
+    </Compile>
+    <Compile Include="DefectsMustBeReportedRule.cs" />
+    <Compile Include="DoNotThrowExceptionRule.cs" />
+    <Compile Include="GendarmeRule.cs" />
+    <Compile Include="MissingEngineDependencyRule.cs" />
+    <Compile Include="ReviewAttributesOnRulesRule.cs" />
+    <Compile Include="UseCorrectSuffixRule.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\..\cecil\Mono.Cecil.csproj">
+      <Project>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</Project>
+      <Name>Mono.Cecil</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\framework\Gendarme.Framework.csproj">
+      <Project>{CD6818D5-B398-486C-B180-92A07B143AFD}</Project>
+      <Name>Gendarme.Framework</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Properties\" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
   </Target>
   <Target Name="AfterBuild">
   </Target>
-  -->
+  -->
 </Project>
\ No newline at end of file
diff --git a/gendarme/rules/Gendarme.Rules.Gendarme/Makefile.in b/gendarme/rules/Gendarme.Rules.Gendarme/Makefile.in
index a37122b..4b8af7c 100644
--- a/gendarme/rules/Gendarme.Rules.Gendarme/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Gendarme/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(rules_categorydir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
-rules_categorySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(rules_category_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,20 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(rules_documentation_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -130,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -272,14 +348,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Gendarme/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Gendarme/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Gendarme/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Gendarme/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -289,6 +365,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../common.make $(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -297,42 +374,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-rules_categorySCRIPTS: $(rules_category_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_categorydir)" || $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)"
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_categorydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(rules_categorySCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	    $(rules_categorySCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rules_categorydir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rules_categorydir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-rules_categorySCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	done
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(rules_categorydir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -341,7 +439,7 @@ uninstall-rules_documentationDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -358,7 +456,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -366,7 +464,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -392,16 +490,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -409,14 +507,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -428,7 +526,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -437,29 +535,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -480,29 +583,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -525,10 +640,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -536,6 +656,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -555,6 +676,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -564,18 +687,28 @@ install-data-am: install-rules_categorySCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -597,8 +730,8 @@ ps-am:
 uninstall-am: uninstall-rules_categorySCRIPTS \
 	uninstall-rules_documentationDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -618,11 +751,11 @@ uninstall-am: uninstall-rules_categorySCRIPTS \
 
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -631,7 +764,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
@@ -651,6 +784,7 @@ $(rules_doc_source):
 
 clean-local:
 	rm -fr doc
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Gendarme/MissingEngineDependencyRule.cs b/gendarme/rules/Gendarme.Rules.Gendarme/MissingEngineDependencyRule.cs
index 7024d4f..07fb46a 100644
--- a/gendarme/rules/Gendarme.Rules.Gendarme/MissingEngineDependencyRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Gendarme/MissingEngineDependencyRule.cs
@@ -80,12 +80,14 @@ namespace Gendarme.Rules.Gendarme {
 			"Gendarme.Framework.Engines.NamespaceEngine"
 		};
 
+		private HashSet<string> declaredEngines = new HashSet<string> ();
+
 		public RuleResult CheckType (TypeDefinition type)
 		{
 			if (!type.HasMethods)
 				return RuleResult.DoesNotApply;
 
-			HashSet<string> declaredEngines = GetEngineDependencyValue (type);
+			GetEngineDependencyValue (type);
 
 			foreach (MethodDefinition method in type.Methods) {
 				if (!method.HasBody || !OpCodeBitmask.Calls.Intersect (OpCodeEngine.GetBitmask (method)))
@@ -95,8 +97,14 @@ namespace Gendarme.Rules.Gendarme {
 					MethodReference m = (instruction.Operand as MethodReference);
 					if (m == null)
 						continue;
-					string declaringType = m.DeclaringType.FullName;
-					if (!engines.Contains (declaringType) || declaredEngines.Contains(declaringType))
+
+					TypeReference dtype = m.DeclaringType;
+					// short-cut to avoid FullName - will work as long as all Engines comes from the same namespace (otherwise remove it)
+					if (dtype.Namespace != "Gendarme.Framework.Engines")
+						continue;
+
+					string declaringType = dtype.GetFullName ();
+					if (!engines.Contains (declaringType) || declaredEngines.Contains (declaringType))
 						continue;
 					Runner.Report (method, instruction, Severity.High, Confidence.High, 
 						"An engine " + declaringType + " is being used without type being subscribed to it with EngineDependency attribute.");
@@ -107,27 +115,28 @@ namespace Gendarme.Rules.Gendarme {
 			return Runner.CurrentRuleResult;
 		}
 
-		private HashSet<string> GetEngineDependencyValue (TypeDefinition type)
+		private void GetEngineDependencyValue (TypeDefinition type)
 		{
-			HashSet<string> retval = new HashSet<string> ();
+			declaredEngines.Clear ();
 			TypeDefinition td = type;
-			while (retval.Count < engines.Count) {
+			while (declaredEngines.Count < engines.Count) {
 				if (td.HasCustomAttributes)
 					foreach (CustomAttribute attribute in td.CustomAttributes) {
 						if (!attribute.HasConstructorArguments ||
-							attribute.AttributeType.FullName != "Gendarme.Framework.EngineDependencyAttribute")
+							!attribute.AttributeType.IsNamed ("Gendarme.Framework", "EngineDependencyAttribute"))
 							continue;
-						// ToString for both constuctors (Type and String) will return the type name we need
-						retval.Add (attribute.ConstructorArguments [0].Value.ToString ());
+
+						object value = attribute.ConstructorArguments [0].Value;
+						MemberReference mr = (value as MemberReference);
+						declaredEngines.Add (mr == null ? value.ToString () : mr.GetFullName ());
 					}
 				if (td.BaseType == null)
 					break;
-				TypeDefinition baseType = td.BaseType.Resolve();
+				TypeDefinition baseType = td.BaseType.Resolve ();
 				if (baseType == null)
 					break;
 				td = baseType;
 			}
-			return retval;
 		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Gendarme/ReviewAttributesOnRulesRule.cs b/gendarme/rules/Gendarme.Rules.Gendarme/ReviewAttributesOnRulesRule.cs
index 7bb8b35..3a15245 100644
--- a/gendarme/rules/Gendarme.Rules.Gendarme/ReviewAttributesOnRulesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Gendarme/ReviewAttributesOnRulesRule.cs
@@ -122,10 +122,14 @@ namespace Gendarme.Rules.Gendarme {
 				while (!foundSolution || !foundProblem) {
 					if (td.HasCustomAttributes)
 						foreach (CustomAttribute attribute in td.CustomAttributes) {
-							var attributeTypeName = attribute.AttributeType.FullName;
-							if (attributeTypeName == "Gendarme.Framework.SolutionAttribute")
+							TypeReference atype = attribute.AttributeType;
+							if (atype.Namespace != "Gendarme.Framework")
+								continue;
+
+							string name = atype.Name;
+							if (name == "SolutionAttribute")
 								foundSolution = true;
-							if (attributeTypeName == "Gendarme.Framework.ProblemAttribute")
+							else if (name == "ProblemAttribute")
 								foundProblem = true;
 						}
 
@@ -149,19 +153,19 @@ namespace Gendarme.Rules.Gendarme {
 				return;
 
 			foreach (CustomAttribute attribute in provider.CustomAttributes) {
-				var attributeTypeName = attribute.AttributeType.FullName;
+				var attributeTypeName = attribute.AttributeType.GetFullName ();
 				Action<CustomAttribute, ICustomAttributeProvider> f;
-				if (attributes.TryGetValue(attributeTypeName, out f))
+				if (attributes.TryGetValue (attributeTypeName, out f))
 					f (attribute, provider);
 			}
 		}
 
 		private bool IsRule (TypeReference type)
 		{
-			var typeName = type.FullName;
+			var typeName = type.GetFullName ();
 			bool result;
 			if (!typeIsRule.TryGetValue (typeName, out result)) {
-				result = type.Implements ("Gendarme.Framework.IRule");
+				result = type.Implements ("Gendarme.Framework", "IRule");
 				typeIsRule [typeName] = result;
 			}
 			return result;
@@ -182,7 +186,7 @@ namespace Gendarme.Rules.Gendarme {
 			// check if second argument has correct format
 			if (!attribute.HasConstructorArguments)
 				return;
-			var attributeTypeName = attribute.AttributeType.FullName;
+			var attributeTypeName = attribute.AttributeType.GetFullName ();
 			var argumentValue = attribute.ConstructorArguments [1].Value.ToString ();
 			var length = argumentValue.Length;
 			if (!((length == 6 || (length > 8 && argumentValue [6] == ':')) && 
@@ -199,7 +203,7 @@ namespace Gendarme.Rules.Gendarme {
 		private void CheckEngineDependencyAttribute (CustomAttribute attribute, ICustomAttributeProvider provider)
 		{
 			TypeDefinition td = (provider as TypeDefinition);
-			if (td == null || !(IsRule (td) || td.Implements ("Gendarme.Framework.IRunner")))
+			if (td == null || !(IsRule (td) || td.Implements ("Gendarme.Framework", "IRunner")))
 				Runner.Report (td, Severity.Medium, Confidence.High, "[EngineDependency] can only be used on rules and runners");
 
 			CheckIfStringArgumentsAreNotNullOrEmpty (attribute, provider);
@@ -209,9 +213,9 @@ namespace Gendarme.Rules.Gendarme {
 			var argument = attribute.ConstructorArguments [0];
 
 			// if possible, check if argument type implements IEngine
-			if (argument.Type.FullName == "System.Type") {
+			if (argument.Type.IsNamed ("System", "Type")) {
 				TypeReference tr = (argument.Value as TypeReference);
-				if (tr == null || !tr.Inherits ("Gendarme.Framework.Engine")) // IEngine does not exist yet
+				if (tr == null || !tr.Inherits ("Gendarme.Framework", "Engine")) // IEngine does not exist yet
 					Runner.Report (provider, Severity.Medium, Confidence.High,
 						"EngineDependency attribute argument should implement IEngine interface");
 
@@ -229,7 +233,7 @@ namespace Gendarme.Rules.Gendarme {
 			TypeDefinition td = (provider as TypeDefinition);
 			if (td == null || !IsRule (td))
 				Runner.Report (td, Severity.Medium, Confidence.High,
-					attribute.AttributeType.FullName + " can be used on rules only");
+					attribute.AttributeType.GetFullName () + " can be used on rules only");
 		}
 
 		private void CheckIfAttributeUsedOnRulesProperty (ICustomAttribute attribute, ICustomAttributeProvider provider)
@@ -238,7 +242,7 @@ namespace Gendarme.Rules.Gendarme {
 			if (property == null || !IsRule (property.DeclaringType) || 
 				!property.GetMethod.IsPublic || !property.SetMethod.IsPublic)
 				Runner.Report (provider, Severity.High, Confidence.High,
-					attribute.AttributeType.FullName + " should be used only on rules' public properties");
+					attribute.AttributeType.GetFullName () + " should be used only on rules' public properties");
 		}
 
 		// returns true when all arguments are fine, false otherwise
@@ -247,11 +251,11 @@ namespace Gendarme.Rules.Gendarme {
 			if (!attribute.HasConstructorArguments)
 				return true;
 			foreach (CustomAttributeArgument argument in attribute.ConstructorArguments) {
-				if (argument.Type.FullName != "System.String")
+				if (!argument.Type.IsNamed ("System", "String"))
 					continue;
 				if (String.IsNullOrEmpty ((string) argument.Value)) {
 					Runner.Report (provider, Severity.Medium, Confidence.High,
-						attribute.AttributeType.FullName + " argument cannot be null or empty");
+						attribute.AttributeType.GetFullName () + " argument cannot be null or empty");
 					return false;
 				}
 			}
diff --git a/gendarme/rules/Gendarme.Rules.Gendarme/Test/Makefile.in b/gendarme/rules/Gendarme.Rules.Gendarme/Test/Makefile.in
index 0e7c1e0..2814832 100644
--- a/gendarme/rules/Gendarme.Rules.Gendarme/Test/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Gendarme/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Gendarme/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Gendarme/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Gendarme/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Gendarme/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -298,6 +338,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -306,18 +348,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -352,6 +404,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Gendarme/Test/Tests.Rules.Gendarme.csproj b/gendarme/rules/Gendarme.Rules.Gendarme/Test/Tests.Rules.Gendarme.csproj
index fd9873f..877d2b7 100755
--- a/gendarme/rules/Gendarme.Rules.Gendarme/Test/Tests.Rules.Gendarme.csproj
+++ b/gendarme/rules/Gendarme.Rules.Gendarme/Test/Tests.Rules.Gendarme.csproj
@@ -1,79 +1,118 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{C329FF89-4C07-4D72-AF5B-70B10670CB36}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Tests.Rules.Gendarme</RootNamespace>
-    <AssemblyName>Tests.Rules.Gendarme</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\..\..\..\cecil\Test\libs\nunit-2.4.8\nunit.framework.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="DefectsMustBeReportedTest.cs" />
-    <Compile Include="DoNotThrowExceptionTest.cs" />
-    <Compile Include="MissingEngineDependencyTest.cs" />
-    <Compile Include="ReviewAttributesOnRulesTest.cs" />
-    <Compile Include="UseCorrectSuffixTest.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\..\..\..\cecil\Mono.Cecil.csproj">
-      <Project>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</Project>
-      <Name>Mono.Cecil</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\..\framework\Gendarme.Framework.csproj">
-      <Project>{CD6818D5-B398-486C-B180-92A07B143AFD}</Project>
-      <Name>Gendarme.Framework</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\Test.Rules\Test.Rules.csproj">
-      <Project>{069148AF-86AB-4EE3-BFB9-429AE722461F}</Project>
-      <Name>Test.Rules</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\Gendarme.Rules.Gendarme.csproj">
-      <Project>{619CDBD4-D89E-47E1-9A82-0F194A665D48}</Project>
-      <Name>Gendarme.Rules.Gendarme</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <Folder Include="Properties\" />
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{C329FF89-4C07-4D72-AF5B-70B10670CB36}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Tests.Rules.Gendarme</RootNamespace>
+    <AssemblyName>Tests.Rules.Gendarme</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\..\cecil\Test\libs\nunit-2.4.8\nunit.framework.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="DefectsMustBeReportedTest.cs" />
+    <Compile Include="DoNotThrowExceptionTest.cs" />
+    <Compile Include="MissingEngineDependencyTest.cs" />
+    <Compile Include="ReviewAttributesOnRulesTest.cs" />
+    <Compile Include="UseCorrectSuffixTest.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\..\..\cecil\Mono.Cecil.csproj">
+      <Project>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</Project>
+      <Name>Mono.Cecil</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\..\framework\Gendarme.Framework.csproj">
+      <Project>{CD6818D5-B398-486C-B180-92A07B143AFD}</Project>
+      <Name>Gendarme.Framework</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\Test.Rules\Test.Rules.csproj">
+      <Project>{069148AF-86AB-4EE3-BFB9-429AE722461F}</Project>
+      <Name>Test.Rules</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\Gendarme.Rules.Gendarme.csproj">
+      <Project>{619CDBD4-D89E-47E1-9A82-0F194A665D48}</Project>
+      <Name>Gendarme.Rules.Gendarme</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Properties\" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
   </Target>
   <Target Name="AfterBuild">
   </Target>
-  -->
+  -->
 </Project>
\ No newline at end of file
diff --git a/gendarme/rules/Gendarme.Rules.Gendarme/UseCorrectSuffixRule.cs b/gendarme/rules/Gendarme.Rules.Gendarme/UseCorrectSuffixRule.cs
index 18da8c3..5c4bf7d 100644
--- a/gendarme/rules/Gendarme.Rules.Gendarme/UseCorrectSuffixRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Gendarme/UseCorrectSuffixRule.cs
@@ -71,7 +71,7 @@ namespace Gendarme.Rules.Gendarme {
 		public RuleResult CheckType (TypeDefinition type)
 		{
 			bool endsWithRule = type.Name.EndsWith ("Rule", StringComparison.Ordinal);
-			bool implementsIRule = type.Implements ("Gendarme.Framework.IRule");
+			bool implementsIRule = type.Implements ("Gendarme.Framework", "IRule");
 
 			if (implementsIRule && !endsWithRule)
 				Runner.Report (type, Severity.Medium, Confidence.High, "Type implements IRule but does not end with the 'Rule'");
diff --git a/gendarme/rules/Gendarme.Rules.Globalization/AvoidUnusedInternalResourceRule.cs b/gendarme/rules/Gendarme.Rules.Globalization/AvoidUnusedInternalResourceRule.cs
index 937be0b..b29cbdc 100644
--- a/gendarme/rules/Gendarme.Rules.Globalization/AvoidUnusedInternalResourceRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Globalization/AvoidUnusedInternalResourceRule.cs
@@ -44,12 +44,6 @@ namespace Gendarme.Rules.Globalization {
 	[Solution ("Remove the unused resource or add code to call it.")]
 	public class AvoidUnusedInternalResourceRule : Rule, IMethodRule {
 
-		private static readonly string [] resXAttributes = {
-			"System.CodeDom.Compiler.GeneratedCodeAttribute",
-			"System.Diagnostics.DebuggerNonUserCodeAttribute",
-			"System.Runtime.CompilerServices.CompilerGeneratedAttribute"
-		};
-
 		static private bool Applicable (MethodDefinition method)
 		{
 			// only internal resources
@@ -71,11 +65,14 @@ namespace Gendarme.Rules.Globalization {
 			if (!typeDefinition.HasCustomAttributes)
 				return false;
 
-			var attributes = typeDefinition.CustomAttributes;
-			if (!resXAttributes.All (a => attributes.ContainsType (a)))
-				return false;
+			if (typeDefinition.HasAttribute ("System.CodeDom.Compiler", "GeneratedCodeAttribute"))
+				return true;
+			if (typeDefinition.HasAttribute ("System.Diagnostics", "DebuggerNonUserCodeAttribute"))
+				return true;
+			if (typeDefinition.HasAttribute ("System.Runtime.CompilerServices", "CompilerGeneratedAttribute"))
+				return true;
 
-			return true;
+			return false;
 		}
 
 		public RuleResult CheckMethod (MethodDefinition method)
@@ -167,7 +164,7 @@ namespace Gendarme.Rules.Globalization {
 					continue;
 
 				TypeReference type = mr.DeclaringType;
-				if (!(type is ArrayType)) {
+				if (!type.IsArray) {
 					// if (type.GetElementType ().HasGenericParameters)
 					// the simpler ^^^ does not work under Mono but works on MS
 					type = type.Resolve ();
diff --git a/gendarme/rules/Gendarme.Rules.Globalization/Gendarme.Rules.Globalization.csproj b/gendarme/rules/Gendarme.Rules.Globalization/Gendarme.Rules.Globalization.csproj
index 55a74d3..f99c3b8 100644
--- a/gendarme/rules/Gendarme.Rules.Globalization/Gendarme.Rules.Globalization.csproj
+++ b/gendarme/rules/Gendarme.Rules.Globalization/Gendarme.Rules.Globalization.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Gendarme.Rules.Globalization</RootNamespace>
     <AssemblyName>Gendarme.Rules.Globalization</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -22,6 +42,7 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
     <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Globalization.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -31,6 +52,7 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
     <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Globalization.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -58,6 +80,23 @@
   <ItemGroup>
     <Folder Include="Properties\" />
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.Globalization/Makefile.am b/gendarme/rules/Gendarme.Rules.Globalization/Makefile.am
index 18c47d0..d1c1daa 100644
--- a/gendarme/rules/Gendarme.Rules.Globalization/Makefile.am
+++ b/gendarme/rules/Gendarme.Rules.Globalization/Makefile.am
@@ -2,6 +2,9 @@ include ../common.make
 
 rules_sources =  \
 	AvoidUnusedInternalResourceRule.cs \
+	PreferIFormatProviderOverrideRule.cs \
+	PreferOverrideBaseRule.cs \
+	PreferStringComparisonOverrideRule.cs \
 	SatelliteResourceMismatchRule.cs
 
 EXTRA_TESTS_OPTIONS += -r:System.Drawing -d:DEBUG -resource:Test/Resource.resources -resource:Test/InternalResource.resources \
@@ -50,6 +53,8 @@ EXTRA_TESTS_DEPS = Test/Resource.resources Test/InternalResource.resources Test/
 
 tests_sources = \
 	AvoidUnusedInternalResourceTest.cs \
+	PreferIFormatProviderOverrideTest.cs \
+	PreferStringComparisonOverrideTest.cs \
 	SatelliteResourceMismatchTest.cs \
 	Resource.Designer.cs \
 	InternalResource.Designer.cs \
diff --git a/gendarme/rules/Gendarme.Rules.Globalization/Makefile.in b/gendarme/rules/Gendarme.Rules.Globalization/Makefile.in
index 602fe67..ea98f5f 100644
--- a/gendarme/rules/Gendarme.Rules.Globalization/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Globalization/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(rules_categorydir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
-rules_categorySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(rules_category_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,20 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(rules_documentation_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -130,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -259,6 +335,9 @@ generated_doc = doc/generated/index.xml
 tests_build_sources = $(addprefix $(srcdir)/Test/, $(tests_sources))
 rules_sources = \
 	AvoidUnusedInternalResourceRule.cs \
+	PreferIFormatProviderOverrideRule.cs \
+	PreferOverrideBaseRule.cs \
+	PreferStringComparisonOverrideRule.cs \
 	SatelliteResourceMismatchRule.cs
 
 tests_resource_resx = Test/Resource.resx
@@ -276,6 +355,8 @@ tests_resource_missing_xmlnotresx_fr = Test/Resources/XMLFileNotInResXOnlyInFren
 EXTRA_TESTS_DEPS = Test/Resource.resources Test/InternalResource.resources Test/PublicResource.resources Test/Resources/XMLFileNotInResX.xml fr/Test.Rules.Globalization.resources.dll
 tests_sources = \
 	AvoidUnusedInternalResourceTest.cs \
+	PreferIFormatProviderOverrideTest.cs \
+	PreferStringComparisonOverrideTest.cs \
 	SatelliteResourceMismatchTest.cs \
 	Resource.Designer.cs \
 	InternalResource.Designer.cs \
@@ -288,14 +369,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Globalization/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Globalization/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Globalization/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Globalization/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -305,6 +386,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../common.make $(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -313,42 +395,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-rules_categorySCRIPTS: $(rules_category_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_categorydir)" || $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)"
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_categorydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(rules_categorySCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	    $(rules_categorySCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rules_categorydir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rules_categorydir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-rules_categorySCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	done
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(rules_categorydir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -357,7 +460,7 @@ uninstall-rules_documentationDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -374,7 +477,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -382,7 +485,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -408,16 +511,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -425,14 +528,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -444,7 +547,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -453,29 +556,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -496,29 +604,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -541,10 +661,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -552,6 +677,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -571,6 +697,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -580,18 +708,28 @@ install-data-am: install-rules_categorySCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -613,8 +751,8 @@ ps-am:
 uninstall-am: uninstall-rules_categorySCRIPTS \
 	uninstall-rules_documentationDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -634,11 +772,11 @@ uninstall-am: uninstall-rules_categorySCRIPTS \
 
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -647,7 +785,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
@@ -686,6 +824,7 @@ Test/PublicResource.resources: $(tests_publicresource_resx)
 fr/Test.Rules.Globalization.resources.dll: Test/Resource.fr.resources Test/MainResourceMissing.fr.resources $(tests_resource_xmlnotresx_fr) $(tests_resource_missing_xmlnotresx_fr)
 	mkdir -p fr
 	al -culture:fr -embed:Test/MainResourceMissing.fr.resources -embed:Test/Resource.fr.resources -embed:$(tests_resource_xmlnotresx_fr) -embed:$(tests_resource_missing_xmlnotresx_fr) -out:fr/Test.Rules.Globalization.resources.dll
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Globalization/PreferIFormatProviderOverrideRule.cs b/gendarme/rules/Gendarme.Rules.Globalization/PreferIFormatProviderOverrideRule.cs
new file mode 100644
index 0000000..6a63c4f
--- /dev/null
+++ b/gendarme/rules/Gendarme.Rules.Globalization/PreferIFormatProviderOverrideRule.cs
@@ -0,0 +1,111 @@
+//
+// Gendarme.Rules.Globalization.PreferIFormatProviderOverrideRule
+//
+// Authors:
+//	Sebastien Pouliot <sebastien at ximian.com>
+//
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Globalization;
+
+using Mono.Cecil;
+using Mono.Cecil.Cil;
+using Gendarme.Framework;
+using Gendarme.Framework.Rocks;
+
+namespace Gendarme.Rules.Globalization {
+
+	/// <summary>
+	/// This rule detects calls to method that could be changed to call an <c>override</c> accepting an
+	/// extra <c>System.IFormatProvider</c> or <c>System.Globalization.CultureInfo</c> parameter (the
+	/// later implements <c>System.IFormatProvider</c>).
+	/// Generally data displayed to the end user should be using 
+	/// <c>System.Globalization.CultureInfo.CurrentCulture</c> while other data (e.g. used internally,
+	/// stored in files/databases) should use <c>System.Globalization.CultureInfo.InvariantCulture</c>.
+	/// The rule will ignore the following special methods:
+	/// <list>
+	/// <item><c>System.Activator.CreateInstance</c></item>
+	/// <item><c>System.Resources.ResourceManager.GetObject</c></item>
+	/// <item><c>System.Resources.ResourceManager.GetString</c></item>
+	/// </list>
+	/// </summary>
+	/// <example>
+	/// Bad example:
+	/// <code>
+	/// public bool Confirm (double amount)
+	/// {
+	///	string msg = String.Format ("Accept payment of {0} ?", amount);
+	///	Transaction.Log ("{0} {1}", DateTime.Now, amount);
+	///	return Prompt (msg);
+	/// }
+	/// </code>
+	/// </example>
+	/// <example>
+	/// Good example:
+	/// <code>
+	/// public bool Confirm (double amount)
+	/// {
+	///	string msg = String.Format (CultureInfo.CurrentCulture, "Accept payment of {0} ?", amount);
+	///	Transaction.Log (CultureInfo.InvariantCulture, "{0} {1}", DateTime.Now, amount);
+	///	return Prompt (msg);
+	/// }
+	/// </code>
+	/// </example>
+	[Problem ("A call is made to a method for which an override, accepting an extra IFormatProvider or CultureInfo, is available")]
+	[Solution ("Specify how the string should be compared by adding the right IFormatProvider/CultureInfo value to the call")]
+	[FxCopCompatibility ("Microsoft.Globalization", "CA1304:SpecifyCultureInfo")]
+	[FxCopCompatibility ("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+	public class PreferIFormatProviderOverrideRule : PreferOverrideBaseRule {
+
+		protected override bool CheckFirstParameter
+		{
+			get { return true; }
+		}
+
+		protected override bool IsPrefered (TypeReference type)
+		{
+			return (type.IsNamed ("System", "IFormatProvider") || type.IsNamed ("System.Globalization", "CultureInfo"));
+		}
+
+		protected override bool IsSpecialCase (MethodReference method)
+		{
+			if ((method == null) || method.IsNamed ("System", "Activator", "CreateInstance"))
+				return true;
+
+			TypeReference type = method.DeclaringType;
+			if (!type.IsNamed ("System.Resources", "ResourceManager"))
+				return false;
+
+			string name = method.Name;
+			return (name == "GetObject" || name == "GetString");
+		}
+
+		protected override void Report (MethodDefinition method, Instruction instruction, MethodReference prefered)
+		{
+			string msg = String.Format (CultureInfo.InvariantCulture,
+				"Consider using the perfered '{0}' override.", prefered.GetFullName ());
+			Runner.Report (method, instruction, Severity.Medium, Confidence.High, msg);
+		}
+	}
+}
diff --git a/gendarme/rules/Gendarme.Rules.Globalization/PreferOverrideBaseRule.cs b/gendarme/rules/Gendarme.Rules.Globalization/PreferOverrideBaseRule.cs
new file mode 100644
index 0000000..020e0e4
--- /dev/null
+++ b/gendarme/rules/Gendarme.Rules.Globalization/PreferOverrideBaseRule.cs
@@ -0,0 +1,170 @@
+//
+// Gendarme.Rules.Globalization.PreferOverrideBaseRule
+//
+// Authors:
+//	Sebastien Pouliot <sebastien at ximian.com>
+//
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+
+using Mono.Cecil;
+using Mono.Cecil.Cil;
+using Mono.Collections.Generic;
+
+using Gendarme.Framework;
+using Gendarme.Framework.Engines;
+using Gendarme.Framework.Helpers;
+using Gendarme.Framework.Rocks;
+
+namespace Gendarme.Rules.Globalization {
+
+	[EngineDependency (typeof (OpCodeEngine))]
+	public abstract class PreferOverrideBaseRule : Rule, IMethodRule {
+
+		protected virtual bool CheckFirstParameter {
+			get { return false; }
+		}
+
+		protected abstract bool IsPrefered (TypeReference type);
+
+		protected virtual bool IsSpecialCase (MethodReference method)
+		{
+			return (method == null);
+		}
+
+		protected abstract void Report (MethodDefinition method, Instruction instruction, MethodReference prefered);
+
+		static bool MatchParameters (Collection<ParameterDefinition> pmethod, Collection<ParameterDefinition> candidate, int offset)
+		{
+			int ccount = candidate.Count - offset;
+			int count = Math.Min (pmethod.Count, ccount - offset);
+			for (int i = 0; i < count; i++) {
+				ParameterDefinition pd = candidate [i + offset];
+				if (pd.IsParams ())
+					return true;
+				TypeReference ptype = pd.ParameterType;
+				if (!pmethod [i].ParameterType.IsNamed (ptype.Namespace, ptype.Name))
+					return false;
+			}
+			return (ccount - count <= 1);
+		}
+
+		// look for a signature identical to ours but that accept an extra parameter
+		MethodReference LookForPreferredOverride (MethodReference method)
+		{
+			TypeDefinition type = method.DeclaringType.Resolve ();
+			if (type == null)
+				return null;
+
+			var methods = type.Methods;
+			// we already know that, if resolved, there's at least one method (the caller)
+			// so there's no need to call HasMethods
+			if (methods.Count == 1)
+				return null;
+
+			string name = method.Name;
+			int pcount = 0;
+			Collection<ParameterDefinition> mparams = null;
+			if (method.HasParameters) {
+				mparams = method.Parameters;
+				pcount = mparams.Count;
+			}
+
+			foreach (MethodDefinition md in methods) {
+				// has one more parameter, so non-zero
+				if (!md.HasParameters)
+					continue;
+
+				Collection<ParameterDefinition> pdc = md.Parameters;
+				if (name != md.Name)
+					continue;
+
+				// compare parameters and return value
+				TypeReference rtype = md.ReturnType;
+				if (!method.ReturnType.IsNamed (rtype.Namespace, rtype.Name))
+					continue;
+
+				// last parameter could be our "prefered" type
+				if (IsPrefered (pdc [pdc.Count - 1].ParameterType)) {
+					// special case where the method has no parameter, override has only one (the prefered)
+					if ((pcount == 0) && (mparams == null))
+						return md;
+					if (MatchParameters (mparams, pdc, 0))
+						return md;
+				} else if (CheckFirstParameter && IsPrefered (pdc [0].ParameterType)) {
+					if (MatchParameters (mparams, pdc, 1))
+						return md;
+				}
+			}
+			return null;
+		}
+
+		Dictionary<MethodReference, MethodReference> prefered_overloads = new Dictionary<MethodReference, MethodReference> ();
+
+		MethodReference GetPreferedOverride (MethodReference method)
+		{
+			MethodReference prefered = null;
+			if (!prefered_overloads.TryGetValue (method, out prefered)) {
+				prefered = LookForPreferredOverride (method);
+				prefered_overloads.Add (method, prefered);
+			}
+			return prefered;
+		}
+
+		public RuleResult CheckMethod (MethodDefinition method)
+		{
+			if (!method.HasBody)
+				return RuleResult.DoesNotApply;
+
+			// exclude methods that don't have calls
+			if (!OpCodeBitmask.Calls.Intersect (OpCodeEngine.GetBitmask (method)))
+				return RuleResult.DoesNotApply;
+
+			foreach (Instruction ins in method.Body.Instructions) {
+				MethodReference mr = ins.GetMethod ();
+				// some inheritors have special cases to deal with
+				if (IsSpecialCase (mr))
+					continue;
+
+				// check if the call starts or ends with our 'prefered' override
+				if (mr.HasParameters) {
+					Collection<ParameterDefinition> pdc = mr.Parameters;
+					if (CheckFirstParameter && IsPrefered (pdc [0].ParameterType))
+						continue;
+					if (IsPrefered (pdc [pdc.Count - 1].ParameterType))
+						continue;
+				}
+
+				// if not check if such a 'prefered' override exists to replace the called method
+				MethodReference prefered = GetPreferedOverride (mr);
+				if (prefered != null)
+					Report (method, ins, prefered);
+			}
+
+			return Runner.CurrentRuleResult;
+		}
+	}
+}
+
diff --git a/gendarme/rules/Gendarme.Rules.Globalization/PreferStringComparisonOverrideRule.cs b/gendarme/rules/Gendarme.Rules.Globalization/PreferStringComparisonOverrideRule.cs
new file mode 100644
index 0000000..3ed3dfa
--- /dev/null
+++ b/gendarme/rules/Gendarme.Rules.Globalization/PreferStringComparisonOverrideRule.cs
@@ -0,0 +1,82 @@
+//
+// Gendarme.Rules.Globalization.PreferStringComparisonOverrideRule
+//
+// Authors:
+//	Sebastien Pouliot <sebastien at ximian.com>
+//
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Globalization;
+
+using Mono.Cecil;
+using Mono.Cecil.Cil;
+using Gendarme.Framework;
+using Gendarme.Framework.Rocks;
+
+namespace Gendarme.Rules.Globalization {
+
+	/// <summary>
+	/// This rule detects calls to method that could be changed to call an <c>override</c> accepting an
+	/// extra <c>System.StringComparison</c> parameter. Using the <c>override</c> makes the code easier
+	/// to maintain since it makes the intent clear on how the string needs to be compared.
+	/// It is even more important since the default string comparison rules have changed between
+	/// .NET 2.0 and .NET 4.0.
+	/// </summary>
+	/// <example>
+	/// Bad example:
+	/// <code>
+	/// public bool Check (string name)
+	/// {
+	///	// it's not clear if the string comparison should be culture sensitive or not
+	///	return (String.Compare (name, "Software") == 0);
+	/// }
+	/// </code>
+	/// </example>
+	/// <example>
+	/// Good example:
+	/// <code>
+	/// public bool Check (string name)
+	/// {
+	///	return (String.Compare (name, "Software", StringComparison.CurrentCulture) == 0);
+	/// }
+	/// </code>
+	/// </example>
+	[Problem ("A call is made to a method for which an override, accepting an extra StringComparison, is available")]
+	[Solution ("Specify how the string should be compared by adding the right StringComparison value to the call")]
+	[FxCopCompatibility ("Microsoft.Globalization", "CA1307:SpecifyStringComparison")]
+	public class PreferStringComparisonOverrideRule : PreferOverrideBaseRule {
+
+		protected override bool IsPrefered (TypeReference type)
+		{
+			return type.IsNamed ("System", "StringComparison");
+		}
+
+		protected override void Report (MethodDefinition method, Instruction instruction, MethodReference prefered)
+		{
+			string msg = String.Format (CultureInfo.InvariantCulture, 
+				"Consider using the perfered '{0}' override.", prefered.GetFullName ());
+			Runner.Report (method, instruction, Severity.Medium, Confidence.High, msg);
+		}
+	}
+}
diff --git a/gendarme/rules/Gendarme.Rules.Globalization/SatelliteResourceMismatchRule.cs b/gendarme/rules/Gendarme.Rules.Globalization/SatelliteResourceMismatchRule.cs
index 86af3a4..5829b97 100644
--- a/gendarme/rules/Gendarme.Rules.Globalization/SatelliteResourceMismatchRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Globalization/SatelliteResourceMismatchRule.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 using System.IO;
 using System.Text;
 using System.Resources;
@@ -81,8 +82,10 @@ namespace Gendarme.Rules.Globalization {
 				EmbeddedResource mainResource;
 				string resourceName = GetNameInSatellite (resource, culture);
 				if (!mainAssemblyResourceCache.TryGetMainResourceFile (resourceName, out mainResource)) {
-					Runner.Report (satellite, Severity.Low, Confidence.High,
-						String.Format ("The resource file {0} exist in the satellite assembly but not in the main assembly", resource.Name));
+					string msg = String.Format (CultureInfo.InvariantCulture, 
+						"The resource file {0} exist in the satellite assembly but not in the main assembly", 
+						resource.Name);
+					Runner.Report (satellite, Severity.Low, Confidence.High, msg);
 					continue;
 				}
 
@@ -102,16 +105,20 @@ namespace Gendarme.Rules.Globalization {
 					object satelliteValue = entry.Value;
 					object mainValue;
 					if (!mainAssemblyResourceCache.TryGetMainResource (mainResource, resourceName, out mainValue)) {
-						Runner.Report (satelliteAssembly, Severity.Low, Confidence.High,
-							String.Format ("The resource {0} in the file {1} exist in the satellite assembly but not in the main assembly", resourceName, satelliteResource.Name));
+						string msg = String.Format (CultureInfo.InvariantCulture, 
+							"The resource {0} in the file {1} exist in the satellite assembly but not in the main assembly", 
+							resourceName, satelliteResource.Name);
+						Runner.Report (satelliteAssembly, Severity.Low, Confidence.High, msg);
 						continue;
 					}
 
 					Type satelliteType = satelliteValue.GetType ();
 					Type mainType = mainValue.GetType ();
 					if (!satelliteType.Equals (mainType)) {
-						Runner.Report (satelliteAssembly, Severity.High, Confidence.High,
-							String.Format ("The resource {0} in the file {1} is of type {2} in the satellite assembly but of type {3} in the main assembly", resourceName, satelliteResource.Name, satelliteType, mainType));
+						string msg = String.Format (CultureInfo.InvariantCulture, 
+							"The resource {0} in the file {1} is of type {2} in the satellite assembly but of type {3} in the main assembly", 
+							resourceName, satelliteResource.Name, satelliteType, mainType);
+						Runner.Report (satelliteAssembly, Severity.High, Confidence.High, msg);
 						continue;
 					}
 
@@ -119,9 +126,12 @@ namespace Gendarme.Rules.Globalization {
 						Bitmask<int> mainParameters = GetStringFormatExpectedParameters ((string) mainValue);
 						Bitmask<int> satelliteParameters = GetStringFormatExpectedParameters ((string) satelliteValue);
 
-						if (!mainParameters.Equals (satelliteParameters))
-							Runner.Report (satelliteAssembly, Severity.High, Confidence.Normal,
-								String.Format ("The string resource {0} in the file {1} does not use the same string format parameters in the satellite and main assemblies", resourceName, satelliteResource.Name));
+						if (!mainParameters.Equals (satelliteParameters)) {
+							string msg = String.Format (CultureInfo.InvariantCulture, 
+								"The string resource {0} in the file {1} does not use the same string format parameters in the satellite and main assemblies", 
+								resourceName, satelliteResource.Name);
+							Runner.Report (satelliteAssembly, Severity.High, Confidence.Normal, msg);
+						}
 					}
 				}
 			}
@@ -203,7 +213,7 @@ namespace Gendarme.Rules.Globalization {
 
 			string cultureExtension = "." + culture;
 
-			if (!nameWithoutExtension.EndsWith (cultureExtension))
+			if (!nameWithoutExtension.EndsWith (cultureExtension, StringComparison.Ordinal))
 				return name;
 
 			string nameWithoutCulture = Path.GetFileNameWithoutExtension (nameWithoutExtension);
@@ -212,7 +222,7 @@ namespace Gendarme.Rules.Globalization {
 
 		private static bool IsResXResources (Resource resource)
 		{
-			return resource.Name.EndsWith (resXResourcesExtension);
+			return resource.Name.EndsWith (resXResourcesExtension, StringComparison.Ordinal);
 		}
 
 		private sealed class AssemblyResourceCache {
diff --git a/gendarme/rules/Gendarme.Rules.Globalization/Test/InternalResource.Designer.cs b/gendarme/rules/Gendarme.Rules.Globalization/Test/InternalResource.Designer.cs
index d99d5fe..fb95375 100644
--- a/gendarme/rules/Gendarme.Rules.Globalization/Test/InternalResource.Designer.cs
+++ b/gendarme/rules/Gendarme.Rules.Globalization/Test/InternalResource.Designer.cs
@@ -1,7 +1,7 @@
-//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:2.0.50727.4952
+//     Runtime Version:4.0.30319.1
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -19,7 +19,7 @@ namespace Tests.Rules.Globalization {
     // class via a tool like ResGen or Visual Studio.
     // To add or remove a member, edit your .ResX file then rerun ResGen
     // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
     internal class InternalResource {
diff --git a/gendarme/rules/Gendarme.Rules.Globalization/Test/Makefile.in b/gendarme/rules/Gendarme.Rules.Globalization/Test/Makefile.in
index a2eb74d..f5586e5 100644
--- a/gendarme/rules/Gendarme.Rules.Globalization/Test/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Globalization/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Globalization/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Globalization/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Globalization/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Globalization/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -298,6 +338,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -306,18 +348,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -352,6 +404,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Globalization/Test/PreferIFormatProviderOverrideTest.cs b/gendarme/rules/Gendarme.Rules.Globalization/Test/PreferIFormatProviderOverrideTest.cs
new file mode 100644
index 0000000..83fa855
--- /dev/null
+++ b/gendarme/rules/Gendarme.Rules.Globalization/Test/PreferIFormatProviderOverrideTest.cs
@@ -0,0 +1,219 @@
+//
+// Unit tests for PreferIFormatProviderOverrideRule
+//
+// Authors:
+//	Sebastien Pouliot <sebastien at ximian.com>
+//
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Globalization;
+using System.Reflection;
+using System.Resources;
+
+using Gendarme.Rules.Globalization;
+using NUnit.Framework;
+
+using Test.Rules.Definitions;
+using Test.Rules.Fixtures;
+
+namespace Tests.Rules.Globalization {
+
+	class IFormatProviderTestCases {
+
+		public void Empty ()
+		{
+		}
+
+		public void Empty (IFormatProvider format)
+		{
+		}
+
+		public void BadEmpty ()
+		{
+			Empty ();
+		}
+
+		public void CorrectEmpty ()
+		{
+			Empty (null);
+		}
+
+		public void First (object obj)
+		{
+		}
+
+		public void First (IFormatProvider format, object obj)
+		{
+		}
+
+		public void BadFirst ()
+		{
+			First (null);
+		}
+
+		public void CorrectFirst ()
+		{
+			First (null, null);
+		}
+
+		public void Last (object obj)
+		{
+		}
+
+		public void Last (object obj, IFormatProvider format)
+		{
+		}
+
+		public void BadLast ()
+		{
+			Last (null);
+		}
+
+		public void CorrectLast ()
+		{
+			Last (null, null);
+		}
+	}
+
+	class CultureInfoTestCases {
+
+		public void Empty ()
+		{
+		}
+
+		public void Empty (CultureInfo info)
+		{
+		}
+
+		public void BadEmpty ()
+		{
+			Empty ();
+		}
+
+		public void CorrectEmpty ()
+		{
+			Empty (null);
+		}
+
+		public void First (object obj)
+		{
+		}
+
+		public void First (CultureInfo info, object obj)
+		{
+		}
+
+		public void BadFirst ()
+		{
+			First (null);
+		}
+
+		public void CorrectFirst ()
+		{
+			First (null, null);
+		}
+
+		public void Last (object obj)
+		{
+		}
+
+		public void Last (object obj, CultureInfo info)
+		{
+		}
+
+		public void BadLast ()
+		{
+			Last (null);
+		}
+
+		public void CorrectLast ()
+		{
+			Last (null, null);
+		}
+	}
+
+	[TestFixture]
+	public class PreferIFormatProviderOverrideTest : MethodRuleTestFixture<PreferIFormatProviderOverrideRule> {
+
+		[Test]
+		public void DoesNotApply ()
+		{
+			AssertRuleDoesNotApply (SimpleMethods.EmptyMethod);
+			AssertRuleDoesNotApply (SimpleMethods.ExternalMethod);
+		}
+
+		[Test]
+		public void Success ()
+		{
+			AssertRuleSuccess<IFormatProviderTestCases> ("CorrectEmpty");
+			AssertRuleSuccess<IFormatProviderTestCases> ("CorrectFirst");
+			AssertRuleSuccess<IFormatProviderTestCases> ("CorrectLast");
+
+			AssertRuleSuccess<CultureInfoTestCases> ("CorrectEmpty");
+			AssertRuleSuccess<CultureInfoTestCases> ("CorrectFirst");
+			AssertRuleSuccess<CultureInfoTestCases> ("CorrectLast");
+		}
+
+		[Test]
+		public void Failure ()
+		{
+			AssertRuleFailure<IFormatProviderTestCases> ("BadEmpty", 1);
+			AssertRuleFailure<IFormatProviderTestCases> ("BadFirst", 1);
+			AssertRuleFailure<IFormatProviderTestCases> ("BadLast", 1);
+
+			AssertRuleFailure<CultureInfoTestCases> ("BadEmpty", 1);
+			AssertRuleFailure<CultureInfoTestCases> ("BadFirst", 1);
+			AssertRuleFailure<CultureInfoTestCases> ("BadLast", 1);
+		}
+
+		void Ignored (ResourceManager rm)
+		{
+			rm.GetObject ("a");
+			rm.GetObject ("a", CultureInfo.CurrentCulture);
+			rm.GetString ("b");
+			rm.GetString ("b", CultureInfo.InvariantCulture);
+		}
+
+		string Params ()
+		{
+			// the overload to use is: Format(IFormatProvider, string, params object []);
+			return String.Format ("{0} {1} {2}", 1, 2, 3);
+		}
+
+		void NoSimpleOverload (FieldInfo fi)
+		{
+			// the overload with a CultureInfo is SetValue (object, object, BindingFlags, Binder, CultureInfo);
+			// and is not simply an "extra" parameter
+			fi.SetValue (new object (), 1);
+		}
+
+		[Test]
+		public void SpecialCases ()
+		{
+			AssertRuleSuccess<PreferIFormatProviderOverrideTest> ("Ignored");
+			AssertRuleFailure<PreferIFormatProviderOverrideTest> ("Params", 1);
+			AssertRuleSuccess<PreferIFormatProviderOverrideTest> ("NoSimpleOverload");
+		}
+	}
+}
diff --git a/gendarme/rules/Gendarme.Rules.Globalization/Test/PreferStringComparisonOverrideTest.cs b/gendarme/rules/Gendarme.Rules.Globalization/Test/PreferStringComparisonOverrideTest.cs
new file mode 100644
index 0000000..722ff32
--- /dev/null
+++ b/gendarme/rules/Gendarme.Rules.Globalization/Test/PreferStringComparisonOverrideTest.cs
@@ -0,0 +1,366 @@
+//
+// Unit tests for PreferStringComparisonOverrideRule
+//
+// Authors:
+//	Sebastien Pouliot <sebastien at ximian.com>
+//
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Gendarme.Rules.Globalization;
+using NUnit.Framework;
+
+using Test.Rules.Definitions;
+using Test.Rules.Fixtures;
+
+namespace Tests.Rules.Globalization {
+
+	[TestFixture]
+	public class PreferStringComparisonOverrideTest : MethodRuleTestFixture<PreferStringComparisonOverrideRule> {
+
+		[Test]
+		public void DoesNotApply ()
+		{
+			AssertRuleDoesNotApply (SimpleMethods.EmptyMethod);
+			AssertRuleDoesNotApply (SimpleMethods.ExternalMethod);
+		}
+
+		public class InstanceWithoutOverride {
+
+			public bool Compare (string s1, string s2)
+			{
+				return false;
+			}
+
+			public void Test ()
+			{
+				if (Compare ("a", "b"))
+					Console.WriteLine ();
+			}
+		}
+
+		public class Base {
+
+			public bool Compare (string s1, string s2)
+			{
+				return false;
+			}
+
+			public void TestBase ()
+			{
+				if (Compare ("a", "b"))
+					Console.WriteLine ();
+			}
+		}
+
+		public class Inherited : Base {
+			public bool Compare (string s1, string s2, StringComparison comparison)
+			{
+				return true;
+			}
+
+			public void TestInherited ()
+			{
+				// from IL this is a call to Base.Compare so the override is not seen
+				// note: fxcop also miss this one
+				if (Compare ("a", "b"))
+					Console.WriteLine ();
+			}
+		}
+
+		public class StaticHelperWithoutOverride {
+
+			// no alternative
+			public static bool StaticCompare (string s1, string s2)
+			{
+				return false;
+			}
+
+			public void Test ()
+			{
+				if (StaticCompare ("a", "b"))
+					Console.WriteLine ();
+			}
+		}
+
+		public class StaticHelperWithExtraParameterInOverride {
+
+			public static bool StaticCompare (string s1, string s2)
+			{
+				return false;
+			}
+
+			// the extra parameter disqualify the override
+			public static bool StaticCompare (string s1, string s2, bool value, StringComparison comparison)
+			{
+				return value;
+			}
+
+			// the extra parameter disqualify the override
+			public static bool StaticCompare (string s1, string s2, StringComparison comparison, bool value)
+			{
+				return value;
+			}
+
+			public void Test ()
+			{
+				if (StaticCompare ("a", "b"))
+					Console.WriteLine ();
+			}
+		}
+
+		public class Weird {
+			public bool Compare (StringComparison a, StringComparison b)
+			{
+				return (a == b);
+			}
+
+			public void Test ()
+			{
+				if (Compare (StringComparison.CurrentCulture, StringComparison.CurrentCultureIgnoreCase))
+					Console.WriteLine ();
+			}
+		}
+
+		[Test]
+		public void Success ()
+		{
+			AssertRuleSuccess<InstanceWithoutOverride> ("Test");
+
+			AssertRuleSuccess<Base> ("TestBase");
+			AssertRuleSuccess<Inherited> ("TestInherited");
+
+			AssertRuleSuccess<StaticHelperWithoutOverride> ("Test");
+			AssertRuleSuccess<StaticHelperWithExtraParameterInOverride> ("Test");
+
+			AssertRuleSuccess<Weird> ("Test");
+		}
+
+		public class InstanceWithOverride {
+
+			public bool Compare (string s1, string s2)
+			{
+				return false;
+			}
+
+			public bool Compare (string s1, string s2, StringComparison comparison)
+			{
+				return true;
+			}
+
+			// bad
+			public void Test ()
+			{
+				if (Compare ("a", "b"))
+					Console.WriteLine ();
+			}
+		}
+
+		public class StaticHelper {
+
+			public static bool StaticCompare (string s1, string s2)
+			{
+				return false;
+			}
+
+			// we have an alternative
+			public static bool StaticCompare (string s1, string s2, StringComparison comparison)
+			{
+				return true;
+			}
+
+			// bad
+			public void Test ()
+			{
+				if (StaticHelper.StaticCompare ("a", "b"))
+					Console.WriteLine ();
+			}
+		}
+
+		public class NonString {
+
+			public bool Kompare (char [] s1, char [] s2)
+			{
+				return false;
+			}
+
+			public bool Kompare (char [] s1, char [] s2, StringComparison comparison)
+			{
+				return true;
+			}
+
+			// bad
+			public void TestCharArray ()
+			{
+				if (Kompare (new char [] { }, new char [] { }))
+					Console.WriteLine ();
+			}
+
+			public bool KomparInt (int a, int b)
+			{
+				return false;
+			}
+
+			public bool KomparInt (int a, int b, StringComparison comparison)
+			{
+				return true;
+			}
+
+			// bad
+			public void TestInt ()
+			{
+				if (KomparInt (0, 0))
+					Console.WriteLine ();
+			}
+		}
+
+		public class ExtraParameters {
+
+			public bool Kompare (int level, string s1, string s2)
+			{
+				return false;
+			}
+
+			public bool Kompare (int level, string s1, string s2, StringComparison comparison)
+			{
+				return true;
+			}
+
+			// bad
+			public void TestExtraFirst ()
+			{
+				if (Kompare (0, "a", "B"))
+					Console.WriteLine ();
+			}
+
+			public bool Kompar (string s1, int start, string s2)
+			{
+				return false;
+			}
+
+			public bool Kompar (string s1, int start, string s2, StringComparison comparison)
+			{
+				return true;
+			}
+
+			// bad
+			public void TestExtraMid ()
+			{
+				if (Kompar ("a", 0, "B"))
+					Console.WriteLine ();
+			}
+
+			public bool Komparz (string s1, string s2, int end)
+			{
+				return false;
+			}
+
+			// note: parameter name mismatch
+			public bool Komparz (string s1, string s2, int start, StringComparison comparison)
+			{
+				return true;
+			}
+
+			// bad
+			public void TestExtraEnd ()
+			{
+				if (Komparz ("a", "B", 0))
+					Console.WriteLine ();
+			}
+		}
+
+		public class FewParameters {
+
+			public bool Compare ()
+			{
+				return false;
+			}
+
+			public bool Compare (StringComparison comparison)
+			{
+				return true;
+			}
+
+			// bad
+			public void TestNone ()
+			{
+				if (Compare ())
+					Console.WriteLine ();
+			}
+
+			public bool Compare (object o)
+			{
+				return (o == null);
+			}
+
+			public bool Compare (object o, StringComparison comparison)
+			{
+				return true;
+			}
+
+			// bad
+			public void TestSingle ()
+			{
+				if (Compare (null))
+					Console.WriteLine ();
+			}
+
+			public bool Compare (short a, long b)
+			{
+				return (a == b);
+			}
+
+			public bool Compare (short a, long b, StringComparison comparison)
+			{
+				return true;
+			}
+
+			// bad
+			public void TestDifferent ()
+			{
+				if (Compare (1, 1))
+					Console.WriteLine ();
+			}
+		}
+
+		[Test]
+		public void Failure ()
+		{
+			AssertRuleFailure<InstanceWithOverride> ("Test");
+			
+			AssertRuleFailure<StaticHelper> ("Test");
+
+			AssertRuleFailure<NonString> ("TestCharArray");
+			AssertRuleFailure<NonString> ("TestInt");
+
+			AssertRuleFailure<ExtraParameters> ("TestExtraFirst");
+			AssertRuleFailure<ExtraParameters> ("TestExtraMid");
+			AssertRuleFailure<ExtraParameters> ("TestExtraEnd");
+
+			AssertRuleFailure<FewParameters> ("TestNone");
+			AssertRuleFailure<FewParameters> ("TestSingle");
+			AssertRuleFailure<FewParameters> ("TestDifferent");
+		}
+	}
+}
diff --git a/gendarme/rules/Gendarme.Rules.Globalization/Test/PublicResource.Designer.cs b/gendarme/rules/Gendarme.Rules.Globalization/Test/PublicResource.Designer.cs
index 435893c..369bf20 100644
--- a/gendarme/rules/Gendarme.Rules.Globalization/Test/PublicResource.Designer.cs
+++ b/gendarme/rules/Gendarme.Rules.Globalization/Test/PublicResource.Designer.cs
@@ -1,7 +1,7 @@
-//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:2.0.50727.4952
+//     Runtime Version:4.0.30319.1
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -19,7 +19,7 @@ namespace Tests.Rules.Globalization {
     // class via a tool like ResGen or Visual Studio.
     // To add or remove a member, edit your .ResX file then rerun ResGen
     // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
     public class PublicResource {
diff --git a/gendarme/rules/Gendarme.Rules.Globalization/Test/Resource.Designer.cs b/gendarme/rules/Gendarme.Rules.Globalization/Test/Resource.Designer.cs
index 2edd1e0..8847e59 100644
--- a/gendarme/rules/Gendarme.Rules.Globalization/Test/Resource.Designer.cs
+++ b/gendarme/rules/Gendarme.Rules.Globalization/Test/Resource.Designer.cs
@@ -1,7 +1,7 @@
-//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:2.0.50727.4952
+//     Runtime Version:4.0.30319.1
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -19,7 +19,7 @@ namespace Tests.Rules.Globalization {
     // class via a tool like ResGen or Visual Studio.
     // To add or remove a member, edit your .ResX file then rerun ResGen
     // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
     internal class Resource {
diff --git a/gendarme/rules/Gendarme.Rules.Globalization/Test/Tests.Rules.Globalization.csproj b/gendarme/rules/Gendarme.Rules.Globalization/Test/Tests.Rules.Globalization.csproj
index 063810d..d1c6107 100644
--- a/gendarme/rules/Gendarme.Rules.Globalization/Test/Tests.Rules.Globalization.csproj
+++ b/gendarme/rules/Gendarme.Rules.Globalization/Test/Tests.Rules.Globalization.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Tests.Rules.Globalization</RootNamespace>
     <AssemblyName>Tests.Rules.Globalization</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -21,6 +41,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -29,6 +50,7 @@
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
@@ -128,6 +150,23 @@
   <ItemGroup>
     <Folder Include="Properties\" />
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability.Com/AutoLayoutTypesShouldNotBeComVisibleRule.cs b/gendarme/rules/Gendarme.Rules.Interoperability.Com/AutoLayoutTypesShouldNotBeComVisibleRule.cs
index 5de0801..e6ae04b 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability.Com/AutoLayoutTypesShouldNotBeComVisibleRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Interoperability.Com/AutoLayoutTypesShouldNotBeComVisibleRule.cs
@@ -37,9 +37,11 @@ using Gendarme.Framework.Rocks;
 namespace Gendarme.Rules.Interoperability.Com {
 
 	/// <summary>
-	///  This rule checks for ComVisible value types which have StructLayout
-	///  attribute set to LayoutKind.Auto because auto layout can change 
-	///  between Mono and .NET or even between releases of the .NET/Mono frameworks
+	/// This rule checks for <c>[System.Runtime.InteropServices.ComVisible]</c> decorated value 
+	/// types which have <c>[System.Runtime.InteropServices.StructLayout]</c> attribute set to 
+	/// <c>System.Runtime.InteropServices.LayoutKind</c>.<c>Auto</c> because auto layout can 
+	/// change between Mono and .NET or even between releases of the .NET/Mono frameworks.
+	/// Note that this does not affect <c>System.Enum</c>-based types.
 	/// </summary>
 	/// <example>
 	/// Bad example:
@@ -80,7 +82,7 @@ namespace Gendarme.Rules.Interoperability.Com {
 
 		public RuleResult CheckType (TypeDefinition type)
 		{
-			if (!type.IsValueType || !type.HasCustomAttributes || 
+			if (type.IsEnum || !type.IsValueType || !type.HasCustomAttributes || 
 				(!type.IsPublic && !type.IsNestedPublic) || type.HasGenericParameters)
 				return RuleResult.DoesNotApply;
 
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability.Com/AvoidInt64ArgumentsInComVisibleMethodsRule.cs b/gendarme/rules/Gendarme.Rules.Interoperability.Com/AvoidInt64ArgumentsInComVisibleMethodsRule.cs
index 5c13b94..5ef8900 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability.Com/AvoidInt64ArgumentsInComVisibleMethodsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Interoperability.Com/AvoidInt64ArgumentsInComVisibleMethodsRule.cs
@@ -106,7 +106,7 @@ namespace Gendarme.Rules.Interoperability.Com {
 				return RuleResult.DoesNotApply;
 
 			foreach (ParameterDefinition parameter in method.Parameters) {
-				if (parameter.ParameterType.FullName == "System.Int64")
+				if (parameter.ParameterType.IsNamed ("System", "Int64"))
 					Runner.Report (parameter, Severity.Medium, Confidence.Total);
 			}
 
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability.Com/AvoidStaticMembersInComVisibleTypesRule.cs b/gendarme/rules/Gendarme.Rules.Interoperability.Com/AvoidStaticMembersInComVisibleTypesRule.cs
index 9a22d1b..be412d2 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability.Com/AvoidStaticMembersInComVisibleTypesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Interoperability.Com/AvoidStaticMembersInComVisibleTypesRule.cs
@@ -118,7 +118,7 @@ namespace Gendarme.Rules.Interoperability.Com {
 		{
 			return !(!method.IsStatic || !method.IsPublic || method.HasGenericParameters || 
 				method.IsAddOn || method.IsRemoveOn || method.IsGetter || method.IsSetter ||
-				((method.Attributes & MethodAttributes.SpecialName) != 0 && method.Name.StartsWith ("op_")) ||
+				((method.Attributes & MethodAttributes.SpecialName) != 0 && method.Name.StartsWith ("op_", StringComparison.Ordinal)) ||
 				method.DeclaringType.HasGenericParameters || method.DeclaringType.IsEnum ||
 				method.DeclaringType.IsInterface);
 		}
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability.Com/ComRocks.cs b/gendarme/rules/Gendarme.Rules.Interoperability.Com/ComRocks.cs
index e25404c..5c1de40 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability.Com/ComRocks.cs
+++ b/gendarme/rules/Gendarme.Rules.Interoperability.Com/ComRocks.cs
@@ -32,6 +32,8 @@
 
 using Mono.Cecil;
 
+using Gendarme.Framework.Rocks;
+
 namespace Gendarme.Rules.Interoperability.Com {
 
 	/// <summary>
@@ -56,7 +58,7 @@ namespace Gendarme.Rules.Interoperability.Com {
 					// any attribute without arguments can be skipped
 					if (!attribute.HasConstructorArguments)
 						continue;
-					if (attribute.Constructor.DeclaringType.FullName != "System.Runtime.InteropServices.ComVisibleAttribute")
+					if (!attribute.Constructor.DeclaringType.IsNamed ("System.Runtime.InteropServices", "ComVisibleAttribute"))
 						continue;
 					return (bool) attribute.ConstructorArguments[0].Value;
 				}
@@ -74,6 +76,10 @@ namespace Gendarme.Rules.Interoperability.Com {
 		// considering nested types, assemblies attributes and default values
 		public static bool IsTypeComVisible (this TypeDefinition self)
 		{
+			// [ComVisible] attribute will be ignored on non-visible types
+			if (!self.IsVisible ())
+				return false;
+
 			return (self.IsComVisible () ?? self.Module.Assembly.IsComVisible () ?? true);
 		}
 	}
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability.Com/ComVisibleShouldInheritFromComVisibleRule.cs b/gendarme/rules/Gendarme.Rules.Interoperability.Com/ComVisibleShouldInheritFromComVisibleRule.cs
index 8e46c99..46291d5 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability.Com/ComVisibleShouldInheritFromComVisibleRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Interoperability.Com/ComVisibleShouldInheritFromComVisibleRule.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 using System.Runtime.InteropServices;
 
 using Mono.Cecil;
@@ -101,9 +102,9 @@ namespace Gendarme.Rules.Interoperability.Com {
 
 			TypeDefinition baseType = type.BaseType.Resolve ();
 			if ((baseType != null) && !baseType.IsTypeComVisible ()) {
-				Runner.Report (type, Severity.High, Confidence.Total,
-					String.Format ("Type is derived from invisible from COM type {0}",
-						baseType.FullName));
+				string msg = String.Format (CultureInfo.InvariantCulture, 
+					"Type is derived from invisible from COM type {0}", baseType.GetFullName ());
+				Runner.Report (type, Severity.High, Confidence.Total, msg);
 			}
 			return Runner.CurrentRuleResult;
 		}
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability.Com/DoNotUseAutoDualClassInterfaceTypeRule.cs b/gendarme/rules/Gendarme.Rules.Interoperability.Com/DoNotUseAutoDualClassInterfaceTypeRule.cs
index 2272ad1..31e43a0 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability.Com/DoNotUseAutoDualClassInterfaceTypeRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Interoperability.Com/DoNotUseAutoDualClassInterfaceTypeRule.cs
@@ -111,15 +111,14 @@ namespace Gendarme.Rules.Interoperability.Com {
 		private static ClassInterfaceType? GetClassInterfaceAttributeValue (ICustomAttributeProvider obj)
 		{
 			foreach (CustomAttribute attribute in obj.CustomAttributes) {
-				// ClassInterfaceAttribute has a two ctors each taking an argument (ClassInterfaceType or short)
 				// http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.classinterfaceattribute.aspx
 				// any attribute without arguments can be skipped
 				if (!attribute.HasConstructorArguments)
 					continue;
-				if (attribute.AttributeType.FullName != "System.Runtime.InteropServices.ClassInterfaceAttribute")
+				if (!attribute.AttributeType.IsNamed ("System.Runtime.InteropServices", "ClassInterfaceAttribute"))
 					continue;
 				var ctorArgs = attribute.ConstructorArguments;
-				if (ctorArgs [0].Type.FullName == "System.Int16")
+				if (ctorArgs [0].Type.IsNamed ("System", "Int16"))
 					return (ClassInterfaceType)(short)ctorArgs [0].Value;
 				return (ClassInterfaceType)(int)ctorArgs [0].Value;
 			}
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability.Com/Gendarme.Rules.Interoperability.Com.csproj b/gendarme/rules/Gendarme.Rules.Interoperability.Com/Gendarme.Rules.Interoperability.Com.csproj
index d39ca71..b0fbc53 100755
--- a/gendarme/rules/Gendarme.Rules.Interoperability.Com/Gendarme.Rules.Interoperability.Com.csproj
+++ b/gendarme/rules/Gendarme.Rules.Interoperability.Com/Gendarme.Rules.Interoperability.Com.csproj
@@ -1,78 +1,117 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{468F7043-C0D5-480F-88A1-A262EC324E5E}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Gendarme.Rules.Interoperability.Com</RootNamespace>
-    <AssemblyName>Gendarme.Rules.Interoperability.Com</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>..\..\console\bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Interoperability.Com.xml</DocumentationFile>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>..\..\console\bin\Release\</OutputPath>
-    <DefineConstants>TRACE;RELEASE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Interoperability.Com.xml</DocumentationFile>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\..\..\cecil\Mono.Cecil.csproj">
-      <Project>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</Project>
-      <Name>Mono.Cecil</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\framework\Gendarme.Framework.csproj">
-      <Project>{CD6818D5-B398-486C-B180-92A07B143AFD}</Project>
-      <Name>Gendarme.Framework</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\..\AssemblyStaticInfo.cs">
-      <Link>AssemblyStaticInfo.cs</Link>
-    </Compile>
-    <Compile Include="AutoLayoutTypesShouldNotBeComVisibleRule.cs" />
-    <Compile Include="AvoidInt64ArgumentsInComVisibleMethodsRule.cs" />
-    <Compile Include="AvoidNonPublicFieldsInComVisibleValueTypesRule.cs" />
-    <Compile Include="AvoidOverloadsInComVisibleInterfacesRule.cs" />
-    <Compile Include="AvoidStaticMembersInComVisibleTypesRule.cs" />
-    <Compile Include="ComRocks.cs" />
-    <Compile Include="ComVisibleShouldInheritFromComVisibleRule.cs" />
-    <Compile Include="ComVisibleTypesShouldBeCreatableRule.cs" />
-    <Compile Include="DoNotUseAutoDualClassInterfaceTypeRule.cs" />
-    <Compile Include="MarkComSourceInterfacesAsIDispatchRule.cs" />
-    <Compile Include="ReviewComRegistrationMethodsRule.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <Folder Include="Properties\" />
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{468F7043-C0D5-480F-88A1-A262EC324E5E}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Gendarme.Rules.Interoperability.Com</RootNamespace>
+    <AssemblyName>Gendarme.Rules.Interoperability.Com</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\console\bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Interoperability.Com.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\..\console\bin\Release\</OutputPath>
+    <DefineConstants>TRACE;RELEASE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Interoperability.Com.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\..\cecil\Mono.Cecil.csproj">
+      <Project>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</Project>
+      <Name>Mono.Cecil</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\framework\Gendarme.Framework.csproj">
+      <Project>{CD6818D5-B398-486C-B180-92A07B143AFD}</Project>
+      <Name>Gendarme.Framework</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\AssemblyStaticInfo.cs">
+      <Link>AssemblyStaticInfo.cs</Link>
+    </Compile>
+    <Compile Include="AutoLayoutTypesShouldNotBeComVisibleRule.cs" />
+    <Compile Include="AvoidInt64ArgumentsInComVisibleMethodsRule.cs" />
+    <Compile Include="AvoidNonPublicFieldsInComVisibleValueTypesRule.cs" />
+    <Compile Include="AvoidOverloadsInComVisibleInterfacesRule.cs" />
+    <Compile Include="AvoidStaticMembersInComVisibleTypesRule.cs" />
+    <Compile Include="ComRocks.cs" />
+    <Compile Include="ComVisibleShouldInheritFromComVisibleRule.cs" />
+    <Compile Include="ComVisibleTypesShouldBeCreatableRule.cs" />
+    <Compile Include="DoNotUseAutoDualClassInterfaceTypeRule.cs" />
+    <Compile Include="MarkComSourceInterfacesAsIDispatchRule.cs" />
+    <Compile Include="ReviewComRegistrationMethodsRule.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Properties\" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
   </Target>
   <Target Name="AfterBuild">
   </Target>
-  -->
+  -->
 </Project>
\ No newline at end of file
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability.Com/Makefile.in b/gendarme/rules/Gendarme.Rules.Interoperability.Com/Makefile.in
index d9cd743..073d8db 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability.Com/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Interoperability.Com/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(rules_categorydir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
-rules_categorySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(rules_category_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,20 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(rules_documentation_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -130,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -283,14 +359,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Interoperability.Com/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Interoperability.Com/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Interoperability.Com/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Interoperability.Com/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -300,6 +376,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../common.make $(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -308,42 +385,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-rules_categorySCRIPTS: $(rules_category_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_categorydir)" || $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)"
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_categorydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(rules_categorySCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	    $(rules_categorySCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rules_categorydir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rules_categorydir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-rules_categorySCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	done
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(rules_categorydir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -352,7 +450,7 @@ uninstall-rules_documentationDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -369,7 +467,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -377,7 +475,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -403,16 +501,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -420,14 +518,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -439,7 +537,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -448,29 +546,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -491,29 +594,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -536,10 +651,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -547,6 +667,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -566,6 +687,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -575,18 +698,28 @@ install-data-am: install-rules_categorySCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -608,8 +741,8 @@ ps-am:
 uninstall-am: uninstall-rules_categorySCRIPTS \
 	uninstall-rules_documentationDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -629,11 +762,11 @@ uninstall-am: uninstall-rules_categorySCRIPTS \
 
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -642,7 +775,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
@@ -662,6 +795,7 @@ $(rules_doc_source):
 
 clean-local:
 	rm -fr doc
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability.Com/MarkComSourceInterfacesAsIDispatchRule.cs b/gendarme/rules/Gendarme.Rules.Interoperability.Com/MarkComSourceInterfacesAsIDispatchRule.cs
index 8bfc88f..46d932a 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability.Com/MarkComSourceInterfacesAsIDispatchRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Interoperability.Com/MarkComSourceInterfacesAsIDispatchRule.cs
@@ -63,7 +63,7 @@ namespace Gendarme.Rules.Interoperability.Com {
 	[Solution ("Add an InterfaceTypeAttribute set to InterfaceIsIDispatch for all specified interfaces.")]
 	[FxCopCompatibility ("Microsoft.Interoperability", "CA1412:MarkComSourceInterfacesAsIDispatch")]
 	public class MarkComSourceInterfacesAsIDispatchRule : Rule, ITypeRule {
-		private List<TypeDefinition> interfaces = new List<TypeDefinition> ();
+		private SortedDictionary<string, TypeDefinition> interfaces = new SortedDictionary<string, TypeDefinition> ();
 
 		// Iterate through all assemblies and add the interfaces found to a list.
 		private void FindInterfaces ()
@@ -73,33 +73,17 @@ namespace Gendarme.Rules.Interoperability.Com {
 					foreach (TypeDefinition type in module.GetAllTypes ()) {
 						if (!type.IsInterface)
 							continue;
-						interfaces.Add (type);
+						interfaces.Add (type.GetFullName (), type);
 					}
 				}
 			}
 		}
 
-		// Find a TypeDefinition for an interface with the given name.
-		private TypeDefinition FindInterfaceDefinition (string fullName)
-		{
-			foreach (var def in interfaces)
-				if (fullName == def.FullName)
-					return def;
-			return null;
-		}
-
 		// Finds a CustomAttribute on a type from the given name.
-		private static CustomAttribute FindComAttribute (ICustomAttributeProvider type, string name)
+		private static CustomAttribute FindCustomAttribute (ICustomAttributeProvider type, string nameSpace, string name)
 		{
 			foreach (var attribute in type.CustomAttributes) {
-				if (!attribute.HasConstructorArguments)
-					continue;
-
-				TypeReference atype = attribute.AttributeType;
-				if (atype.Namespace != "System.Runtime.InteropServices")
-					continue;
-
-				if (atype.Name == name)
+				if (attribute.AttributeType.IsNamed (nameSpace, name))
 					return attribute;
 			}
 			return null;
@@ -115,7 +99,8 @@ namespace Gendarme.Rules.Interoperability.Com {
 				Runner.Report (def, Severity.High, Confidence.Total, "No attributes are present on a specified interface");
 				return;
 			}
-			var attribute = FindComAttribute (def, "InterfaceTypeAttribute");
+
+			var attribute = FindCustomAttribute (def, "System.Runtime.InteropServices", "InterfaceTypeAttribute");
 			if (attribute == null) {
 				Runner.Report (def, Severity.High, Confidence.Total, "No [InterfaceType] attribute is present on a specified interface");
 				return;
@@ -129,7 +114,9 @@ namespace Gendarme.Rules.Interoperability.Com {
 
 		private void CheckInterface (string interface_name)
 		{
-			CheckInterface (FindInterfaceDefinition (interface_name));
+			TypeDefinition td;
+			if (interfaces.TryGetValue (interface_name, out td))
+				CheckInterface (td);
 		}
 
 		public override void Initialize (IRunner runner)
@@ -145,7 +132,7 @@ namespace Gendarme.Rules.Interoperability.Com {
 			if (!type.IsClass || !type.HasCustomAttributes)
 				return RuleResult.DoesNotApply;
 
-			var attribute = FindComAttribute (type, "ComSourceInterfacesAttribute");
+			var attribute = FindCustomAttribute (type, "System.Runtime.InteropServices", "ComSourceInterfacesAttribute");
 			if (attribute == null)
 				return RuleResult.DoesNotApply;
 			// The attribute's paramemters may be a single null-delimited string, or up to four System.Types.
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability.Com/ReviewComRegistrationMethodsRule.cs b/gendarme/rules/Gendarme.Rules.Interoperability.Com/ReviewComRegistrationMethodsRule.cs
index b46b390..2a5679d 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability.Com/ReviewComRegistrationMethodsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Interoperability.Com/ReviewComRegistrationMethodsRule.cs
@@ -94,9 +94,6 @@ namespace Gendarme.Rules.Interoperability.Com {
 	[FxCopCompatibility ("Microsoft.Interoperability", "CA1411:ComRegistrationMethodsShouldNotBeVisible")]
 	public class ReviewComRegistrationMethodsRule : Rule, ITypeRule {
 
-		const string comRegister = "System.Runtime.InteropServices.ComRegisterFunctionAttribute";
-		const string comUnregister = "System.Runtime.InteropServices.ComUnregisterFunctionAttribute";
-
 		public RuleResult CheckType (TypeDefinition type)
 		{
 			if (type.HasGenericParameters || !type.IsVisible () || !type.IsTypeComVisible ())
@@ -111,12 +108,12 @@ namespace Gendarme.Rules.Interoperability.Com {
 
 				bool foundRegisterUnregisterMethod = false; // method level variable
 				foreach (CustomAttribute attribute in method.CustomAttributes) {
-					var name = attribute.AttributeType.FullName;
-					if (!foundRegister && name == comRegister) {
+					TypeReference atype = attribute.AttributeType;
+					if (!foundRegister && atype.IsNamed ("System.Runtime.InteropServices", "ComRegisterFunctionAttribute")) {
 						foundRegister = true;
 						foundRegisterUnregisterMethod = true;
 					}
-					if (!foundUnregister && name == comUnregister) {
+					if (!foundUnregister && atype.IsNamed ("System.Runtime.InteropServices", "ComUnregisterFunctionAttribute")) {
 						foundUnregister = true;
 						foundRegisterUnregisterMethod = true;
 					}
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/AutoLayoutTypesShouldNotBeComVisibleTest.cs b/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/AutoLayoutTypesShouldNotBeComVisibleTest.cs
index 5cf9e05..3e8e282 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/AutoLayoutTypesShouldNotBeComVisibleTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/AutoLayoutTypesShouldNotBeComVisibleTest.cs
@@ -137,5 +137,23 @@ namespace Test.Rules.Interoperability.Com {
 			AssertRuleDoesNotApply (SimpleTypes.Structure);
 
 		}
+
+		[ComVisible (true)]
+		public enum Enum {
+			Zero = 0
+		}
+
+		[Flags]
+		[ComVisible (true)]
+		public enum Flags {
+			One = 1
+		}
+
+		[Test]
+		public void SpecialCases ()
+		{
+			AssertRuleDoesNotApply<Enum> ();
+			AssertRuleDoesNotApply<Flags> ();
+		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/AvoidStaticMembersInComVisibleTypesTest.cs b/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/AvoidStaticMembersInComVisibleTypesTest.cs
index 191eb2a..a4dbbc2 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/AvoidStaticMembersInComVisibleTypesTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/AvoidStaticMembersInComVisibleTypesTest.cs
@@ -42,7 +42,7 @@ namespace Test.Rules.Interoperability.Com {
 	public class AvoidStaticMembersInComVisibleTypesTest : MethodRuleTestFixture<AvoidStaticMembersInComVisibleTypesRule> {
 
 		[ComVisible (true)]
-		class ComVisibleClass {
+		public class ComVisibleClass {
 			public static void Bad ()
 			{
 			}
@@ -103,20 +103,20 @@ namespace Test.Rules.Interoperability.Com {
 		}
 
 		[ComVisible (false)]
-		class ComInvisibleClass {
+		public class ComInvisibleClass {
 			public static void DoesNotApply ()
 			{
 			}
 		}
 
-		class NoAttributesClass {
+		public class NoAttributesClass {
 			public static void DoesNotApply ()
 			{
 			}
 		}
 
 		[ComVisible (true)]
-		interface Interface {
+		public interface Interface {
 			void DoesNotApply ();
 		}
 
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/ComVisibleShouldInheritFromComVisibleTest.cs b/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/ComVisibleShouldInheritFromComVisibleTest.cs
index 4613f87..ec721ad 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/ComVisibleShouldInheritFromComVisibleTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/ComVisibleShouldInheritFromComVisibleTest.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Collections;
 using System.Runtime.InteropServices;
 
 using Mono.Cecil;
@@ -57,6 +58,10 @@ namespace Test.Rules.Interoperability.Com {
 		public class ComVisibleInheritsFromInvisibleClass : ComInvisibleClass {
 		}
 
+		[ComVisible (true)]
+		class NotReallyComVisibleInheritsFromInvisibleClass : ComInvisibleClass {
+		}
+
 		[ComVisible (false)]
 		public class ComInvisibleInheritsFromVisibleClass : ComVisibleClass {
 		}
@@ -64,9 +69,6 @@ namespace Test.Rules.Interoperability.Com {
 		[Test]
 		public void Good ()
 		{
-			// no ComVisible attributes in inheritance chain
-			AssertRuleSuccess (SimpleTypes.Class);
-
 			AssertRuleSuccess<ComVisibleClass> ();
 		}
 
@@ -79,8 +81,15 @@ namespace Test.Rules.Interoperability.Com {
 		[Test]
 		public void DoesNotApply ()
 		{
+			// BaseType is null
+			AssertRuleDoesNotApply<ICollection> ();
+
+			// not visible / no ComVisible attributes in inheritance chain
+			AssertRuleDoesNotApply (SimpleTypes.Class);
+
 			AssertRuleDoesNotApply<ComInvisibleClass> ();
 			AssertRuleDoesNotApply<ComInvisibleInheritsFromVisibleClass> ();
+			AssertRuleDoesNotApply<NotReallyComVisibleInheritsFromInvisibleClass> ();
 		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/DoNotUseAutoDualClassInterfaceTypeTest.cs b/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/DoNotUseAutoDualClassInterfaceTypeTest.cs
index ad6b8f3..b68c36a 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/DoNotUseAutoDualClassInterfaceTypeTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/DoNotUseAutoDualClassInterfaceTypeTest.cs
@@ -43,30 +43,30 @@ namespace Test.Rules.Interoperability.Com {
 
 		[ComVisible (true)]
 		[ClassInterface (ClassInterfaceType.AutoDual)]
-		class BadClass {
+		public class BadClass {
 			// do something
 		}
 
 		[ComVisible (true)]
 		[ClassInterface (2)]
-		class BadClassShortConstuctor {
+		public class BadClassShortConstuctor {
 			// do something
 		}
 
 		[ComVisible (false)]
 		[ClassInterface (ClassInterfaceType.AutoDual)]
-		class DoesNotApplyInvisible {
+		public class DoesNotApplyInvisible {
 			// do something
 		}
 
 		[ComVisible (true)]
-		class GoodNoInterfaceAttribute {
+		public class GoodNoInterfaceAttribute {
 			// do something
 		}
 
 		[ComVisible (true)]
 		[ClassInterface (ClassInterfaceType.None)]
-		class GoodClassNone : ICloneable {
+		public class GoodClassNone : ICloneable {
 			public object Clone ()
 			{
 				return new object ();
@@ -75,7 +75,7 @@ namespace Test.Rules.Interoperability.Com {
 
 		[ComVisible (true)]
 		[ClassInterface ((short)0)]
-		class GoodClassNoneShortConstructor : ICloneable {
+		public class GoodClassNoneShortConstructor : ICloneable {
 			public object Clone ()
 			{
 				return new object ();
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/Makefile.in b/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/Makefile.in
index dee6bfa..26894f5 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -298,6 +338,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -306,18 +348,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -352,6 +404,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/Tests.Rules.Interoperability.Com.csproj b/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/Tests.Rules.Interoperability.Com.csproj
index 0b77953..7f21629 100755
--- a/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/Tests.Rules.Interoperability.Com.csproj
+++ b/gendarme/rules/Gendarme.Rules.Interoperability.Com/Test/Tests.Rules.Interoperability.Com.csproj
@@ -1,85 +1,124 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{393FCDDA-6AAF-4DBA-BB75-6BD85DAC84EE}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Tests.Rules.Interoperability.Com</RootNamespace>
-    <AssemblyName>Tests.Rules.Interoperability.Com</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\..\..\..\cecil\Test\libs\nunit-2.4.8\nunit.framework.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\..\..\..\cecil\Mono.Cecil.csproj">
-      <Project>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</Project>
-      <Name>Mono.Cecil</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\..\framework\Gendarme.Framework.csproj">
-      <Project>{CD6818D5-B398-486C-B180-92A07B143AFD}</Project>
-      <Name>Gendarme.Framework</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\Test.Rules\Test.Rules.csproj">
-      <Project>{069148AF-86AB-4EE3-BFB9-429AE722461F}</Project>
-      <Name>Test.Rules</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\Gendarme.Rules.Interoperability.Com.csproj">
-      <Project>{468F7043-C0D5-480F-88A1-A262EC324E5E}</Project>
-      <Name>Gendarme.Rules.Interoperability.Com</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="AutoLayoutTypesShouldNotBeComVisibleTest.cs" />
-    <Compile Include="AvoidInt64ArgumentsInComVisibleMethodsTest.cs" />
-    <Compile Include="AvoidNonPublicFieldsInComVisibleValueTypesTest.cs" />
-    <Compile Include="AvoidOverloadsInComVisibleInterfacesTest.cs" />
-    <Compile Include="AvoidStaticMembersInComVisibleTypesTest.cs" />
-    <Compile Include="ComRocksTest.cs" />
-    <Compile Include="ComVisibleShouldInheritFromComVisibleTest.cs" />
-    <Compile Include="ComVisibleTypesShouldBeCreatableTest.cs" />
-    <Compile Include="DoNotUseAutoDualClassInterfaceTypeTest.cs" />
-    <Compile Include="MarkComSourceInterfacesAsIDispatchTest.cs" />
-    <Compile Include="ReviewComRegistrationMethodsTest.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <Folder Include="Properties\" />
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{393FCDDA-6AAF-4DBA-BB75-6BD85DAC84EE}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Tests.Rules.Interoperability.Com</RootNamespace>
+    <AssemblyName>Tests.Rules.Interoperability.Com</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\..\cecil\Test\libs\nunit-2.4.8\nunit.framework.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\..\..\cecil\Mono.Cecil.csproj">
+      <Project>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</Project>
+      <Name>Mono.Cecil</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\..\framework\Gendarme.Framework.csproj">
+      <Project>{CD6818D5-B398-486C-B180-92A07B143AFD}</Project>
+      <Name>Gendarme.Framework</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\Test.Rules\Test.Rules.csproj">
+      <Project>{069148AF-86AB-4EE3-BFB9-429AE722461F}</Project>
+      <Name>Test.Rules</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\Gendarme.Rules.Interoperability.Com.csproj">
+      <Project>{468F7043-C0D5-480F-88A1-A262EC324E5E}</Project>
+      <Name>Gendarme.Rules.Interoperability.Com</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="AutoLayoutTypesShouldNotBeComVisibleTest.cs" />
+    <Compile Include="AvoidInt64ArgumentsInComVisibleMethodsTest.cs" />
+    <Compile Include="AvoidNonPublicFieldsInComVisibleValueTypesTest.cs" />
+    <Compile Include="AvoidOverloadsInComVisibleInterfacesTest.cs" />
+    <Compile Include="AvoidStaticMembersInComVisibleTypesTest.cs" />
+    <Compile Include="ComRocksTest.cs" />
+    <Compile Include="ComVisibleShouldInheritFromComVisibleTest.cs" />
+    <Compile Include="ComVisibleTypesShouldBeCreatableTest.cs" />
+    <Compile Include="DoNotUseAutoDualClassInterfaceTypeTest.cs" />
+    <Compile Include="MarkComSourceInterfacesAsIDispatchTest.cs" />
+    <Compile Include="ReviewComRegistrationMethodsTest.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Properties\" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
   </Target>
   <Target Name="AfterBuild">
   </Target>
-  -->
+  -->
 </Project>
\ No newline at end of file
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability/CentralizePInvokesIntoNativeMethodsTypeRule.cs b/gendarme/rules/Gendarme.Rules.Interoperability/CentralizePInvokesIntoNativeMethodsTypeRule.cs
index fbadfc9..26d1dca 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability/CentralizePInvokesIntoNativeMethodsTypeRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Interoperability/CentralizePInvokesIntoNativeMethodsTypeRule.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 
@@ -91,20 +92,22 @@ namespace Gendarme.Rules.Interoperability {
 		{
 			// *NativeMethods types should never be visible outside the assembly
 			if (type.IsVisible ()) {
-				string msg = String.Format ("'{0}' should not be visible outside the assembly.", type);
+				string msg = String.Format (CultureInfo.InvariantCulture, 
+					"'{0}' should not be visible outside the assembly.", type.GetFullName ());
 				Runner.Report (type, Severity.High, Confidence.Total, msg);
 			}
 
 			if (CanInstantiateType (type)) {
-				string msg = String.Format ("'{0}' should not be static or sealed with no visible constructor.", type);
+				string msg = String.Format (CultureInfo.InvariantCulture, 
+					"'{0}' should not be static or sealed with no visible constructor.", type.GetFullName ());
 				Runner.Report (type, Severity.High, Confidence.Total, msg);
 			}
 		}
 
-		private void CheckSuppressUnmanagedCodeSecurity (TypeDefinition type, bool required)
+		private void CheckSuppressUnmanagedCodeSecurity (ICustomAttributeProvider type, bool required)
 		{
 			string msg = null;
-			if (type.HasCustomAttributes && type.CustomAttributes.ContainsType ("System.Security.SuppressUnmanagedCodeSecurityAttribute")) {
+			if (type.HasAttribute ("System.Security", "SuppressUnmanagedCodeSecurityAttribute")) {
 				if (!required)
 					 msg = "Remove [SuppressUnmanagedCodeSecurity] attribute on the type declaration.";
 			} else {
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability/DelegatesPassedToNativeCodeMustIncludeExceptionHandlingRule.cs b/gendarme/rules/Gendarme.Rules.Interoperability/DelegatesPassedToNativeCodeMustIncludeExceptionHandlingRule.cs
index a407980..72b8ffc 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability/DelegatesPassedToNativeCodeMustIncludeExceptionHandlingRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Interoperability/DelegatesPassedToNativeCodeMustIncludeExceptionHandlingRule.cs
@@ -32,6 +32,7 @@
 using System;
 using System.Collections.Generic;
 using System.Diagnostics;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -259,7 +260,7 @@ namespace Gendarme.Rules.Interoperability {
 				// Pending implementation of "analysis warnings", as mentioned here (post #21):
 				// http://groups.google.com/group/gendarme/browse_frm/thread/c37d157ae0c9682/57f89f3abf14f2fd?tvc=1&q=Gendarme+2.6+Preview+1+is+ready+for+download#57f89f3abf14f2fd
 				Runner.Report (method, Severity.Low, Confidence.Low,
-					string.Format ("An exception occurred while verifying this method. " +
+					String.Format (CultureInfo.CurrentCulture, "An exception occurred while verifying this method. " +
 					"This failure can probably be ignored, it's most likely due to an " + 
 					"uncommon code sequence in the method the rule didn't understand. {0}", ex.Message));
 				return RuleResult.Failure;
@@ -271,14 +272,14 @@ namespace Gendarme.Rules.Interoperability {
 			locals.Clear ();
 			stack.Clear ();
 			
-			Log.WriteLine (this, "\n\nChecking method: {0} on type: {1}", method.Name, method.DeclaringType.FullName);
+			Log.WriteLine (this, "\n\nChecking method: {0} on type: {1}", method.Name, method.DeclaringType.GetFullName ());
 			Log.WriteLine (this, method);
 
 			MethodBody body = method.Body;
 #if DEBUG
 			foreach (ExceptionHandler e in body.ExceptionHandlers)
-				Log.WriteLine (this, " HandlerType: {7}, TryStart: {4:X}, TryEnd: {5:X}, HandlerStart: {0:X}, HandlerEnd: {1:X}, FilterStart: {2:X}, FilterEnd: {3:X}, CatchType: {6}", 
-				                   e.HandlerStart.GetOffset (), e.HandlerEnd.GetOffset (), e.FilterStart.GetOffset (), e.FilterEnd.GetOffset (), 
+				Log.WriteLine (this, " HandlerType: {6}, TryStart: {3:X}, TryEnd: {4:X}, HandlerStart: {0:X}, HandlerEnd: {1:X}, FilterStart: {2:X}, CatchType: {5}", 
+				                   e.HandlerStart.GetOffset (), e.HandlerEnd.GetOffset (), e.FilterStart.GetOffset (),  
 				                   e.TryStart.GetOffset (), e.TryEnd.GetOffset (), e.CatchType, e.HandlerType);
 #endif
 			
@@ -493,12 +494,12 @@ namespace Gendarme.Rules.Interoperability {
 						continue;
 					
 					// no 'Catch ... When <condition>' clause. C# doesn't support it, VB does
-					if (eh.FilterStart != null || eh.FilterEnd != null)
+					if (eh.FilterStart != null)
 						continue;
 					
 					// check for catch all clauses
-					string exception_typename = eh.CatchType == null ? null : eh.CatchType.FullName;
-					if (!(exception_typename == null || exception_typename == "System.Object" || exception_typename == "System.Exception"))
+					TypeReference ctype = eh.CatchType;
+					if (!(ctype == null || ctype.IsNamed ("System", "Object") || ctype.IsNamed ("System", "Exception")))
 						continue;
 					
 					// Mark the code this exception handler handles as safe.
@@ -521,8 +522,8 @@ namespace Gendarme.Rules.Interoperability {
 				// Console.ResetColor ();
 			}
 			foreach (ExceptionHandler e in body.ExceptionHandlers)
-				Log.WriteLine (this, " HandlerType: {7}, TryStart: {4}, TryEnd: {5}, HandlerStart: {0}, HandlerEnd: {1}, FilterStart: {2}, FilterEnd: {3}, CatchType: {6}", 
-				                   e.HandlerStart.GetOffset (), e.HandlerEnd.GetOffset (), e.FilterStart.GetOffset (), e.FilterEnd.GetOffset (), 
+				Log.WriteLine (this, " HandlerType: {6}, TryStart: {3}, TryEnd: {4}, HandlerStart: {0}, HandlerEnd: {1}, FilterStart: {2}, CatchType: {5}", 
+				                   e.HandlerStart.GetOffset (), e.HandlerEnd.GetOffset (), e.FilterStart.GetOffset (),
 				                   e.TryStart.GetOffset (), e.TryEnd.GetOffset (), e.CatchType, e.HandlerType);
 #endif
 			
@@ -665,7 +666,8 @@ namespace Gendarme.Rules.Interoperability {
 			case Code.Ldloca_S:
 			case Code.Ldloc_S: return ((VariableDefinition) ins.Operand).Index;
 			default:
-				throw new ArgumentException (string.Format ("Invalid opcode: {0}", ins.OpCode.Name));
+				string msg = String.Format (CultureInfo.InvariantCulture, "Invalid opcode: {0}", ins.OpCode.Name);
+				throw new ArgumentException (msg);
 			}
 		}
 		
@@ -681,7 +683,8 @@ namespace Gendarme.Rules.Interoperability {
 			case Code.Stloc: // Untested for stloc
 			case Code.Stloc_S: return ((VariableDefinition) ins.Operand).Index;
 			default:
-				throw new ArgumentException (string.Format ("Invalid opcode: {0}", ins.OpCode.Name));
+				string msg = String.Format (CultureInfo.InvariantCulture, "Invalid opcode: {0}", ins.OpCode.Name);
+				throw new ArgumentException (msg);
 			}
 		}
 	}
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability/DoNotCastIntPtrToInt32Rule.cs b/gendarme/rules/Gendarme.Rules.Interoperability/DoNotCastIntPtrToInt32Rule.cs
index 908fb83..6e2f0d6 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability/DoNotCastIntPtrToInt32Rule.cs
+++ b/gendarme/rules/Gendarme.Rules.Interoperability/DoNotCastIntPtrToInt32Rule.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -87,7 +88,7 @@ namespace Gendarme.Rules.Interoperability {
 
 		private void Report (MethodDefinition method, Instruction ins, string typeName)
 		{
-			string msg = String.Format ("Type cast to '{0}'.", typeName);
+			string msg = String.Format (CultureInfo.InvariantCulture, "Type cast to '{0}'.", typeName);
 			Runner.Report (method, ins, Severity.High, Confidence.Normal, msg);
 		}
 
@@ -130,7 +131,7 @@ namespace Gendarme.Rules.Interoperability {
 			} else if (uintptr && (name == "ToUInt32")) {
 				Runner.Report (method, ins, Severity.High, Confidence.Normal, "Call to 'UIntPtr.ToUInt32()'.");
 			} else if (name == "op_Explicit") {
-				string rtfullname = mr.ReturnType.FullName;
+				string rtfullname = mr.ReturnType.GetFullName ();
 				switch (rtfullname) {
 				case "System.Int64":
 				case "System.UInt64":
@@ -165,8 +166,9 @@ namespace Gendarme.Rules.Interoperability {
 				if (m.Name != "op_Explicit")
 					return;
 
-				string msg = String.Format ("A '{0}' value is casted into an '{1}' when reading marshalled memory.",
-					mr.ReturnType.FullName, m.Parameters [0].ParameterType.FullName);
+				string msg = String.Format (CultureInfo.InvariantCulture,
+					"A '{0}' value is casted into an '{1}' when reading marshalled memory.",
+					mr.ReturnType.GetFullName (), m.Parameters [0].ParameterType.GetFullName ());
 				Runner.Report (method, ins, Severity.High, Confidence.Normal, msg);
 			}
 		}
@@ -190,12 +192,14 @@ namespace Gendarme.Rules.Interoperability {
 					continue;
 
 				// look for both IntPtr and the (less known) UIntPtr
-				string type = mr.DeclaringType.FullName;
-				bool intptr = (type == "System.IntPtr");
-				bool uintptr = (type == "System.UIntPtr");
-				if (intptr || uintptr) {
-					CheckCastOnIntPtr (method, ins, mr, intptr, uintptr);
-				} else if (type == "System.Runtime.InteropServices.Marshal") {
+				TypeReference type = mr.DeclaringType;
+				if (type.Namespace == "System") {
+					string name = type.Name;
+					bool intptr = (name == "IntPtr");
+					bool uintptr = (name == "UIntPtr");
+					if (intptr || uintptr)
+						CheckCastOnIntPtr (method, ins, mr, intptr, uintptr);
+				} else if (type.IsNamed ("System.Runtime.InteropServices", "Marshal")) {
 					CheckCastOnMarshal (method, ins, mr);
 				}
 			}
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability/Gendarme.Rules.Interoperability.csproj b/gendarme/rules/Gendarme.Rules.Interoperability/Gendarme.Rules.Interoperability.csproj
index 04cd1c6..1b0a126 100755
--- a/gendarme/rules/Gendarme.Rules.Interoperability/Gendarme.Rules.Interoperability.csproj
+++ b/gendarme/rules/Gendarme.Rules.Interoperability/Gendarme.Rules.Interoperability.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Gendarme.Rules.Interoperability</RootNamespace>
     <AssemblyName>Gendarme.Rules.Interoperability</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -24,6 +44,7 @@
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
     <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Interoperability.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -35,6 +56,7 @@
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
     <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Interoperability.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -65,6 +87,23 @@
       <Name>Gendarme.Framework</Name>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability/GetLastErrorMustBeCalledRightAfterPInvokeRule.cs b/gendarme/rules/Gendarme.Rules.Interoperability/GetLastErrorMustBeCalledRightAfterPInvokeRule.cs
index 39cb63f..37b5dad 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability/GetLastErrorMustBeCalledRightAfterPInvokeRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Interoperability/GetLastErrorMustBeCalledRightAfterPInvokeRule.cs
@@ -98,9 +98,9 @@ namespace Gendarme.Rules.Interoperability {
 				return false;
 			}
 
-			public bool Equals (Branch branch)
+			public bool Equals (Branch other)
 			{
-				return (Instruction == branch.Instruction) && (DirtyMethodCalled == branch.DirtyMethodCalled);
+				return (Instruction == other.Instruction) && (DirtyMethodCalled == other.DirtyMethodCalled);
 			}
 
 			public override int GetHashCode ()
@@ -135,13 +135,18 @@ namespace Gendarme.Rules.Interoperability {
 
 					//check if a method is called
 					if (ins.OpCode.FlowControl == FlowControl.Call) {
+					    MethodReference mRef = ins.Operand as MethodReference;
 
-						MethodDefinition mDef = (ins.Operand as MethodReference).Resolve ();
+                        if (mRef == null) {
+                            continue;
+                        }
+
+					    MethodDefinition mDef = mRef.Resolve();
 						if (mDef != null && mDef.IsPInvokeImpl) { //check if another pinvoke method is called, this counts as "GetLastError not called"
 							break;
 						}
-
-						string s = (mDef == null) ? String.Empty : mDef.DeclaringType.FullName;
+                        
+						string s = (mDef == null) ? String.Empty : mDef.DeclaringType.GetFullName ();
 						switch (s) {
 						case "System.Runtime.InteropServices.Marshal":
 							getLastErrorFound = (mDef.Name == "GetLastWin32Error");
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability/Makefile.in b/gendarme/rules/Gendarme.Rules.Interoperability/Makefile.in
index 1f32a21..40bc960 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Interoperability/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(rules_categorydir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
-rules_categorySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(rules_category_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,20 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(rules_documentation_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -130,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -277,14 +353,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Interoperability/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Interoperability/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Interoperability/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Interoperability/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -294,6 +370,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../common.make $(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -302,42 +379,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-rules_categorySCRIPTS: $(rules_category_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_categorydir)" || $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)"
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_categorydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(rules_categorySCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	    $(rules_categorySCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rules_categorydir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rules_categorydir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-rules_categorySCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	done
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(rules_categorydir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -346,7 +444,7 @@ uninstall-rules_documentationDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -363,7 +461,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -371,7 +469,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -397,16 +495,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -414,14 +512,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -433,7 +531,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -442,29 +540,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -485,29 +588,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -530,10 +645,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -541,6 +661,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -560,6 +681,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -569,18 +692,28 @@ install-data-am: install-rules_categorySCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -602,8 +735,8 @@ ps-am:
 uninstall-am: uninstall-rules_categorySCRIPTS \
 	uninstall-rules_documentationDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -623,11 +756,11 @@ uninstall-am: uninstall-rules_categorySCRIPTS \
 
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -636,7 +769,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
@@ -656,6 +789,7 @@ $(rules_doc_source):
 
 clean-local:
 	rm -fr doc
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability/MarshalBooleansInPInvokeDeclarationsRule.cs b/gendarme/rules/Gendarme.Rules.Interoperability/MarshalBooleansInPInvokeDeclarationsRule.cs
index 588748a..acf7156 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability/MarshalBooleansInPInvokeDeclarationsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Interoperability/MarshalBooleansInPInvokeDeclarationsRule.cs
@@ -64,13 +64,13 @@ namespace Gendarme.Rules.Interoperability {
 	[FxCopCompatibility ("Microsoft.Interoperability", "CA1414:MarkBooleanPInvokeArgumentsWithMarshalAs")]
 	public class MarshalBooleansInPInvokeDeclarationsRule : Rule, IMethodRule {
 
-		static bool CheckBooleanMarshalling (IMarshalInfoProvider spec, MemberReference type)
+		static bool CheckBooleanMarshalling (IMarshalInfoProvider spec, TypeReference type)
 		{
 			// is marshalling information provided
 			if (spec.MarshalInfo != null)
 				return true;
 			// using StartsWith to catch references (ref)
-			return !type.FullName.StartsWith ("System.Boolean", StringComparison.Ordinal);
+			return !(type.Namespace == "System" && type.Name.StartsWith ("Boolean", StringComparison.Ordinal));
 		}
 
 		public RuleResult CheckMethod (MethodDefinition method)
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability/MarshalStringsInPInvokeDeclarationsRule.cs b/gendarme/rules/Gendarme.Rules.Interoperability/MarshalStringsInPInvokeDeclarationsRule.cs
index 442dd74..7edf597 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability/MarshalStringsInPInvokeDeclarationsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Interoperability/MarshalStringsInPInvokeDeclarationsRule.cs
@@ -27,9 +27,11 @@
 //
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 using Gendarme.Framework;
+using Gendarme.Framework.Rocks;
 
 namespace Gendarme.Rules.Interoperability {
 
@@ -69,13 +71,8 @@ namespace Gendarme.Rules.Interoperability {
 
 		private static bool IsStringOrSBuilder (TypeReference reference)
 		{
-			switch (reference.GetElementType ().FullName) {
-			case "System.String":
-			case "System.Text.StringBuilder":
-				return true;
-			default:
-				return false;
-			}
+			TypeReference type = reference.GetElementType ();
+			return (type.IsNamed ("System", "String") || type.IsNamed ("System.Text", "StringBuilder"));
 		}
 
 		public RuleResult CheckMethod (MethodDefinition method)
@@ -93,7 +90,8 @@ namespace Gendarme.Rules.Interoperability {
 
 			foreach (ParameterDefinition parameter in method.Parameters) {
 				if (IsStringOrSBuilder (parameter.ParameterType) && (parameter.MarshalInfo == null)) {
-					string text = string.Format ("Parameter '{0}', of type '{1}', does not have [MarshalAs] attribute, yet no [DllImport CharSet=] is set for the method '{2}'.",
+					string text = String.Format (CultureInfo.InvariantCulture, 
+						"Parameter '{0}', of type '{1}', does not have [MarshalAs] attribute, yet no [DllImport CharSet=] is set for the method '{2}'.",
 						parameter.Name, parameter.ParameterType.Name, method.Name);
 					Runner.Report (parameter, Severity.High, Confidence.Total, text);
 				}
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability/Test/Makefile.in b/gendarme/rules/Gendarme.Rules.Interoperability/Test/Makefile.in
index de1b73c..3e96574 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability/Test/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Interoperability/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Interoperability/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Interoperability/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Interoperability/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Interoperability/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -298,6 +338,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -306,18 +348,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -352,6 +404,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability/Test/Tests.Rules.Interoperability.csproj b/gendarme/rules/Gendarme.Rules.Interoperability/Test/Tests.Rules.Interoperability.csproj
index 8f6896b..ce293e7 100755
--- a/gendarme/rules/Gendarme.Rules.Interoperability/Test/Tests.Rules.Interoperability.csproj
+++ b/gendarme/rules/Gendarme.Rules.Interoperability/Test/Tests.Rules.Interoperability.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Tests.Rules.Interoperability</RootNamespace>
     <AssemblyName>Tests.Rules.Interoperability</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -22,6 +42,7 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -31,6 +52,7 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
@@ -73,6 +95,23 @@
   <ItemGroup>
     <Folder Include="Properties\" />
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.Interoperability/UseManagedAlternativesToPInvokeRule.cs b/gendarme/rules/Gendarme.Rules.Interoperability/UseManagedAlternativesToPInvokeRule.cs
index 4f502cb..27c7d8f 100644
--- a/gendarme/rules/Gendarme.Rules.Interoperability/UseManagedAlternativesToPInvokeRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Interoperability/UseManagedAlternativesToPInvokeRule.cs
@@ -29,8 +29,9 @@
 //
 
 using System;
-using System.Linq;
 using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
 
 using Gendarme.Framework;
 using Mono.Cecil;
@@ -129,7 +130,8 @@ namespace Gendarme.Rules.Interoperability {
 			if (alternatives == null)
 				return RuleResult.Success;
 
-			string message = string.Format ("Try to replace the platform-dependent call '{0}' by (one of) the following alternative(s): {1}.",
+			string message = String.Format (CultureInfo.InvariantCulture, 
+				"Try to replace the platform-dependent call '{0}' by (one of) the following alternative(s): {1}.",
 				method.Name, alternatives.Alternatives);
 			Runner.Report (method, Severity.Low, Confidence.High, message);
 			return RuleResult.Failure;
diff --git a/gendarme/rules/Gendarme.Rules.Maintainability/AvoidAlwaysNullFieldRule.cs b/gendarme/rules/Gendarme.Rules.Maintainability/AvoidAlwaysNullFieldRule.cs
index 8fa7eb1..ac27858 100644
--- a/gendarme/rules/Gendarme.Rules.Maintainability/AvoidAlwaysNullFieldRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Maintainability/AvoidAlwaysNullFieldRule.cs
@@ -166,6 +166,16 @@ namespace Gendarme.Rules.Maintainability {
 				}
 			};
 		}
+
+		void CheckMethods (TypeDefinition type)
+		{
+			if (!type.HasMethods)
+				return;
+
+			IList<MethodDefinition> mc = type.Methods;
+			for (int i = 0; i < mc.Count && nullFields.Count > 0; ++i)
+				CheckMethod (mc [i]);
+		}
 		
 		public RuleResult CheckType (TypeDefinition type)
 		{
@@ -175,7 +185,7 @@ namespace Gendarme.Rules.Maintainability {
 			Log.WriteLine (this);
 			Log.WriteLine (this, "----------------------------------");
 			
-			bool isWinFormControl = usesWinForms && type.Inherits("System.Windows.Forms.Control");
+			bool isWinFormControl = usesWinForms && type.Inherits ("System.Windows.Forms", "Control");
 
 			// All fields start out as always null and unused.
 			foreach (FieldDefinition field in type.Fields) {
@@ -184,10 +194,10 @@ namespace Gendarme.Rules.Maintainability {
 						nullFields.Add (field);
 			}
 
-			if (type.HasMethods) {
-				IList<MethodDefinition> mc = type.Methods;
-				for (int i = 0; i < mc.Count && nullFields.Count > 0; ++i)
-					CheckMethod (mc [i]);
+			CheckMethods (type);
+			if (type.HasNestedTypes) {
+				foreach (TypeDefinition nested in type.NestedTypes)
+					CheckMethods (nested);
 			}
 				
 			// Report a defect if:
diff --git a/gendarme/rules/Gendarme.Rules.Maintainability/AvoidComplexMethodsRule.cs b/gendarme/rules/Gendarme.Rules.Maintainability/AvoidComplexMethodsRule.cs
index 46200ab..59d780d 100644
--- a/gendarme/rules/Gendarme.Rules.Maintainability/AvoidComplexMethodsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Maintainability/AvoidComplexMethodsRule.cs
@@ -31,6 +31,7 @@
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -127,7 +128,8 @@ namespace Gendarme.Rules.Maintainability {
 			//how's severity?
 			Severity sev = GetCyclomaticComplexitySeverity(cc);
 
-			Runner.Report (method, sev, Confidence.High, String.Format ("Method's cyclomatic complexity : {0}.", cc));
+			string msg = String.Format (CultureInfo.CurrentCulture, "Method's cyclomatic complexity : {0}.", cc);
+			Runner.Report (method, sev, Confidence.High, msg);
 			return RuleResult.Failure;
 		}
 
diff --git a/gendarme/rules/Gendarme.Rules.Maintainability/AvoidDeepInheritanceTreeRule.cs b/gendarme/rules/Gendarme.Rules.Maintainability/AvoidDeepInheritanceTreeRule.cs
index a0e2af8..010ac00 100644
--- a/gendarme/rules/Gendarme.Rules.Maintainability/AvoidDeepInheritanceTreeRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Maintainability/AvoidDeepInheritanceTreeRule.cs
@@ -28,6 +28,7 @@
 
 using System;
 using System.ComponentModel;
+using System.Globalization;
 
 using Mono.Cecil;
 
@@ -84,11 +85,12 @@ namespace Gendarme.Rules.Maintainability {
 				return RuleResult.DoesNotApply;
 
 			int depth = 0;
-			while (type.BaseType != null) {
-				type = type.BaseType.Resolve ();
-				if (type == null)
+			TypeDefinition temp = type;
+			while (temp.BaseType != null) {
+				temp = temp.BaseType.Resolve();
+				if (temp == null)
 					break;
-				if (countExternalDepth || Runner.Assemblies.Contains (type.Module.Assembly))
+				if (countExternalDepth || Runner.Assemblies.Contains(temp.Module.Assembly))
 					depth++;
 			}
 
@@ -99,7 +101,8 @@ namespace Gendarme.Rules.Maintainability {
 			// where it's possible we can't resolve up to System.Object
 			Confidence confidence = countExternalDepth ? Confidence.High : Confidence.Total;
 			// Severity is based on the depth
-			Runner.Report (type, GetSeverity (depth), confidence, String.Format ("Inheritance tree depth : {0}.", depth));
+			string msg = String.Format (CultureInfo.CurrentCulture, "Inheritance tree depth : {0}.", depth);
+			Runner.Report (type, GetSeverity (depth), confidence, msg);
 			return RuleResult.Failure;
 		}
 	}
diff --git a/gendarme/rules/Gendarme.Rules.Maintainability/AvoidLackOfCohesionOfMethodsRule.cs b/gendarme/rules/Gendarme.Rules.Maintainability/AvoidLackOfCohesionOfMethodsRule.cs
index 4a428f0..44df73b 100644
--- a/gendarme/rules/Gendarme.Rules.Maintainability/AvoidLackOfCohesionOfMethodsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Maintainability/AvoidLackOfCohesionOfMethodsRule.cs
@@ -31,6 +31,7 @@
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -88,7 +89,8 @@ namespace Gendarme.Rules.Maintainability {
 			//how's severity?
 			Severity sev = GetCohesivenessSeverity(coh);
 
-			Runner.Report (type, sev, Confidence.Normal, String.Format ("Type cohesiveness : {0}%", (int) (coh * 100)));
+			string msg = String.Format (CultureInfo.CurrentCulture, "Type cohesiveness : {0}%", (int) (coh * 100));
+			Runner.Report (type, sev, Confidence.Normal, msg);
 			return RuleResult.Failure;
 		}
 
diff --git a/gendarme/rules/Gendarme.Rules.Maintainability/AvoidUnnecessarySpecializationRule.cs b/gendarme/rules/Gendarme.Rules.Maintainability/AvoidUnnecessarySpecializationRule.cs
index c16bfbf..a906ebd 100644
--- a/gendarme/rules/Gendarme.Rules.Maintainability/AvoidUnnecessarySpecializationRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Maintainability/AvoidUnnecessarySpecializationRule.cs
@@ -215,7 +215,7 @@ namespace Gendarme.Rules.Maintainability {
 				if (pType is GenericParameter)
 					parameters [i] = null; //TODO: constructed mapping?
 				else
-					parameters [i] = pType.FullName;
+					parameters [i] = pType.GetFullName ();
 			}
 			return new MethodSignature (name, rtype, parameters);
 		}
@@ -225,7 +225,7 @@ namespace Gendarme.Rules.Maintainability {
 			//special exception
 			if (!method.HasParameters && (method.Name == "GetEnumerator"))
 				return null;
-			return method.ReturnType.FullName;
+			return method.ReturnType.GetFullName ();
 		}
 
 		private static bool IsSystemObjectMethod (MethodReference method)
@@ -250,7 +250,7 @@ namespace Gendarme.Rules.Maintainability {
 			//HACK: BOO:
 			case "EqualityOperator" :
 				return (method.HasParameters && (method.Parameters.Count == 2) && 
-					(method.DeclaringType.FullName == "Boo.Lang.Runtime.RuntimeServices"));
+					(method.DeclaringType.IsNamed ("Boo.Lang.Runtime", "RuntimeServices")));
 			}
 			return false;
 		}
@@ -262,7 +262,7 @@ namespace Gendarme.Rules.Maintainability {
 
 		private static bool IsIgnoredSuggestionType (TypeReference type)
 		{
-			return ((type.FullName == "System.Object") || IsFromNonGenericCollectionNamespace (type.Namespace));
+			return (type.IsNamed ("System", "Object") || IsFromNonGenericCollectionNamespace (type.Namespace));
 		}
 
 		private static List<MethodSignature> GetSignatures (IEnumerable<StackEntryUsageResult> usageResults)
@@ -285,7 +285,7 @@ namespace Gendarme.Rules.Maintainability {
 
 		private void UpdateParameterLeastType (ParameterReference parameter, IEnumerable<StackEntryUsageResult> usageResults)
 		{
-			int pIndex = parameter.GetSequence () - 1;
+			int pIndex = parameter.Index;
 			int parameterDepth = GetActualTypeDepth (parameter.ParameterType);
 
 			int currentLeastDepth = 0;
@@ -366,7 +366,7 @@ namespace Gendarme.Rules.Maintainability {
 
 				ParameterDefinition parameter = ins.GetParameter (method);
 				// this is `this`, we do not care
-				if ((parameter == null) || (parameter.GetSequence () == 0))
+				if ((parameter == null) || (parameter.Index == -1))
 					continue;
 
 				// is parameter already known ?
@@ -474,7 +474,7 @@ namespace Gendarme.Rules.Maintainability {
 		{
 			foreach (ParameterDefinition parameter in method.Parameters){
 
-				int i = parameter.GetSequence () - 1;
+				int i = parameter.Index;
 				if (null == types_least [i])
 					continue; //argument is not used
 
@@ -540,7 +540,7 @@ namespace Gendarme.Rules.Maintainability {
 			else
 				nRemoveTrail = 3;
 
-			string fullname = type.FullName;
+			string fullname = type.GetFullName ();
 			sb.Append (fullname.Substring (0, fullname.Length - nRemoveTrail));
 			if (count > 0) {
 				int n = 0;
diff --git a/gendarme/rules/Gendarme.Rules.Maintainability/ConsiderUsingStopwatchRule.cs b/gendarme/rules/Gendarme.Rules.Maintainability/ConsiderUsingStopwatchRule.cs
index 17a448f..79353c1 100644
--- a/gendarme/rules/Gendarme.Rules.Maintainability/ConsiderUsingStopwatchRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Maintainability/ConsiderUsingStopwatchRule.cs
@@ -77,9 +77,6 @@ namespace Gendarme.Rules.Maintainability {
 	[EngineDependency (typeof (OpCodeEngine))]
 	public class ConsiderUsingStopwatchRule : Rule, IMethodRule {
 
-		private const string DateTime = "System.DateTime";
-		private const string GetNow = "get_Now";
-
 		public override void Initialize (IRunner runner)
 		{
 			base.Initialize (runner);
@@ -90,8 +87,11 @@ namespace Gendarme.Rules.Maintainability {
 			// did not exist back then.
 			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
 				Active = (e.CurrentModule.Runtime >= TargetRuntime.Net_2_0
-					&& (e.CurrentAssembly.Name.Name == "mscorlib"
-					|| e.CurrentModule.HasTypeReference (DateTime)));
+					&& (e.CurrentAssembly.Name.Name == "mscorlib" ||
+					e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+						return tr.IsNamed ("System", "DateTime");
+					}
+				)));
 			};
 		}
 
@@ -106,7 +106,7 @@ namespace Gendarme.Rules.Maintainability {
 				return false;
 
 			MethodReference calledMethod = (MethodReference) ins.Operand;
-			return calledMethod.DeclaringType.FullName == DateTime && calledMethod.Name == GetNow;
+			return calledMethod.IsNamed ("System", "DateTime", "get_Now");
 		}
 		
 		private static bool CheckParameters (MethodDefinition method, Instruction ins)
@@ -125,14 +125,14 @@ namespace Gendarme.Rules.Maintainability {
 				ParameterDefinition p = prev.GetParameter (method);
 				if (p == null)
 					return false;
-				int arg = p.GetSequence ();
+				int arg = p.Index;
 				prev = prev.Previous;
 				while (null != prev) {
 					// look for a STOBJ instruction and compare the objects
 					if (prev.OpCode.Code == Code.Stobj) {
 						prev = prev.TraceBack (method);
 						p = prev.GetParameter (method);
-						return (p == null) ? false : (arg == p.GetSequence ());
+						return (p == null) ? false : (arg == p.Index);
 					}
 					prev = prev.Previous;
 				}
@@ -161,11 +161,10 @@ namespace Gendarme.Rules.Maintainability {
 				return RuleResult.DoesNotApply;
 
 			foreach (Instruction ins in method.Body.Instructions) {
-				if (!calls.Get (ins.OpCode.Code))
+				MethodReference calledMethod = ins.GetMethod ();
+				if (calledMethod == null)
 					continue;
-
-				MethodReference calledMethod = (MethodReference) ins.Operand;
-				if (calledMethod.DeclaringType.FullName != DateTime)
+				if (!calledMethod.DeclaringType.IsNamed ("System", "DateTime"))
 					continue;
 				if (!MethodSignatures.op_Subtraction.Matches (calledMethod))
 					continue;
diff --git a/gendarme/rules/Gendarme.Rules.Maintainability/Gendarme.Rules.Maintainability.csproj b/gendarme/rules/Gendarme.Rules.Maintainability/Gendarme.Rules.Maintainability.csproj
index 3a4fd96..261474c 100755
--- a/gendarme/rules/Gendarme.Rules.Maintainability/Gendarme.Rules.Maintainability.csproj
+++ b/gendarme/rules/Gendarme.Rules.Maintainability/Gendarme.Rules.Maintainability.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Gendarme.Rules.Maintainability</RootNamespace>
     <AssemblyName>Gendarme.Rules.Maintainability</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -24,6 +44,7 @@
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
     <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Maintainability.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -35,6 +56,7 @@
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
     <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Maintainability.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -67,6 +89,23 @@
       <Name>Gendarme.Framework</Name>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.Maintainability/Makefile.in b/gendarme/rules/Gendarme.Rules.Maintainability/Makefile.in
index a61e12a..7b9ba3a 100644
--- a/gendarme/rules/Gendarme.Rules.Maintainability/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Maintainability/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(rules_categorydir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
-rules_categorySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(rules_category_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,20 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(rules_documentation_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -130,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -282,14 +358,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Maintainability/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Maintainability/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Maintainability/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Maintainability/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -299,6 +375,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../common.make $(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -307,42 +384,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-rules_categorySCRIPTS: $(rules_category_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_categorydir)" || $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)"
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_categorydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(rules_categorySCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	    $(rules_categorySCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rules_categorydir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rules_categorydir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-rules_categorySCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	done
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(rules_categorydir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -351,7 +449,7 @@ uninstall-rules_documentationDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -368,7 +466,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -376,7 +474,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -402,16 +500,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -419,14 +517,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -438,7 +536,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -447,29 +545,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -490,29 +593,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -535,10 +650,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -546,6 +666,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -565,6 +686,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -574,18 +697,28 @@ install-data-am: install-rules_categorySCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -607,8 +740,8 @@ ps-am:
 uninstall-am: uninstall-rules_categorySCRIPTS \
 	uninstall-rules_documentationDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -628,11 +761,11 @@ uninstall-am: uninstall-rules_categorySCRIPTS \
 
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -641,7 +774,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
@@ -661,6 +794,7 @@ $(rules_doc_source):
 
 clean-local:
 	rm -fr doc
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Maintainability/PreferStringIsNullOrEmptyRule.cs b/gendarme/rules/Gendarme.Rules.Maintainability/PreferStringIsNullOrEmptyRule.cs
index fc5d1f8..efe4653 100644
--- a/gendarme/rules/Gendarme.Rules.Maintainability/PreferStringIsNullOrEmptyRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Maintainability/PreferStringIsNullOrEmptyRule.cs
@@ -116,7 +116,14 @@ namespace Gendarme.Rules.Maintainability {
 			case Code.Ldloc_S:
 				return (ins.Operand as VariableDefinition).Name;
 			default:
-				return (ins.Operand == null) ? String.Empty : ins.Operand.ToString ();
+				object o = ins.Operand;
+				MemberReference mr = (o as MemberReference);
+				if (mr != null)
+					return mr.GetFullName ();
+				else if (o != null)
+					return o.ToString ();
+				else
+					return String.Empty;
 			}
 		}
 
@@ -196,7 +203,7 @@ namespace Gendarme.Rules.Maintainability {
 					continue;
 
 				MethodReference mr = (current.Operand as MethodReference);
-				if ((mr.Name == "get_Length") && (mr.DeclaringType.FullName == "System.String")) {
+				if (mr.IsNamed ("System", "String", "get_Length")) {
 					// now that we found it we check that
 					// 1 - we previously did a check null on the same value (that we already know is a string)
 					Instruction branch = PreLengthCheck (method, current.Previous);
diff --git a/gendarme/rules/Gendarme.Rules.Maintainability/RemoveDependenceOnObsoleteCodeRule.cs b/gendarme/rules/Gendarme.Rules.Maintainability/RemoveDependenceOnObsoleteCodeRule.cs
index 7686b8e..31868ea 100644
--- a/gendarme/rules/Gendarme.Rules.Maintainability/RemoveDependenceOnObsoleteCodeRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Maintainability/RemoveDependenceOnObsoleteCodeRule.cs
@@ -28,6 +28,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -101,8 +102,6 @@ namespace Gendarme.Rules.Maintainability {
 	[EngineDependency (typeof (OpCodeEngine))]
 	public class RemoveDependenceOnObsoleteCodeRule : Rule, ITypeRule, IMethodRule {
 
-		const string Obsolete = "System.ObsoleteAttribute";
-
 		static Dictionary<TypeReference, bool> types = new Dictionary<TypeReference, bool> ();
 		static Dictionary<MethodReference, bool> methods = new Dictionary<MethodReference, bool> ();
 		static Dictionary<FieldReference, bool> fields = new Dictionary<FieldReference, bool> ();
@@ -115,7 +114,7 @@ namespace Gendarme.Rules.Maintainability {
 			bool obsolete = false;
 			if (!types.TryGetValue (type, out obsolete)) {
 				TypeDefinition t = type.Resolve ();
-				obsolete = t == null ? false : t.HasAttribute (Obsolete);
+				obsolete = t.HasAttribute ("System", "ObsoleteAttribute");
 				types.Add (type, obsolete);
 			}
 			return obsolete;
@@ -129,7 +128,7 @@ namespace Gendarme.Rules.Maintainability {
 			bool obsolete = false;
 			if (!methods.TryGetValue (method, out obsolete)) {
 				MethodDefinition md = method.Resolve ();
-				obsolete = (md == null) ? false : md.HasAttribute (Obsolete);
+				obsolete = md.HasAttribute ("System", "ObsoleteAttribute");
 				methods.Add (method, obsolete);
 			}
 			return obsolete;
@@ -143,7 +142,7 @@ namespace Gendarme.Rules.Maintainability {
 			bool obsolete = false;
 			if (!fields.TryGetValue (field, out obsolete)) {
 				FieldDefinition fd = field.Resolve ();
-				obsolete = (fd == null) ? false : fd.HasAttribute (Obsolete);
+				obsolete = fd.HasAttribute ("System", "ObsoleteAttribute");
 				fields.Add (field, obsolete);
 			}
 			return obsolete;
@@ -154,7 +153,7 @@ namespace Gendarme.Rules.Maintainability {
 			if (!IsObsolete (type.BaseType))
 				return;
 
-			string msg = String.Format ("Inherit from obsolete type '{0}'.", type.BaseType);
+			string msg = String.Format (CultureInfo.InvariantCulture, "Inherit from obsolete type '{0}'.", type.BaseType);
 			Runner.Report (type, type.IsVisible () ? Severity.High : Severity.Medium, Confidence.Total, msg);
 		}
 
@@ -162,7 +161,7 @@ namespace Gendarme.Rules.Maintainability {
 		{
 			foreach (TypeReference intf in type.Interfaces) {
 				if (IsObsolete (intf)) {
-					string msg = String.Format ("Implement obsolete interface '{0}'.", intf);
+					string msg = String.Format (CultureInfo.InvariantCulture, "Implement obsolete interface '{0}'.", intf);
 					Runner.Report (type, type.IsVisible () ? Severity.Medium : Severity.Low, Confidence.Total, msg);
 				}
 			}
@@ -172,7 +171,7 @@ namespace Gendarme.Rules.Maintainability {
 		{
 			foreach (FieldDefinition field in type.Fields) {
 				if (IsObsolete (field.FieldType)) {
-					string msg = String.Format ("Field type '{0}' is obsolete.", field.FieldType);
+					string msg = String.Format (CultureInfo.InvariantCulture, "Field type '{0}' is obsolete.", field.FieldType);
 					Runner.Report (field, field.IsVisible () ? Severity.Medium : Severity.Low, Confidence.Total, msg);
 				}
 			}
@@ -183,7 +182,7 @@ namespace Gendarme.Rules.Maintainability {
 		{
 			foreach (PropertyDefinition property in type.Properties) {
 				if (IsObsolete (property.PropertyType)) {
-					string msg = String.Format ("Property type '{0}' is obsolete.", property.PropertyType);
+					string msg = String.Format (CultureInfo.InvariantCulture, "Property type '{0}' is obsolete.", property.PropertyType);
 					bool visible = (IsVisible (property.GetMethod) || IsVisible (property.SetMethod));
 					Runner.Report (property, visible ? Severity.High : Severity.Medium, Confidence.Total, msg);
 				}
@@ -194,7 +193,7 @@ namespace Gendarme.Rules.Maintainability {
 		{
 			foreach (EventDefinition evnt in type.Events) {
 				if (IsObsolete (evnt.EventType)) {
-					string msg = String.Format ("Event type '{0}' is obsolete.", evnt.EventType);
+					string msg = String.Format (CultureInfo.InvariantCulture, "Event type '{0}' is obsolete.", evnt.EventType);
 					bool visible = (IsVisible (evnt.AddMethod) || IsVisible (evnt.RemoveMethod) || 
 						IsVisible (evnt.InvokeMethod));
 					Runner.Report (evnt, visible ? Severity.High : Severity.Medium, Confidence.Total, msg);
@@ -220,7 +219,7 @@ namespace Gendarme.Rules.Maintainability {
 		public RuleResult CheckType (TypeDefinition type)
 		{
 			// we're not interested in the details of [Obsolete] types
-			if (type.HasAttribute (Obsolete))
+			if (type.HasAttribute ("System", "ObsoleteAttribute"))
 				return RuleResult.DoesNotApply;
 
 			// check if we inherit from an [Obsolete] class / struct / enum
@@ -249,7 +248,7 @@ namespace Gendarme.Rules.Maintainability {
 		{
 			foreach (ParameterDefinition p in method.Parameters) {
 				if (IsObsolete (p.ParameterType)) {
-					string msg = String.Format ("Parameter type '{0}' is obsolete.", p.ParameterType);
+					string msg = String.Format (CultureInfo.InvariantCulture, "Parameter type '{0}' is obsolete.", p.ParameterType);
 					Runner.Report (p, method.IsVisible () ? Severity.High : Severity.Medium, Confidence.Total, msg);
 				}
 			}
@@ -261,7 +260,7 @@ namespace Gendarme.Rules.Maintainability {
 			if (!IsObsolete (rt))
 				return;
 
-			string msg = String.Format ("Return type '{0}' is obsolete.", rt);
+			string msg = String.Format (CultureInfo.InvariantCulture, "Return type '{0}' is obsolete.", rt);
 			Runner.Report (method, method.IsVisible () ? Severity.High : Severity.Medium, Confidence.Total, msg);
 		}
 
@@ -269,7 +268,7 @@ namespace Gendarme.Rules.Maintainability {
 		{
 			foreach (VariableDefinition v in method.Body.Variables) {
 				if (IsObsolete (v.VariableType)) {
-					string msg = String.Format ("Variable type '{0}' is obsolete.", v.VariableType);
+					string msg = String.Format (CultureInfo.InvariantCulture, "Variable type '{0}' is obsolete.", v.VariableType);
 					Runner.Report (method, Severity.Low, Confidence.High, msg);
 				}
 			}
@@ -280,7 +279,7 @@ namespace Gendarme.Rules.Maintainability {
 			if (!IsObsolete (type))
 				return;
 
-			string msg = String.Format ("Type '{0}' is obsolete.", type);
+			string msg = String.Format (CultureInfo.InvariantCulture, "Type '{0}' is obsolete.", type);
 			Severity severity = type.IsVisible () ? Severity.Medium : Severity.Low;
 			Runner.Report (method, ins, severity, Confidence.High, msg);
 		}
@@ -292,11 +291,11 @@ namespace Gendarme.Rules.Maintainability {
 
 			string msg = null;
 			if (IsObsolete (call)) {
-				msg = String.Format ("Method '{0}' is obsolete.", call);
+				msg = String.Format (CultureInfo.InvariantCulture, "Method '{0}' is obsolete.", call);
 			} else {
 				TypeReference type = call.DeclaringType;
 				if (IsObsolete (type))
-					msg = String.Format ("Type '{0}' is obsolete.", type);
+					msg = String.Format (CultureInfo.InvariantCulture, "Type '{0}' is obsolete.", type);
 			}
 
 			if (msg != null) {
@@ -312,9 +311,9 @@ namespace Gendarme.Rules.Maintainability {
 
 			string msg = null;
 			if (IsObsolete (field)) {
-				msg = String.Format ("Field '{0}' is obsolete.", field.Name);
+				msg = String.Format (CultureInfo.InvariantCulture, "Field '{0}' is obsolete.", field.Name);
 			} else if (IsObsolete (field.DeclaringType)) {
-				msg = String.Format ("Field type '{0}' is obsolete.", field.FieldType);
+				msg = String.Format (CultureInfo.InvariantCulture, "Field type '{0}' is obsolete.", field.FieldType);
 			} else {
 				return;
 			}
@@ -339,7 +338,7 @@ namespace Gendarme.Rules.Maintainability {
 				return RuleResult.DoesNotApply;
 
 			// if the method is obsolete (directly or because it's type is)
-			if (method.HasAttribute (Obsolete) || method.DeclaringType.HasAttribute (Obsolete))
+			if (method.HasAttribute ("System", "ObsoleteAttribute") || method.DeclaringType.HasAttribute ("System", "ObsoleteAttribute"))
 				return RuleResult.DoesNotApply;
 
 			// check method signature (parameters, return value)
diff --git a/gendarme/rules/Gendarme.Rules.Maintainability/ReviewMisleadingFieldNamesRule.cs b/gendarme/rules/Gendarme.Rules.Maintainability/ReviewMisleadingFieldNamesRule.cs
index 12999b3..6855c77 100644
--- a/gendarme/rules/Gendarme.Rules.Maintainability/ReviewMisleadingFieldNamesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Maintainability/ReviewMisleadingFieldNamesRule.cs
@@ -26,32 +26,32 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-
+using System;
 using Mono.Cecil;
-
 using Gendarme.Framework;
 
 namespace Gendarme.Rules.Maintainability {
 
 	/// <summary>
 	/// This rule checks for fields which have misleading names, e.g. instance fields beginning with "s_"
+	/// or static fields beginning with "m_", since they can be confusing when reading source code.
 	/// </summary>
 	/// <example>
 	/// Bad example:
 	/// <code>
-	///	public class Bad {
-	///		public int s_Value;
-	///		public static int m_OtherValue;
-	///	}
+	/// public class Bad {
+	///	int s_value;
+	///	static int m_other_value;
+	/// }
 	/// </code>
 	/// </example>
 	/// <example>
 	/// Good example:
 	/// <code>
-	///	public class Good {
-	///		public int m_Value;
-	///		public static int s_OtherValue;
-	///	}
+	/// public class Good {
+	///	int value;
+	///	static int other_value;
+	/// }
 	/// </code>
 	/// </example>
 
@@ -68,7 +68,8 @@ namespace Gendarme.Rules.Maintainability {
 
 			foreach (FieldDefinition field in type.Fields) {
 				string name = field.Name;
-				if (field.IsStatic ? name.StartsWith ("m_") : name.StartsWith ("s_"))
+				string prefix = field.IsStatic ? "m_" : "s_";
+				if (name.StartsWith (prefix, StringComparison.Ordinal))
 					Runner.Report (field, Severity.Low, Confidence.Total);
 			}
 
diff --git a/gendarme/rules/Gendarme.Rules.Maintainability/Test/AvoidAlwaysNullFieldTest.cs b/gendarme/rules/Gendarme.Rules.Maintainability/Test/AvoidAlwaysNullFieldTest.cs
index 95ac856..4307c2f 100644
--- a/gendarme/rules/Gendarme.Rules.Maintainability/Test/AvoidAlwaysNullFieldTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Maintainability/Test/AvoidAlwaysNullFieldTest.cs
@@ -3,8 +3,10 @@
 //
 // Authors:
 //	Jesse Jones <jesjones at mindspring.com>
+//	Sebastien Pouliot <sebastien at ximian.com>
 //
 // Copyright (C) 2008 Jesse Jones
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -29,8 +31,7 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Runtime.InteropServices;
-using System.Text;
+using System.Threading;
 
 using Gendarme.Rules.Maintainability;
 
@@ -231,5 +232,51 @@ namespace Test.Rules.Maintainability {
 			AssertRuleSuccess<Bug667692a> ();
 			AssertRuleSuccess<Bug667692b> ();
 		}
+
+		// this will create an anonymous method
+		class AnonymousDelegatesAllFields {
+
+			string file;
+
+			void Parse ()
+			{
+				ThreadPool.QueueUserWorkItem (delegate {
+					file = ""; 
+				});
+			}
+
+			void Show ()
+			{
+				Console.WriteLine (file);
+			}
+		}
+
+		// this will create a nested type with the anonymous method
+		class AnonymousDelegatesFieldsAndLocals {
+
+			string file;
+
+			void Parse ()
+			{
+				string local;
+
+				ThreadPool.QueueUserWorkItem (delegate {
+					file = "";
+					local = file;
+				});
+			}
+
+			void Show ()
+			{
+				Console.WriteLine (file);
+			}
+		}
+
+		[Test]
+		public void AnonymousDelegates ()
+		{
+			AssertRuleSuccess<AnonymousDelegatesAllFields> ();
+			AssertRuleSuccess<AnonymousDelegatesFieldsAndLocals> ();
+		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Maintainability/Test/AvoidUnnecessarySpecializationTest.cs b/gendarme/rules/Gendarme.Rules.Maintainability/Test/AvoidUnnecessarySpecializationTest.cs
index c974504..1ae36c4 100644
--- a/gendarme/rules/Gendarme.Rules.Maintainability/Test/AvoidUnnecessarySpecializationTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Maintainability/Test/AvoidUnnecessarySpecializationTest.cs
@@ -25,9 +25,10 @@
 // THE SOFTWARE.
 
 using System;
-using System.Reflection;
 using System.Collections;
 using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
 
 using Mono.Cecil;
 
@@ -631,5 +632,34 @@ namespace Test.Rules.Maintainability {
 			AssertRuleSuccess<GeneralizedClass> ("OverloadNotSupportedByInterface");
 			AssertRuleFailure<SpecializedClass> ("OverloadNotSupportedByInterface", 1);
 		}
+
+		class TestCase690057 {
+			public class nauczyciel {
+				public Guid Oid;
+				public List<object> NoweGrupies = new List<object> ();
+			}
+			public List<nauczyciel> nauczyciele = new List<nauczyciel> ();
+			public void WyslijMaile (List<Guid> ListIdJ, Guid idRok)
+			{
+
+				var cmd = from c in nauczyciele
+					  where ListIdJ.Contains (c.Oid)
+					  select c;
+				foreach (var s in cmd) {
+					try {
+						foreach (var grp in s.NoweGrupies)
+							;
+					}
+					catch (Exception ex) {
+					}
+				}
+			}
+		}
+		
+		[Test]
+		public void Bug690057 ()
+		{
+			AssertRuleSuccess<TestCase690057> ("WyslijMaile");
+		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Maintainability/Test/Makefile.in b/gendarme/rules/Gendarme.Rules.Maintainability/Test/Makefile.in
index a82ac6c..67153c5 100644
--- a/gendarme/rules/Gendarme.Rules.Maintainability/Test/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Maintainability/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Maintainability/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Maintainability/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Maintainability/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Maintainability/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -298,6 +338,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -306,18 +348,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -352,6 +404,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Maintainability/Test/Tests.Rules.Maintainability.csproj b/gendarme/rules/Gendarme.Rules.Maintainability/Test/Tests.Rules.Maintainability.csproj
index f72d459..5f08e85 100755
--- a/gendarme/rules/Gendarme.Rules.Maintainability/Test/Tests.Rules.Maintainability.csproj
+++ b/gendarme/rules/Gendarme.Rules.Maintainability/Test/Tests.Rules.Maintainability.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Tests.Rules.Maintainability</RootNamespace>
     <AssemblyName>Tests.Rules.Maintainability</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -21,6 +41,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -29,6 +50,7 @@
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
@@ -76,6 +98,23 @@
   <ItemGroup>
     <Folder Include="Properties\" />
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.NUnit/Gendarme.Rules.NUnit.csproj b/gendarme/rules/Gendarme.Rules.NUnit/Gendarme.Rules.NUnit.csproj
index b621be2..6ce2d1d 100755
--- a/gendarme/rules/Gendarme.Rules.NUnit/Gendarme.Rules.NUnit.csproj
+++ b/gendarme/rules/Gendarme.Rules.NUnit/Gendarme.Rules.NUnit.csproj
@@ -1,72 +1,111 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{54625746-D966-4BC2-A465-8F0928A767E6}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Gendarme.Rules.NUnit</RootNamespace>
-    <AssemblyName>Gendarme.Rules.NUnit</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>..\..\console\bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.NUnit.xml</DocumentationFile>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>..\..\console\bin\Release\</OutputPath>
-    <DefineConstants>TRACE;RELEASE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.NUnit.xml</DocumentationFile>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\..\AssemblyStaticInfo.cs">
-      <Link>AssemblyStaticInfo.cs</Link>
-    </Compile>
-    <Compile Include="NUnitRocks.cs" />
-    <Compile Include="NUnitRule.cs" />
-    <Compile Include="ProvideMessageOnAssertCallsRule.cs" />
-    <Compile Include="TestMethodsMustBePublicRule.cs" />
-    <Compile Include="UnitTestsMissingTestFixtureRule.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\..\..\cecil\Mono.Cecil.csproj">
-      <Project>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</Project>
-      <Name>Mono.Cecil</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\framework\Gendarme.Framework.csproj">
-      <Project>{CD6818D5-B398-486C-B180-92A07B143AFD}</Project>
-      <Name>Gendarme.Framework</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <Folder Include="Properties\" />
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{54625746-D966-4BC2-A465-8F0928A767E6}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Gendarme.Rules.NUnit</RootNamespace>
+    <AssemblyName>Gendarme.Rules.NUnit</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\console\bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.NUnit.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\..\console\bin\Release\</OutputPath>
+    <DefineConstants>TRACE;RELEASE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.NUnit.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\AssemblyStaticInfo.cs">
+      <Link>AssemblyStaticInfo.cs</Link>
+    </Compile>
+    <Compile Include="NUnitRocks.cs" />
+    <Compile Include="NUnitRule.cs" />
+    <Compile Include="ProvideMessageOnAssertCallsRule.cs" />
+    <Compile Include="TestMethodsMustBePublicRule.cs" />
+    <Compile Include="UnitTestsMissingTestFixtureRule.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\..\cecil\Mono.Cecil.csproj">
+      <Project>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</Project>
+      <Name>Mono.Cecil</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\framework\Gendarme.Framework.csproj">
+      <Project>{CD6818D5-B398-486C-B180-92A07B143AFD}</Project>
+      <Name>Gendarme.Framework</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Properties\" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
   </Target>
   <Target Name="AfterBuild">
   </Target>
-  -->
+  -->
 </Project>
\ No newline at end of file
diff --git a/gendarme/rules/Gendarme.Rules.NUnit/Makefile.in b/gendarme/rules/Gendarme.Rules.NUnit/Makefile.in
index 7a4c71c..6c3aeb4 100644
--- a/gendarme/rules/Gendarme.Rules.NUnit/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.NUnit/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(rules_categorydir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
-rules_categorySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(rules_category_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,20 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(rules_documentation_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -130,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -271,14 +347,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.NUnit/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.NUnit/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.NUnit/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.NUnit/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -288,6 +364,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../common.make $(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -296,42 +373,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-rules_categorySCRIPTS: $(rules_category_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_categorydir)" || $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)"
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_categorydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(rules_categorySCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	    $(rules_categorySCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rules_categorydir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rules_categorydir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-rules_categorySCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	done
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(rules_categorydir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -340,7 +438,7 @@ uninstall-rules_documentationDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -357,7 +455,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -365,7 +463,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -391,16 +489,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -408,14 +506,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -427,7 +525,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -436,29 +534,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -479,29 +582,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -524,10 +639,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -535,6 +655,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -554,6 +675,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -563,18 +686,28 @@ install-data-am: install-rules_categorySCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -596,8 +729,8 @@ ps-am:
 uninstall-am: uninstall-rules_categorySCRIPTS \
 	uninstall-rules_documentationDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -617,11 +750,11 @@ uninstall-am: uninstall-rules_categorySCRIPTS \
 
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -630,7 +763,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
@@ -650,6 +783,7 @@ $(rules_doc_source):
 
 clean-local:
 	rm -fr doc
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.NUnit/ProvideMessageOnAssertCallsRule.cs b/gendarme/rules/Gendarme.Rules.NUnit/ProvideMessageOnAssertCallsRule.cs
index 4c58065..1e01a2b 100644
--- a/gendarme/rules/Gendarme.Rules.NUnit/ProvideMessageOnAssertCallsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.NUnit/ProvideMessageOnAssertCallsRule.cs
@@ -95,7 +95,7 @@ namespace Gendarme.Rules.NUnit {
 					continue;
 
 				MethodReference m = (instruction.Operand as MethodReference);
-				if (m == null || m.DeclaringType.FullName != "NUnit.Framework.Assert" ||
+				if (m == null || !m.DeclaringType.IsNamed ("NUnit.Framework", "Assert") ||
 					exceptions.Contains (m.Name))
 					continue;
 
@@ -105,7 +105,7 @@ namespace Gendarme.Rules.NUnit {
 					if (resolvedMethod == null)
 						continue;
 					foreach (ParameterDefinition parameter in resolvedMethod.Parameters) {
-						if (parameter.ParameterType.FullName == "System.String" &&
+						if (parameter.ParameterType.IsNamed ("System", "String") &&
 							parameter.Name == "message") {
 							foundMessage = true;
 							break;
diff --git a/gendarme/rules/Gendarme.Rules.NUnit/Test/Makefile.in b/gendarme/rules/Gendarme.Rules.NUnit/Test/Makefile.in
index 318459e..2b1bb26 100644
--- a/gendarme/rules/Gendarme.Rules.NUnit/Test/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.NUnit/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.NUnit/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.NUnit/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.NUnit/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.NUnit/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -298,6 +338,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -306,18 +348,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -352,6 +404,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.NUnit/Test/Tests.Rules.NUnit.csproj b/gendarme/rules/Gendarme.Rules.NUnit/Test/Tests.Rules.NUnit.csproj
index 411ce56..7fc3ffe 100755
--- a/gendarme/rules/Gendarme.Rules.NUnit/Test/Tests.Rules.NUnit.csproj
+++ b/gendarme/rules/Gendarme.Rules.NUnit/Test/Tests.Rules.NUnit.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Tests.Rules.NUnit</RootNamespace>
     <AssemblyName>Tests.Rules.NUnit</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -21,6 +41,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -29,6 +50,7 @@
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
@@ -68,6 +90,23 @@
   <ItemGroup>
     <Folder Include="Properties\" />
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.NUnit/UnitTestsMissingTestFixtureRule.cs b/gendarme/rules/Gendarme.Rules.NUnit/UnitTestsMissingTestFixtureRule.cs
index 4b0164c..daa4721 100644
--- a/gendarme/rules/Gendarme.Rules.NUnit/UnitTestsMissingTestFixtureRule.cs
+++ b/gendarme/rules/Gendarme.Rules.NUnit/UnitTestsMissingTestFixtureRule.cs
@@ -81,7 +81,7 @@ namespace Gendarme.Rules.NUnit {
 			// check if TestFixture is applied to any type in the hierarchy
 			TypeDefinition testingType = type;
 			while (testingType != null) {
-				if (testingType.HasAttribute ("NUnit.Framework.TestFixtureAttribute"))
+				if (testingType.HasAttribute ("NUnit.Framework", "TestFixtureAttribute"))
 					return RuleResult.Success;
 				if (testingType.BaseType != null)
 					testingType = testingType.BaseType.Resolve ();
diff --git a/gendarme/rules/Gendarme.Rules.Naming/AvoidDeepNamespaceHierarchyRule.cs b/gendarme/rules/Gendarme.Rules.Naming/AvoidDeepNamespaceHierarchyRule.cs
index a8f2afa..f9d2783 100644
--- a/gendarme/rules/Gendarme.Rules.Naming/AvoidDeepNamespaceHierarchyRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Naming/AvoidDeepNamespaceHierarchyRule.cs
@@ -96,7 +96,9 @@ namespace Gendarme.Rules.Naming {
 		[DefaultValue (DefaultMaxDepth)]
 		[Description ("The depth at which namespaces may be nested without triggering a defect.")]
 		public int MaxDepth {
-			get { return max_depth; }
+			get {
+				return max_depth;
+			}
 			set {
 				if (value < 1)
 					throw new ArgumentOutOfRangeException ("MaxDepth", "Minimum: 1");
@@ -139,7 +141,7 @@ namespace Gendarme.Rules.Naming {
 				if (levels == MaxDepth + 1) {
 					if (NamespaceDefinition.IsSpecialized (ns)) {
 						continue;
-					} else if (ns.EndsWith (".Internal") || ns.EndsWith (".Impl")) {
+					} else if (ns.EndsWith (".Internal", StringComparison.Ordinal) || ns.EndsWith (".Impl", StringComparison.Ordinal)) {
 						continue;
 					}
 				}
@@ -149,5 +151,11 @@ namespace Gendarme.Rules.Naming {
 			}
 			return Runner.CurrentRuleResult;
 		}
+
+		public override string Solution {
+			get {
+				return string.Format("Try to keep the depth below {0}, with an additional one for specialization (e.g. Design, Interop, Permissions).", MaxDepth);
+			}
+		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Naming/AvoidRedundancyInMethodNameRule.cs b/gendarme/rules/Gendarme.Rules.Naming/AvoidRedundancyInMethodNameRule.cs
index 305f23b..2bff9a0 100644
--- a/gendarme/rules/Gendarme.Rules.Naming/AvoidRedundancyInMethodNameRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Naming/AvoidRedundancyInMethodNameRule.cs
@@ -26,6 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 
@@ -138,7 +139,7 @@ namespace Gendarme.Rules.Naming {
 			if (method_name.StartsWith (name, StringComparison.Ordinal))
 				return RuleResult.Success;
 
-			int pos = method_name.LastIndexOf (name);
+			int pos = method_name.LastIndexOf (name, StringComparison.Ordinal);
 			if (-1 == pos)
 				return RuleResult.Success;
 
@@ -159,10 +160,11 @@ namespace Gendarme.Rules.Naming {
 			string msg;
 			if (method.IsStatic) { //we already have a rule that checks if the method should be static
 				string memberKind = GetSuggestionMemberKind (method);
-				msg = String.Format ("Consider renaming method to '{2}', or extracting method to type '{0}' as {1} '{2}', or making an extension method of that type.", 
+				msg = String.Format (CultureInfo.InvariantCulture, 
+					"Consider renaming method to '{2}', or extracting method to type '{0}' as {1} '{2}', or making an extension method of that type.", 
 					p0.ParameterType, memberKind, suggestion);
 			} else {
-				msg = String.Format ("Consider renaming method to '{0}'.", suggestion);
+				msg = String.Format (CultureInfo.InvariantCulture, "Consider renaming method to '{0}'.", suggestion);
 			}
 
 			Runner.Report (method, severity, confidence, msg);
@@ -184,7 +186,7 @@ namespace Gendarme.Rules.Naming {
 
 		private static string GetSuggestionMemberKind (IMethodSignature method)
 		{
-			if (method.Parameters.Count == 1 && method.ReturnType.FullName != "System.Void")
+			if (method.Parameters.Count == 1 && !method.ReturnType.IsNamed ("System", "Void"))
 				return "property";
 			return "method";
 		}
diff --git a/gendarme/rules/Gendarme.Rules.Naming/AvoidRedundancyInTypeNameRule.cs b/gendarme/rules/Gendarme.Rules.Naming/AvoidRedundancyInTypeNameRule.cs
index b050cb5..7a36180 100644
--- a/gendarme/rules/Gendarme.Rules.Naming/AvoidRedundancyInTypeNameRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Naming/AvoidRedundancyInTypeNameRule.cs
@@ -27,6 +27,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 
 using Mono.Cecil;
 
@@ -94,6 +95,7 @@ namespace Gendarme.Rules.Naming {
 	[Problem ("This type name is prefixed with the last component of its enclosing namespace. This usually makes an API more verbose and less autocompletion-friendly than necessary.")]
 	[Solution ("Remove the prefix from the type or replace it with a more meaningful term in the context of the namespace.")]
 	[EngineDependency (typeof (NamespaceEngine))]
+	[FxCopCompatibility ("Microsoft.Naming", "CA1724:TypeNamesShouldNotMatchNamespaces")]
 	public class AvoidRedundancyInTypeNameRule : Rule, ITypeRule {
 
 		public RuleResult CheckType (TypeDefinition type)
@@ -153,7 +155,7 @@ namespace Gendarme.Rules.Naming {
 			//main goal is to keep the API as simple as possible so this is more severe for visible types
 			Severity severity = type.IsVisible () ? Severity.Medium : Severity.Low;
 
-			string msg = String.Format ("Consider renaming type to '{0}'.", suggestion);
+			string msg = String.Format (CultureInfo.InvariantCulture, "Consider renaming type to '{0}'.", suggestion);
 			Runner.Report (type, severity, Confidence.Normal, msg);
 			return RuleResult.Failure;
 		}
diff --git a/gendarme/rules/Gendarme.Rules.Naming/AvoidTypeInterfaceInconsistencyRule.cs b/gendarme/rules/Gendarme.Rules.Naming/AvoidTypeInterfaceInconsistencyRule.cs
index 0570b72..0d47376 100644
--- a/gendarme/rules/Gendarme.Rules.Naming/AvoidTypeInterfaceInconsistencyRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Naming/AvoidTypeInterfaceInconsistencyRule.cs
@@ -92,11 +92,11 @@ namespace Gendarme.Rules.Naming {
 			if (name [0] != 'I')
 				return RuleResult.DoesNotApply;
 
-			string candidate_name = String.Concat (type.Namespace, ".", name.Substring (1));
-			TypeDefinition candidate = type.Module.GetType (candidate_name);
+			string nspace = type.Namespace;
+			TypeDefinition candidate = type.Module.GetType (nspace, name.Substring (1));
 			if (candidate != null) {
 				// does Foo implement IFoo ?
-				if (!candidate.Implements (type.FullName)) {
+				if (!candidate.Implements (nspace, name)) {
 					Runner.Report (candidate, Severity.High, Confidence.High);
 				}
 			}
diff --git a/gendarme/rules/Gendarme.Rules.Naming/DetectNonAlphaNumericsInTypeNamesRule.cs b/gendarme/rules/Gendarme.Rules.Naming/DetectNonAlphaNumericsInTypeNamesRule.cs
index 9bb8063..972d031 100644
--- a/gendarme/rules/Gendarme.Rules.Naming/DetectNonAlphaNumericsInTypeNamesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Naming/DetectNonAlphaNumericsInTypeNamesRule.cs
@@ -98,9 +98,6 @@ namespace Gendarme.Rules.Naming {
 	[FxCopCompatibility ("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores")]
 	public class AvoidNonAlphanumericIdentifierRule : Rule, IAssemblyRule, IMethodRule, ITypeRule {
 
-		private const string GuidAttribute = "System.Runtime.InteropServices.GuidAttribute";
-		private const string InterfaceTypeAttribute = "System.Runtime.InteropServices.InterfaceTypeAttribute";
-
 		// Compiler generates an error for any other non alpha-numerics than underscore ('_'), 
 		// so we just need to check the presence of underscore in method names
 		private static bool CheckName (string name, bool special)
@@ -111,8 +108,8 @@ namespace Gendarme.Rules.Naming {
 
 		private static bool UsedForComInterop (TypeDefinition type)
 		{
-			return (type.IsInterface && type.HasAttribute (GuidAttribute) &&
-				type.HasAttribute (InterfaceTypeAttribute));
+			return (type.IsInterface && type.HasAttribute ("System.Runtime.InteropServices", "GuidAttribute") &&
+				type.HasAttribute ("System.Runtime.InteropServices", "InterfaceTypeAttribute"));
 		}
 
 		public RuleResult CheckAssembly (AssemblyDefinition assembly)
diff --git a/gendarme/rules/Gendarme.Rules.Naming/Gendarme.Rules.Naming.csproj b/gendarme/rules/Gendarme.Rules.Naming/Gendarme.Rules.Naming.csproj
index bfb1fbe..8de71e4 100755
--- a/gendarme/rules/Gendarme.Rules.Naming/Gendarme.Rules.Naming.csproj
+++ b/gendarme/rules/Gendarme.Rules.Naming/Gendarme.Rules.Naming.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Gendarme.Rules.Naming</RootNamespace>
     <AssemblyName>Gendarme.Rules.Naming</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -24,6 +44,7 @@
     <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Naming.xml</DocumentationFile>
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -35,6 +56,7 @@
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
     <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Naming.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Compile Include="..\..\AssemblyStaticInfo.cs">
@@ -72,6 +94,23 @@
       <RequiredTargetFramework>3.5</RequiredTargetFramework>
     </Reference>
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.Naming/Makefile.in b/gendarme/rules/Gendarme.Rules.Naming/Makefile.in
index 50b4f7c..1241702 100644
--- a/gendarme/rules/Gendarme.Rules.Naming/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Naming/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(rules_categorydir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
-rules_categorySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(rules_category_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,20 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(rules_documentation_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -130,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -291,14 +367,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Naming/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Naming/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Naming/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Naming/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -308,6 +384,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../common.make $(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -316,42 +393,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-rules_categorySCRIPTS: $(rules_category_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_categorydir)" || $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)"
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_categorydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(rules_categorySCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	    $(rules_categorySCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rules_categorydir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rules_categorydir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-rules_categorySCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	done
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(rules_categorydir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -360,7 +458,7 @@ uninstall-rules_documentationDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -377,7 +475,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -385,7 +483,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -411,16 +509,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -428,14 +526,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -447,7 +545,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -456,29 +554,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -499,29 +602,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -544,10 +659,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -555,6 +675,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -574,6 +695,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -583,18 +706,28 @@ install-data-am: install-rules_categorySCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -616,8 +749,8 @@ ps-am:
 uninstall-am: uninstall-rules_categorySCRIPTS \
 	uninstall-rules_documentationDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -637,11 +770,11 @@ uninstall-am: uninstall-rules_categorySCRIPTS \
 
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -650,7 +783,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
@@ -670,6 +803,7 @@ $(rules_doc_source):
 
 clean-local:
 	rm -fr doc
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Naming/ParameterNamesShouldMatchOverridenMethodRule.cs b/gendarme/rules/Gendarme.Rules.Naming/ParameterNamesShouldMatchOverridenMethodRule.cs
index 95a3e46..7e4a8db 100644
--- a/gendarme/rules/Gendarme.Rules.Naming/ParameterNamesShouldMatchOverridenMethodRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Naming/ParameterNamesShouldMatchOverridenMethodRule.cs
@@ -3,8 +3,10 @@
 //
 // Authors:
 //	Andreas Noever <andreas.noever at gmail.com>
+//	Sebastien Pouliot  <sebastien at ximian.com>
 //
 //  (C) 2008 Andreas Noever
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -84,8 +86,10 @@ namespace Gendarme.Rules.Naming {
 			base.Initialize (runner);
 
 			//check if this is a Boo assembly using macros
-			Runner.AnalyzeAssembly += delegate (object o, RunnerEventArgs e) {
-				IsBooAssemblyUsingMacro = (e.CurrentAssembly.MainModule.HasTypeReference (BooMacroStatement));
+			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
+				IsBooAssemblyUsingMacro = (e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+					return tr.IsNamed ("Boo.Lang.Compiler.Ast", "MacroStatement");
+				}));
 			};
 		}
 
@@ -97,29 +101,26 @@ namespace Gendarme.Rules.Naming {
 			if (name != base_name) {
 				if (!explicitInterfaceCheck)
 					return false;
-				string full_name = baseMethod.DeclaringType.FullName;
-				if (!name.StartsWith (full_name, StringComparison.Ordinal))
+
+				TypeReference btype = baseMethod.DeclaringType;
+				string bnspace = btype.Namespace;
+				if (!name.StartsWith (bnspace, StringComparison.Ordinal))
 					return false;
-				if (name [full_name.Length] != '.')
+				if (name [bnspace.Length] != '.')
 					return false;
-				if (name.LastIndexOf (base_name, StringComparison.Ordinal) != full_name.Length + 1)
+
+				string bname = btype.Name;
+				if (String.CompareOrdinal (bname, 0, name, bnspace.Length + 1, bname.Length) != 0)
 					return false;
-			}
-			if (method.ReturnType.FullName != baseMethod.ReturnType.FullName)
-				return false;
-			if (method.HasParameters != baseMethod.HasParameters)
-				return false;
 
-			IList<ParameterDefinition> pdc = method.Parameters;
-			IList<ParameterDefinition> base_pdc = baseMethod.Parameters;
-			if (pdc.Count != base_pdc.Count)
-				return false;
+				int dot = bnspace.Length + bname.Length + 1;
+				if (name [dot] != '.')
+					return false;
 
-			for (int i = 0; i < pdc.Count; i++) {
-				if (pdc [i].ParameterType != base_pdc [i].ParameterType)
+				if (name.LastIndexOf (base_name, StringComparison.Ordinal) != dot + 1)
 					return false;
 			}
-			return true;
+			return method.CompareSignature (baseMethod);
 		}
 
 		private static MethodDefinition GetBaseMethod (MethodDefinition method)
@@ -130,7 +131,7 @@ namespace Gendarme.Rules.Naming {
 
 			while ((baseType.BaseType != null) && (baseType != baseType.BaseType)) {
 				baseType = baseType.BaseType.Resolve ();
-				if (baseType == null)
+				if ((baseType == null) || !baseType.HasMethods)
 					return null;		// could not resolve
 
 				foreach (MethodDefinition baseMethodCandidate in baseType.Methods) {
@@ -143,11 +144,15 @@ namespace Gendarme.Rules.Naming {
 
 		private static MethodDefinition GetInterfaceMethod (MethodDefinition method)
 		{
-			TypeDefinition type = (TypeDefinition) method.DeclaringType;
+			TypeDefinition type = (method.DeclaringType as TypeDefinition);
+			if (!type.HasInterfaces)
+				return null;
+
 			foreach (TypeReference interfaceReference in type.Interfaces) {
 				TypeDefinition interfaceCandidate = interfaceReference.Resolve ();
-				if (interfaceCandidate == null)
+				if ((interfaceCandidate == null) || !interfaceCandidate.HasMethods)
 					continue;
+
 				foreach (MethodDefinition interfaceMethodCandidate in interfaceCandidate.Methods) {
 					if (SignatureMatches (method, interfaceMethodCandidate, true))
 						return interfaceMethodCandidate;
@@ -177,7 +182,8 @@ namespace Gendarme.Rules.Naming {
 			IList<ParameterDefinition> pdc = method.Parameters;
 			for (int i = 0; i < pdc.Count; i++) {
 				if (pdc [i].Name != base_pdc [i].Name) {
-					string s = string.Format ("The name of parameter #{0} ({1}) does not match the name of the parameter in the overriden method ({2}).", 
+					string s = String.Format (CultureInfo.InvariantCulture,
+						"The name of parameter #{0} ({1}) does not match the name of the parameter in the overriden method ({2}).", 
 						i + 1, pdc [i].Name, base_pdc [i].Name);
 					Runner.Report (method, Severity.Medium, Confidence.High, s);
 				}
@@ -185,21 +191,11 @@ namespace Gendarme.Rules.Naming {
 			return Runner.CurrentRuleResult;
 		}
 
-		private const string BooMacroStatement = "Boo.Lang.Compiler.Ast.MacroStatement";
-
-		private bool IsBooAssemblyUsingMacro {
-			get {
-				return isBooAssemblyUsingMacro;
-			}
-			set {
-				isBooAssemblyUsingMacro = value;
-			}
-		}
-		private bool isBooAssemblyUsingMacro;
+		private bool IsBooAssemblyUsingMacro { get; set; }
 
 		private static bool IsBooMacroParameter (ParameterReference p)
 		{
-			return p.Name == "macro" && p.ParameterType.FullName == BooMacroStatement;
+			return p.Name == "macro" && p.ParameterType.IsNamed ("Boo.Lang.Compiler.Ast", "MacroStatement");
 		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Naming/Test/Makefile.in b/gendarme/rules/Gendarme.Rules.Naming/Test/Makefile.in
index f0bc79c..30cc584 100644
--- a/gendarme/rules/Gendarme.Rules.Naming/Test/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Naming/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Naming/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Naming/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Naming/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Naming/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -298,6 +338,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -306,18 +348,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -352,6 +404,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Naming/Test/ParameterNamesShouldMatchOverridenMethodTest.cs b/gendarme/rules/Gendarme.Rules.Naming/Test/ParameterNamesShouldMatchOverridenMethodTest.cs
index ff5fc3a..7baa37f 100644
--- a/gendarme/rules/Gendarme.Rules.Naming/Test/ParameterNamesShouldMatchOverridenMethodTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Naming/Test/ParameterNamesShouldMatchOverridenMethodTest.cs
@@ -3,8 +3,10 @@
 //
 // Authors:
 //	Andreas Noever <andreas.noever at gmail.com>
+//	Sebastien Pouliot  <sebastien at ximian.com>
 //
 //  (C) 2008 Andreas Noever
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -27,15 +29,12 @@
 //
 
 using System;
-using System.Reflection;
 
-using Gendarme.Framework;
+using Gendarme.Framework.Helpers;
 using Gendarme.Rules.Naming;
-using Gendarme.Framework.Rocks;
-using Mono.Cecil;
 
 using NUnit.Framework;
-using Test.Rules.Helpers;
+using Test.Rules.Fixtures;
 
 namespace Test.Rules.Naming {
 
@@ -75,141 +74,94 @@ namespace Test.Rules.Naming {
 	}
 
 	[TestFixture]
-	public class ParameterNamesShouldMatchOverridenMethodTest : BaseClass, ISomeInterface, ISomeInterface2 {
+	public class ParameterNamesShouldMatchOverridenMethodTest : MethodRuleTestFixture<ParameterNamesShouldMatchOverriddenMethodRule> {
 
-		private ParameterNamesShouldMatchOverriddenMethodRule rule;
-		private AssemblyDefinition assembly;
-		private TypeDefinition type;
-		private TestRunner runner;
+		class TestCase : BaseClass, ISomeInterface, ISomeInterface2, IEquatable<string> {
+			protected override void VirtualCorrect (int vc1, int vc2)
+			{
+			}
 
-		[TestFixtureSetUp]
-		public void FixtureSetUp ()
-		{
-			string unit = Assembly.GetExecutingAssembly ().Location;
-			assembly = AssemblyDefinition.ReadAssembly (unit);
-			type = assembly.MainModule.GetType ("Test.Rules.Naming.ParameterNamesShouldMatchOverridenMethodTest");
-			rule = new ParameterNamesShouldMatchOverriddenMethodRule ();
-			runner = new TestRunner (rule);
-		}
+			protected override void VirtualIncorrect (int vi1, int vi2a)
+			{
+			}
 
-		private MethodDefinition GetTest (string name)
-		{
-			foreach (MethodDefinition method in type.Methods) {
-				if (method.Name == name)
-					return method;
+			protected override void VirtualSuperIncorrect (int vsi1, bool vsi2_)
+			{
 			}
-			return null;
-		}
 
-		protected override void VirtualCorrect (int vc1, int vc2)
-		{
-		}
+			protected override void AbstractCorrect (int ac1, int ac2)
+			{
+				throw new NotImplementedException ();
+			}
 
-		[Test]
-		public void TestVirtualCorrect ()
-		{
-			MethodDefinition method = GetTest ("VirtualCorrect");
-			Assert.AreEqual (RuleResult.Success, runner.CheckMethod (method), "RuleResult");
-			Assert.AreEqual (0, runner.Defects.Count, "Count");
-		}
+			protected override void AbstractIncorrect (int ai1, int ai2_)
+			{
+				throw new NotImplementedException ();
+			}
 
-		protected override void VirtualIncorrect (int vi1, int vi2a)
-		{
-		}
+			protected virtual void NoOverwrite (int a, int bb)
+			{
+			}
 
-		[Test]
-		public void TestVirtualIncorrect ()
-		{
-			MethodDefinition method = GetTest ("VirtualIncorrect");
-			Assert.AreEqual (RuleResult.Failure, runner.CheckMethod (method), "RuleResult");
-			Assert.AreEqual (1, runner.Defects.Count, "Count");
-		}
+			public bool InterfaceMethod (int im_)
+			{
+				return false;
+			}
 
-		protected override void VirtualSuperIncorrect (int vsi1, bool vsi2_)
-		{
-		}
+			bool ISomeInterface2.InterfaceMethod2 (int im_)
+			{
+				return false;
+			}
 
-		[Test]
-		public void TestVirtualSuperIncorrect ()
-		{
-			MethodDefinition method = GetTest ("VirtualSuperIncorrect");
-			Assert.AreEqual (RuleResult.Failure, runner.CheckMethod (method), "RuleResult");
-			Assert.AreEqual (1, runner.Defects.Count, "Count");
-		}
+			void NoParameter ()
+			{
+			}
 
-		protected override void AbstractCorrect (int ac1, int ac2)
-		{
-			throw new NotImplementedException ();
+			public bool Equals (string s)
+			{
+				throw new NotImplementedException ();
+			}
 		}
 
 		[Test]
-		public void TestAbstractCorrect ()
+		public void TestVirtual ()
 		{
-			MethodDefinition method = GetTest ("AbstractCorrect");
-			Assert.AreEqual (RuleResult.Success, runner.CheckMethod (method), "RuleResult");
-			Assert.AreEqual (0, runner.Defects.Count, "Count");
-		}
-
-		protected override void AbstractIncorrect (int ai1, int ai2_)
-		{
-			throw new NotImplementedException ();
+			AssertRuleSuccess<TestCase> ("VirtualCorrect");
+			AssertRuleFailure<TestCase> ("VirtualIncorrect", 1);
+			AssertRuleFailure<TestCase> ("VirtualSuperIncorrect", 1);
 		}
 
 		[Test]
-		public void TestAbstractIncorrect ()
-		{
-			MethodDefinition method = GetTest ("AbstractIncorrect");
-			Assert.AreEqual (RuleResult.Failure, runner.CheckMethod (method), "RuleResult");
-			Assert.AreEqual (1, runner.Defects.Count, "Count");
-		}
-
-		protected virtual void NoOverwrite (int a, int bb)
+		public void TestAbstract ()
 		{
+			AssertRuleSuccess<TestCase> ("AbstractCorrect");
+			AssertRuleFailure<TestCase> ("AbstractIncorrect", 1);
 		}
 
 		[Test]
 		public void TestNoOverwrite ()
 		{
-			MethodDefinition method = GetTest ("NoOverwrite");
-			Assert.AreEqual (RuleResult.Success, runner.CheckMethod (method), "RuleResult");
-			Assert.AreEqual (0, runner.Defects.Count, "Count");
-		}
-
-		public bool InterfaceMethod (int im_)
-		{
-			return false;
+			AssertRuleSuccess<TestCase> ("NoOverwrite");
 		}
 
 		[Test]
 		public void TestInterfaceMethod ()
 		{
-			MethodDefinition method = GetTest ("InterfaceMethod");
-			Assert.AreEqual (RuleResult.Failure, runner.CheckMethod (method), "RuleResult");
-			Assert.AreEqual (1, runner.Defects.Count, "Count");
-		}
-
-		bool ISomeInterface2.InterfaceMethod2 (int im_)
-		{
-			return false;
+			AssertRuleFailure<TestCase> ("InterfaceMethod", 1);
+			AssertRuleFailure<TestCase> ("Test.Rules.Naming.ISomeInterface2.InterfaceMethod2", 1);
 		}
 
 		[Test]
-		public void TestInterfaceMethod2 ()
-		{
-			MethodDefinition method = GetTest ("Test.Rules.Naming.ISomeInterface2.InterfaceMethod2");
-			Assert.AreEqual (RuleResult.Failure, runner.CheckMethod (method), "RuleResult");
-			Assert.AreEqual (1, runner.Defects.Count, "Count");
-		}
-
-		void NoParameter ()
+		public void TestDoesNotApply ()
 		{
+			AssertRuleDoesNotApply<TestCase> ("NoParameter");
 		}
 
 		[Test]
-		public void TestDoesNotApply ()
+		public void GenericInterface ()
 		{
-			MethodDefinition method = GetTest ("NoParameter");
-			Assert.AreEqual (RuleResult.DoesNotApply, runner.CheckMethod (method), "RuleResult");
+			AssertRuleSuccess<OpCodeBitmask> ("Equals", new Type [] { typeof (OpCodeBitmask) });
+			AssertRuleFailure<TestCase> ("Equals", 1);
 		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Naming/Test/Tests.Rules.Naming.csproj b/gendarme/rules/Gendarme.Rules.Naming/Test/Tests.Rules.Naming.csproj
index 549c8b8..549dc4d 100755
--- a/gendarme/rules/Gendarme.Rules.Naming/Test/Tests.Rules.Naming.csproj
+++ b/gendarme/rules/Gendarme.Rules.Naming/Test/Tests.Rules.Naming.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Tests.Rules.Naming</RootNamespace>
     <AssemblyName>Tests.Rules.Naming</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -21,6 +41,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -29,6 +50,7 @@
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
@@ -76,6 +98,23 @@
   <ItemGroup>
     <Folder Include="Properties\" />
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.Naming/Test/UseCorrectPrefixTest.cs b/gendarme/rules/Gendarme.Rules.Naming/Test/UseCorrectPrefixTest.cs
index 7ac6880..7000340 100644
--- a/gendarme/rules/Gendarme.Rules.Naming/Test/UseCorrectPrefixTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Naming/Test/UseCorrectPrefixTest.cs
@@ -54,6 +54,10 @@ namespace Test.Rules.Naming {
 	public class ILRange {
 	}
 
+	public class InMemoryDoohicky
+	{
+	}
+
 	public interface I {
 	}
 
@@ -102,6 +106,7 @@ namespace Test.Rules.Naming {
 			AssertRuleFailure<CIncorrectClass> (1);
 			AssertRuleFailure<INcorrectClass> (1);
 			AssertRuleSuccess<ILRange> ();
+			AssertRuleSuccess<InMemoryDoohicky> ();
 		}
 
 		[Test]
diff --git a/gendarme/rules/Gendarme.Rules.Naming/Test/UseCorrectSuffixTest.cs b/gendarme/rules/Gendarme.Rules.Naming/Test/UseCorrectSuffixTest.cs
index adb15fa..0fc5205 100644
--- a/gendarme/rules/Gendarme.Rules.Naming/Test/UseCorrectSuffixTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Naming/Test/UseCorrectSuffixTest.cs
@@ -176,13 +176,8 @@ namespace Test.Rules.Naming {
 		}
 	}
 
-	public class DerivingClassImplementingInterfaces : EventArgs, IEnumerable, IPermission {		 
+	public class DerivingClassImplementingInterfaces : EventArgs, IPermission {		 
 		
-		public IEnumerator GetEnumerator ()
-		{
-			throw new NotImplementedException();
-		}
-
 		public void FromXml (SecurityElement e)
 		{
 			throw new NotImplementedException();
@@ -246,16 +241,27 @@ namespace Test.Rules.Naming {
 	public class DictionaryIncorrectDerived<T, V> : DictionaryIncorrect<T, V> {
 	}
 
+	// test case from https://github.com/Iristyle/mono-tools/commit/40bfb2260511cfe4171e9153c3c434fedd8a4d4a.diff
+
+	public class CorrectCollectionAndDictionary<T, V> : Dictionary<T, V>, ICollection<V> {
+		public void Add(V item) { throw new NotImplementedException(); }
+		public bool Contains(V item) { throw new NotImplementedException(); }
+		public void CopyTo(V[] array, int arrayIndex) { throw new NotImplementedException(); }
+		public bool IsReadOnly { get { throw new NotImplementedException(); } }
+		public bool Remove(V item) { throw new NotImplementedException(); }
+		public new IEnumerator<V> GetEnumerator() { throw new NotImplementedException(); }
+	}
+
 	[TestFixture]
 	public class UseCorrectSuffixTest : TypeRuleTestFixture<UseCorrectSuffixRule> {
 
-		void AssertRuleFailureWithHighConfidence<T>()
+		void AssertRuleFailureWithHighConfidence<T> (int num)
 		{
-			AssertRuleFailure<T> (1);
+			AssertRuleFailure<T> (num);
 			Assert.AreEqual (Confidence.High, Runner.Defects [0].Confidence, typeof (T).Name);
 		}
 
-		void AssertRuleFailureWithLowConfidence<T>()
+		void AssertRuleFailureWithLowConfidence<T> ()
 		{
 			AssertRuleFailure<T> (1);
 			Assert.AreEqual (Confidence.Low, Runner.Defects [0].Confidence, typeof (T).Name);
@@ -270,7 +276,7 @@ namespace Test.Rules.Naming {
 		[Test]
 		public void TestOneLevelInheritanceIncorrectName () 
 		{
-			AssertRuleFailureWithHighConfidence<IncorrectAttr> ();
+			AssertRuleFailureWithHighConfidence<IncorrectAttr> (1);
 		}
 		
 		[Test]
@@ -288,7 +294,7 @@ namespace Test.Rules.Naming {
 		[Test]
 		public void TestVariousLevelInheritanceIncorrectName () 
 		{
-			AssertRuleFailureWithHighConfidence<OtherAttr> ();
+			AssertRuleFailureWithHighConfidence<OtherAttr> (1);
 		}
 		
 		[Test]
@@ -326,7 +332,7 @@ namespace Test.Rules.Naming {
        		[Test]
 		public void TestMultipleInterfaceImplementerIncorrectName () 
 		{
-			AssertRuleFailureWithHighConfidence<MultipleInterfaceImplementer> ();
+			AssertRuleFailureWithHighConfidence<MultipleInterfaceImplementer> (1);
 		}
 
 		[Test]
@@ -342,7 +348,7 @@ namespace Test.Rules.Naming {
 		{
 			//this type derives from an incorrect base type, but also introduce its own defect
 			//hence it has high confidence
-			AssertRuleFailureWithHighConfidence<IncorrectICollectionImplementer> ();
+			AssertRuleFailureWithHighConfidence<IncorrectICollectionImplementer> (1);
 		}
 		
 		[Test]
@@ -360,23 +366,24 @@ namespace Test.Rules.Naming {
 		[Test]
 		public void TestDerivingClassImplementingInterfacesAnotherIncorrectName ()
 		{
-			//this type derives from an incorrect base type, *without* introducing its own defect
-			//hence it has low confidence
-			AssertRuleFailureWithLowConfidence<IncorrectDerivingClassImplementingInterfacesCollection> ();
+			//this type derives from an incorrect base type
+			AssertRuleFailureWithHighConfidence<IncorrectDerivingClassImplementingInterfacesCollection> (2);
 		}
 
 		[Test]
 		public void GenericCollection ()
 		{
 			AssertRuleSuccess<CorrectCollection<int>> ();
-			AssertRuleFailureWithHighConfidence<CollectionIncorrect<int>> ();
+			AssertRuleFailureWithHighConfidence<CollectionIncorrect<int>> (1);
 		}
 
 		[Test]
 		public void GenericDictionary ()
 		{
 			AssertRuleSuccess<CorrectDictionary<int,int>> ();
-			AssertRuleFailureWithHighConfidence<DictionaryIncorrect<int,int>> ();
+			// to be consistent with FxCop, a class implementing IDictionary and ICollection should end in Dictionary
+			AssertRuleSuccess<CorrectCollectionAndDictionary<int, int>> ();
+			AssertRuleFailureWithHighConfidence<DictionaryIncorrect<int, int>> (1);
 		}
 
 		[Test]
@@ -410,11 +417,11 @@ namespace Test.Rules.Naming {
 		public void CheckShouldNeverBeUsedSuffixes ()
 		{
 			AssertRuleSuccess<My> ();
-			AssertRuleFailureWithHighConfidence<MyDelegate> ();
-			AssertRuleFailureWithHighConfidence<MyEnum> ();
-			AssertRuleFailureWithHighConfidence<MyFlags> ();
-			AssertRuleFailureWithHighConfidence<MyEx> ();
-			AssertRuleFailureWithHighConfidence<MyImpl> ();
+			AssertRuleFailureWithHighConfidence<MyDelegate> (1);
+			AssertRuleFailureWithHighConfidence<MyEnum> (1);
+			AssertRuleFailureWithHighConfidence<MyFlags> (1);
+			AssertRuleFailureWithHighConfidence<MyEx> (1);
+			AssertRuleFailureWithHighConfidence<MyImpl> (1);
 		}
 
 		class MyCollection : EventArgs {
@@ -467,16 +474,16 @@ namespace Test.Rules.Naming {
 		public void EnumName ()
 		{
 			AssertRuleSuccess<ReturnValue> ();
-			AssertRuleFailureWithHighConfidence<ReturnValueEnum> ();
-			AssertRuleFailureWithHighConfidence<returnvalueenum> ();
+			AssertRuleFailureWithHighConfidence<ReturnValueEnum> (1);
+			AssertRuleFailureWithHighConfidence<returnvalueenum> (1);
 		}
 
 		[Test]
 		public void FlagsName ()
 		{
 			AssertRuleSuccess<ReturnValues> ();
-			AssertRuleFailureWithHighConfidence<ReturnValuesFlags> ();
-			AssertRuleFailureWithHighConfidence<returnvaluesflags> ();
+			AssertRuleFailureWithHighConfidence<ReturnValuesFlags> (1);
+			AssertRuleFailureWithHighConfidence<returnvaluesflags> (1);
 		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Naming/UseCorrectCasingRule.cs b/gendarme/rules/Gendarme.Rules.Naming/UseCorrectCasingRule.cs
index 32cec08..6a6252b 100644
--- a/gendarme/rules/Gendarme.Rules.Naming/UseCorrectCasingRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Naming/UseCorrectCasingRule.cs
@@ -30,6 +30,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 using System.Linq;
 
 using Mono.Cecil;
@@ -96,7 +97,7 @@ namespace Gendarme.Rules.Naming {
 				return name.ToUpperInvariant ();
 
 			int index = IndexOfFirstCorrectChar (name);
-			return Char.ToUpperInvariant (name [index]).ToString () + name.Substring (index + 1);
+			return Char.ToUpperInvariant (name [index]).ToString (CultureInfo.InvariantCulture) + name.Substring (index + 1);
 		}
 
 		// check if name is camelCased
@@ -118,7 +119,7 @@ namespace Gendarme.Rules.Naming {
 				return name.ToLowerInvariant ();
 
 			int index = IndexOfFirstCorrectChar (name);
-			return Char.ToLowerInvariant (name [index]).ToString () + name.Substring (index + 1);
+			return Char.ToLowerInvariant (name [index]).ToString (CultureInfo.InvariantCulture) + name.Substring (index + 1);
 		}
 
 		private static int IndexOfFirstCorrectChar (string s)
@@ -144,14 +145,15 @@ namespace Gendarme.Rules.Naming {
 			foreach (string ns in nspace.Split ('.')) {
 				switch (ns.Length) {
 				case 1:
-					ReportCasingError (nd, string.Format (
+					ReportCasingError (nd, String.Format (CultureInfo.InvariantCulture,
 						"Use of single character namespace is discouraged. Rename namespace {0}", ns));
 
 					break;
 				case 2:
 					// if the subnamespace is made of 2 chars, each letter have to be uppercase
 					if (ns.Any (c => Char.IsLetter (c) && Char.IsLower (c))) {
-						string msg = String.Format ("In namespaces made of two characters, both characters should uppercase. Rename namespace '{0}' to '{1}'",
+						string msg = String.Format (CultureInfo.InvariantCulture,
+							"In namespaces made of two characters, both characters should uppercase. Rename namespace '{0}' to '{1}'",
 							ns, ns.ToUpperInvariant ());
 						ReportCasingError (nd, msg);
 					}
@@ -159,11 +161,13 @@ namespace Gendarme.Rules.Naming {
 				default:
 					// if the sub namespace is made of 3 or more chars, make sure they're not all uppercase
 					if (ns.All (c => Char.IsLetter (c) && Char.IsUpper (c))) {
-						string msg = String.Format ("Namespaces longer than two characters should not be all uppercase. Rename namespace '{0}' to '{1}{2}'",
-							ns, ns [0].ToString (), ns.Substring (1).ToLowerInvariant ());
+						string msg = String.Format (CultureInfo.InvariantCulture,
+							"Namespaces longer than two characters should not be all uppercase. Rename namespace '{0}' to '{1}{2}'",
+							ns, ns [0].ToString (CultureInfo.InvariantCulture), ns.Substring (1).ToLowerInvariant ());
 						ReportCasingError (nd, msg);
 					} else if (!IsPascalCase (ns)) {
-						string msg = String.Format ("Namespaces longer than two characters should be pascal cased. Rename namespace '{0}' to '{1}'",
+						string msg = String.Format (CultureInfo.InvariantCulture,
+							"Namespaces longer than two characters should be pascal cased. Rename namespace '{0}' to '{1}'",
 							ns, PascalCase (ns));
 						ReportCasingError (nd, msg);
 					}
@@ -189,7 +193,7 @@ namespace Gendarme.Rules.Naming {
 			// types should all be PascalCased
 			string name = type.Name;
 			if (!IsPascalCase (name)) {
-				ReportCasingError (type, string.Format (
+				ReportCasingError (type, String.Format (CultureInfo.InvariantCulture,
 					"Type names should all be pascal-cased. Rename '{0}' type to '{1}'.", 
 					name, PascalCase (name)));
 			}
@@ -222,7 +226,8 @@ namespace Gendarme.Rules.Naming {
 
 			// like types, methods/props should all be PascalCased, too
 			if (!IsPascalCase (name)) {
-				string errorMessage = String.Format ("By existing naming conventions, all the method and property names should all be pascal-cased (e.g. MyOperation). Rename '{0}' to '{1}'.",
+				string errorMessage = String.Format (CultureInfo.InvariantCulture,
+					"By existing naming conventions, all the method and property names should all be pascal-cased (e.g. MyOperation). Rename '{0}' to '{1}'.",
 					name, PascalCase (name));
 				Runner.Report (method, Severity.Medium, Confidence.High, errorMessage);
 			}
@@ -232,7 +237,8 @@ namespace Gendarme.Rules.Naming {
 				foreach (ParameterDefinition param in method.Parameters) {
 					// params should all be camelCased
 					if (!IsCamelCase (param.Name)) {
-						string errorMessage = String.Format ("By existing naming conventions, the parameter names should all be camel-cased (e.g. myParameter). Rename '{0}' parameter to '{1}'.",
+						string errorMessage = String.Format (CultureInfo.InvariantCulture,
+							"By existing naming conventions, the parameter names should all be camel-cased (e.g. myParameter). Rename '{0}' parameter to '{1}'.",
 							param, CamelCase (param.Name));
 						Runner.Report (method, Severity.Medium, Confidence.High, errorMessage);
 					}
diff --git a/gendarme/rules/Gendarme.Rules.Naming/UseCorrectPrefixRule.cs b/gendarme/rules/Gendarme.Rules.Naming/UseCorrectPrefixRule.cs
index 68de78a..03ff58c 100644
--- a/gendarme/rules/Gendarme.Rules.Naming/UseCorrectPrefixRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Naming/UseCorrectPrefixRule.cs
@@ -29,6 +29,7 @@
 //
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 using Gendarme.Framework;
@@ -89,9 +90,9 @@ namespace Gendarme.Rules.Naming {
 				return true;
 
 			switch (name [0]) {
-			case 'C':	// MFC like CMyClass - but works for CLSCompliant
-			case 'I':	// interface-like
-				return Char.IsLower (name [1]) == Char.IsLower (name [2]);
+			case 'C':	// MFC like CMyClass should fail - but works for CLSCompliant
+			case 'I':	// interface-like - Classes beginning with In or Is etc should pass, e.g. InMemoryDoohicky
+				return Char.IsLower (name [1]) ? true : Char.IsUpper (name [2]);
 			default:
 				return true;
 			}
@@ -118,13 +119,16 @@ namespace Gendarme.Rules.Naming {
 			if (type.IsInterface) {
 				// interfaces should look like 'ISomething'
 				if (!IsCorrectInterfaceName (name)) { 
-					string s = String.Format ("The '{0}' interface name doesn't have the required 'I' prefix. Acoording to existing naming conventions, all interface names should begin with the 'I' letter followed by another capital letter.", name);
+					string s = String.Format (CultureInfo.InvariantCulture,
+						"The '{0}' interface name doesn't have the required 'I' prefix. Acoording to existing naming conventions, all interface names should begin with the 'I' letter followed by another capital letter.", 
+						name);
 					Runner.Report (type, Severity.Critical, Confidence.High, s);
 				}
 			} else {
 				// class should _not_ look like 'CSomething" or like an interface 'IOops'
 				if (!IsCorrectTypeName (name)) { 
-					string s = String.Format ("The '{0}' type name starts with '{1}' prefix but, according to existing naming conventions, type names should not have any specific prefix.", 
+					string s = String.Format (CultureInfo.InvariantCulture,
+						"The '{0}' type name starts with '{1}' prefix but, according to existing naming conventions, type names should not have any specific prefix.", 
 						name, name [0]);
 					Runner.Report (type, Severity.Medium, Confidence.High, s);
 				}
@@ -137,7 +141,9 @@ namespace Gendarme.Rules.Naming {
 				foreach (GenericParameter parameter in type.GenericParameters) {
 					string param_name = parameter.Name;
 					if (IsCorrectGenericParameterName (param_name)) {
-						string s = String.Format ("The generic parameter '{0}' should be prefixed with 'T' or be a single, uppercased letter.", param_name);
+						string s = String.Format (CultureInfo.InvariantCulture,
+							"The generic parameter '{0}' should be prefixed with 'T' or be a single, uppercased letter.", 
+							param_name);
 						Runner.Report (type, Severity.High, Confidence.High, s);
 					}
 				}
diff --git a/gendarme/rules/Gendarme.Rules.Naming/UseCorrectSuffixRule.cs b/gendarme/rules/Gendarme.Rules.Naming/UseCorrectSuffixRule.cs
index cad641b..671d842 100644
--- a/gendarme/rules/Gendarme.Rules.Naming/UseCorrectSuffixRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Naming/UseCorrectSuffixRule.cs
@@ -32,6 +32,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 using System.Text;
 
 using Mono.Cecil;
@@ -83,29 +84,30 @@ namespace Gendarme.Rules.Naming {
 	public class UseCorrectSuffixRule : Rule, ITypeRule {
 
 		static Dictionary<string, HashSet<string>> definedSuffixes = new Dictionary<string, HashSet<string>> ();
+		static Dictionary<string, string> namespaces = new Dictionary<string, string> ();
 		static SortedDictionary<string, Func<TypeDefinition, string>> reservedSuffixes = new SortedDictionary<string, Func<TypeDefinition, string>> ();
 
 		static UseCorrectSuffixRule ()
 		{
-			Add ("Attribute", "System.Attribute", true);
-			Add ("Collection", "System.Collections.ICollection", false);
-			Add ("Collection", "System.Collections.IEnumerable", false);
-			Add ("Collection", "System.Collections.Queue", false);
-			Add ("Collection", "System.Collections.Stack", false);
-			Add ("Collection", "System.Collections.Generic.ICollection`1", false);
-			Add ("Collection", "System.Data.DataSet", false);
-			Add ("Collection", "System.Data.DataTable", false);
-			Add ("Condition", "System.Security.Policy.IMembershipCondition", true);
-			Add ("DataSet", "System.Data.DataSet", true);
-			Add ("DataTable", "System.Data.DataTable", true);
-			Add ("Dictionary", "System.Collections.IDictionary", false);
-			Add ("Dictionary", "System.Collections.IDictionary`2", false);
-			Add ("EventArgs", "System.EventArgs", true);
-			Add ("Exception", "System.Exception", true);
-			Add ("Permission", "System.Security.IPermission", true);
-			Add ("Queue", "System.Collections.Queue", true);
-			Add ("Stack", "System.Collections.Stack", true);
-			Add ("Stream", "System.IO.Stream", true);
+			Add ("Attribute", "System", "Attribute", true);
+			Add ("Collection", "System.Collections", "ICollection", false);
+			Add ("Collection", "System.Collections", "IEnumerable", false);
+			Add ("Collection", "System.Collections", "Queue", false);
+			Add ("Collection", "System.Collections", "Stack", false);
+			Add ("Collection", "System.Collections.Generic", "ICollection`1", false);
+			Add ("Collection", "System.Data", "DataSet", false);
+			Add ("Collection", "System.Data", "DataTable", false);
+			Add ("Condition", "System.Security.Policy", "IMembershipCondition", true);
+			Add ("DataSet", "System.Data", "DataSet", true);
+			Add ("DataTable", "System.Data", "DataTable", true);
+			Add ("Dictionary", "System.Collections", "IDictionary", false);
+			Add ("Dictionary", "System.Collections", "IDictionary`2", false);
+			Add ("EventArgs", "System", "EventArgs", true);
+			Add ("Exception", "System", "Exception", true);
+			Add ("Permission", "System.Security", "IPermission", true);
+			Add ("Queue", "System.Collections", "Queue", true);
+			Add ("Stack", "System.Collections", "Stack", true);
+			Add ("Stream", "System.IO", "Stream", true);
 
 			// special cases
 			reservedSuffixes.Add ("Collection", message => CheckCollection (message));
@@ -119,36 +121,40 @@ namespace Gendarme.Rules.Naming {
 			reservedSuffixes.Add ("Impl", message => "Use the 'Core' prefix instead of 'Impl'.");
 		}
 
-		static void Add (string suffix, string type, bool reserved)
+		static void Add (string suffix, string nameSpace, string name, bool reserved)
 		{
 			if (reserved) {
-				reservedSuffixes.Add (suffix, message => InheritsOrImplements (message, type));
+				reservedSuffixes.Add (suffix, message => InheritsOrImplements (message, nameSpace, name));
 			}
 
 			HashSet<string> set;
-			if (!definedSuffixes.TryGetValue (type, out set)) {
+			if (!definedSuffixes.TryGetValue (name, out set)) {
 				set = new HashSet<string> ();
-				definedSuffixes.Add (type, set);
+				definedSuffixes.Add (name, set);
+				namespaces.Add (name, nameSpace);
 			}
 			set.Add (suffix);
 		}
 
-		static string InheritsOrImplements (TypeReference type, string subtype)
+		static string InheritsOrImplements (TypeReference type, string nameSpace, string name)
 		{
-			if (type.Inherits (subtype) || type.Implements (subtype))
+			if (type.Inherits (nameSpace, name) || type.Implements (nameSpace, name))
 				return String.Empty;
-			return String.Format ("'{0}' should only be used for types that inherits or implements {1}.", type.Name, subtype);
+
+			return String.Format (CultureInfo.InvariantCulture,
+				"'{0}' should only be used for types that inherits or implements '{1}.{2}'.", 
+				type.Name, nameSpace, name);
 		}
 
 		static string CheckCollection (TypeReference type)
 		{
-			if (type.Implements ("System.Collections.ICollection") ||
-				type.Implements ("System.Collections.IEnumerable") ||
-				type.Implements ("System.Collections.Generic.ICollection`1"))
+			if (type.Implements ("System.Collections", "ICollection") ||
+				type.Implements ("System.Collections", "IEnumerable") ||
+				type.Implements ("System.Collections.Generic", "ICollection`1"))
 				return String.Empty;
 
-			if (type.Inherits ("System.Collections.Queue") || type.Inherits ("System.Collections.Stack") || 
-				type.Inherits ("System.Data.DataSet") || type.Inherits ("System.Data.DataTable"))
+			if (type.Inherits ("System.Collections", "Queue") || type.Inherits ("System.Collections", "Stack") || 
+				type.Inherits ("System.Data", "DataSet") || type.Inherits ("System.Data", "DataTable"))
 				return String.Empty;
 
 			return "'Collection' should only be used for implementing ICollection or IEnumerable or inheriting from Queue, Stack, DataSet and DataTable.";
@@ -156,7 +162,7 @@ namespace Gendarme.Rules.Naming {
 
 		static string CheckDictionary (TypeReference type)
 		{
-			if (type.Implements ("System.Collections.IDictionary") || type.Implements ("System.Collections.Generic.IDictionary`2"))
+			if (type.Implements ("System.Collections", "IDictionary") || type.Implements ("System.Collections.Generic", "IDictionary`2"))
 				return String.Empty;
 			return "'Dictionary' should only be used for types implementing IDictionary and IDictionary<TKey,TValue>.";
 		}
@@ -168,16 +174,24 @@ namespace Gendarme.Rules.Naming {
 			return "'EventHandler' should only be used for event handler delegates.";
 		}
 
-		// handle types using generics
-		private static string GetFullName (TypeReference type)
+		static bool TryGetCandidates (TypeReference type, out HashSet<string> candidates)
 		{
-			string name = type.FullName;
-			// handle types using generics
+			string name = type.Name;
 			if ((type is GenericInstanceType) || type.HasGenericParameters) {
 				int pos = name.IndexOf ('`');
-				name = name.Substring (0, pos);
+				if (pos != -1)
+					name = name.Substring (0, pos);
+			}
+			
+			if (definedSuffixes.TryGetValue (name, out candidates)) {
+				string nspace;
+				if (namespaces.TryGetValue (name, out nspace)) {
+					if (nspace == type.Namespace)
+						return true;
+				}
 			}
-			return name;
+			candidates = null;
+			return false;
 		}
 
 		// checks if type name ends with an approriate suffix
@@ -189,18 +203,15 @@ namespace Gendarme.Rules.Naming {
 			currentTypeSuffix = false;
 
 			while (current != null && current.BaseType != null) {
-				string base_name = GetFullName (current.BaseType);
-
 				HashSet<string> candidates;
-				if (definedSuffixes.TryGetValue (base_name, out candidates)) {
+				if (TryGetCandidates (current.BaseType, out candidates)) {
 					suffixes.AddRangeIfNew (candidates);
 					if (current == type)
 						currentTypeSuffix = true;
 				} else {
 					// if no suffix for base type is found, we start looking through interfaces
 					foreach (TypeReference iface in current.Interfaces) {
-						string interface_name = GetFullName (iface);
-						if (definedSuffixes.TryGetValue (interface_name, out candidates)) {
+						if (TryGetCandidates (iface, out candidates)) {
 							suffixes.AddRangeIfNew (candidates);
 							if (current == type)
 								currentTypeSuffix = true;
@@ -210,8 +221,9 @@ namespace Gendarme.Rules.Naming {
 				if (suffixes.Count > 0) {
 					// if any suffixes found
 					// check whether type name ends with any of these suffixes
+					string tname = type.Name;
 					return suffixes.Exists (delegate (string suffix) {
-						return GetFullName (type).EndsWith (suffix, StringComparison.Ordinal);
+						return HasSuffix (tname, suffix);
 					});
 				} else {
 					// inspect base type
@@ -224,8 +236,11 @@ namespace Gendarme.Rules.Naming {
 
 		private static string ComposeMessage (List<string> candidates)
 		{
-			if (candidates.Count == 1)
-				return String.Format ("The type name does not end with '{0}' suffix. Append it to the type name.", candidates [0]);
+			if (candidates.Count == 1) {
+				return String.Format (CultureInfo.InvariantCulture, 
+					"The type name does not end with '{0}' suffix. Append it to the type name.", 
+					candidates [0]);
+			}
 
 			StringBuilder sb = new StringBuilder ("The type name does not end with one of the following suffixes: ");
 			sb.Append (candidates [0]);
@@ -239,6 +254,21 @@ namespace Gendarme.Rules.Naming {
 
 		private List<string> proposedSuffixes = new List<string> ();
 
+		static bool HasSuffix (string typeName, string suffix)
+		{
+			if (suffix.Length > typeName.Length)
+				return false;
+
+			// generic aware
+			int gpos = typeName.LastIndexOf ('`');
+			if (gpos == -1)
+				gpos = typeName.Length;
+			else if (suffix.Length > gpos)
+				return false;
+
+			return (String.Compare (suffix, 0, typeName, gpos - suffix.Length, suffix.Length, StringComparison.OrdinalIgnoreCase) == 0);
+		}
+
 		public RuleResult CheckType (TypeDefinition type)
 		{
 			// rule does not apply to generated code (outside developer's control)
@@ -247,15 +277,19 @@ namespace Gendarme.Rules.Naming {
 
 			// ok, rule applies
 
+			string tname = type.Name;
 			// first check if the current suffix is correct
 			// e.g. MyAttribute where the type does not inherit from Attribute
 			foreach (string suffix in reservedSuffixes.Keys) {
-				if (type.Name.EndsWith (suffix, StringComparison.OrdinalIgnoreCase)) {
+				if (HasSuffix (tname, suffix)) {
 					Func<TypeDefinition, string> f;
 					if (reservedSuffixes.TryGetValue (suffix, out f)) {
 						string msg = f (type);
-						if (!String.IsNullOrEmpty (msg))
-							Runner.Report (type, Severity.Medium, Confidence.High, msg);
+						// if this is a valid suffix then there's not need to check for invalid later
+						if (String.IsNullOrEmpty (msg))
+							return RuleResult.Success;
+
+						Runner.Report (type, Severity.Medium, Confidence.High, msg);
 					}
 				}
 			}
diff --git a/gendarme/rules/Gendarme.Rules.Naming/UsePreferredTermsRule.cs b/gendarme/rules/Gendarme.Rules.Naming/UsePreferredTermsRule.cs
index 59ede41..d2367c5 100644
--- a/gendarme/rules/Gendarme.Rules.Naming/UsePreferredTermsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Naming/UsePreferredTermsRule.cs
@@ -30,6 +30,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 
 using Mono.Cecil;
 
@@ -140,7 +141,7 @@ namespace Gendarme.Rules.Naming {
 					continue;
 				if (index > 0 && char.IsLetter (name, index - 1) && char.IsLower (name, index))
 					continue; //term is part of a larger word
-				string s = String.Format (Message, pair.Key, pair.Value);
+				string s = String.Format (CultureInfo.InvariantCulture, Message, pair.Key, pair.Value);
 				Runner.Report (identifier, severity, Confidence.High, s);
 			}
 		}
diff --git a/gendarme/rules/Gendarme.Rules.Performance/AvoidConcatenatingCharsRule.cs b/gendarme/rules/Gendarme.Rules.Performance/AvoidConcatenatingCharsRule.cs
index e753a0d..44ba1e6 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/AvoidConcatenatingCharsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/AvoidConcatenatingCharsRule.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -74,26 +75,20 @@ namespace Gendarme.Rules.Performance {
 	[EngineDependency (typeof (OpCodeEngine))]
 	public class AvoidConcatenatingCharsRule : Rule, IMethodRule {
 
-		static bool IsStringConcat (MemberReference member)
-		{
-			if (member == null || (member.Name != "Concat"))
-				return false;
-
-			return (member.DeclaringType.FullName == "System.String");
-		}
-
 		static bool HasReferenceToStringConcatObject (ModuleDefinition module)
 		{
 			foreach (MemberReference mr in module.GetMemberReferences ()) {
-				if (IsStringConcat (mr)) {
+				if (mr.IsNamed ("System", "String", "Concat")) {
 					MethodReference method = (mr as MethodReference);
 					// catch both System.Object and System.Object[]
 					if (!method.HasParameters)
 						continue;
-					switch (method.Parameters [0].ParameterType.FullName) {
-					case "System.Object":
-					case "System.Object[]":
-						return true;
+
+					TypeReference ptype = method.Parameters [0].ParameterType;
+					switch (ptype.Name) {
+					case "Object":
+					case "Object[]":
+						return (ptype.Namespace == "System");
 					}
 				}
 			}
@@ -113,7 +108,8 @@ namespace Gendarme.Rules.Performance {
 
 		private void ReportBoxing (MethodDefinition method, Instruction ins, Confidence confidence)
 		{
-			string msg = String.Format ("Type '{0}' is being boxed.", (ins.Operand as TypeReference).FullName);
+			string msg = String.Format (CultureInfo.InvariantCulture,
+				"Type '{0}' is being boxed.", (ins.Operand as TypeReference).GetFullName ());
 			Runner.Report (method, ins, Severity.High, confidence, msg);
 		}
 
@@ -159,14 +155,18 @@ namespace Gendarme.Rules.Performance {
 
 				// look for String.Concat overloads using System.Object
 				MethodReference mr = (ins.Operand as MethodReference);
-				if (!IsStringConcat (mr) || !mr.HasParameters)
+				if (!mr.HasParameters || !mr.IsNamed ("System", "String", "Concat"))
 					continue;
 
-				switch (mr.Parameters [0].ParameterType.FullName) {
-				case "System.Object":
+				TypeReference ptype = mr.Parameters [0].ParameterType;
+				if (ptype.Namespace != "System")
+					continue; // very unlikely
+
+				switch (ptype.Name) {
+				case "Object":
 					CheckParameters (mr, method, ins);
 					break;
-				case "System.Object[]":
+				case "Object[]":
 					if ((ins.Previous.OpCode.Code == Code.Stelem_Ref) || ins.Previous.IsLoadLocal ())
 						ScanArray (method, ins.Previous);
 					break;
diff --git a/gendarme/rules/Gendarme.Rules.Performance/AvoidLargeNumberOfLocalVariablesRule.cs b/gendarme/rules/Gendarme.Rules.Performance/AvoidLargeNumberOfLocalVariablesRule.cs
index a1bd50f..698867c 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/AvoidLargeNumberOfLocalVariablesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/AvoidLargeNumberOfLocalVariablesRule.cs
@@ -28,6 +28,7 @@
 
 using System;
 using System.ComponentModel;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -70,7 +71,7 @@ namespace Gendarme.Rules.Performance {
 			// special case for System.Windows.Forms since it's designer does not
 			// mark this code as generated :-(
 			if (method.Name == "InitializeComponent") {
-				if (method.DeclaringType.Inherits ("System.Windows.Forms.Form"))
+				if (method.DeclaringType.Inherits ("System.Windows.Forms", "Form"))
 					return RuleResult.DoesNotApply;
 			}
 
@@ -78,7 +79,8 @@ namespace Gendarme.Rules.Performance {
 			if (num <= MaximumVariables)
 				return RuleResult.Success;
 
-			string msg = String.Format ("Found {0} local variables (maximum {1}).", num, MaximumVariables);
+			string msg = String.Format (CultureInfo.InvariantCulture, 
+				"Found {0} local variables (maximum {1}).", num, MaximumVariables);
 			Runner.Report (method, Severity.High, Confidence.High, msg);
 			return RuleResult.Failure;
 		}
diff --git a/gendarme/rules/Gendarme.Rules.Performance/AvoidLargeStructureRule.cs b/gendarme/rules/Gendarme.Rules.Performance/AvoidLargeStructureRule.cs
index 99ecb4f..2ce5e3f 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/AvoidLargeStructureRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/AvoidLargeStructureRule.cs
@@ -29,6 +29,7 @@
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.Globalization;
 
 using Mono.Cecil;
 
@@ -75,20 +76,20 @@ namespace Gendarme.Rules.Performance {
 		private const int ReferenceSize = 4;
 
 		static Dictionary<string, int> Primitives = new Dictionary<string, int> (14) {
-			{ "System.Byte", 1 },
-			{ "System.SByte", 1 },
-			{ "System.Boolean", 1 },
-			{ "System.Int16", 2 },
-			{ "System.UInt16", 2 },
-			{ "System.Char", 2 },
-			{ "System.Int32", 4 },
-			{ "System.UInt32", 4 },
-			{ "System.Single", 4 },
-			{ "System.Int64", 8 },
-			{ "System.UInt64", 8 },
-			{ "System.Double", 8 },
-			{ "System.IntPtr", ReferenceSize },	// so rule return the same results
-			{ "System.UIntPtr", ReferenceSize },	// on 32 and 64 bits architectures
+			{ "Byte", 1 },
+			{ "SByte", 1 },
+			{ "Boolean", 1 },
+			{ "Int16", 2 },
+			{ "UInt16", 2 },
+			{ "Char", 2 },
+			{ "Int32", 4 },
+			{ "UInt32", 4 },
+			{ "Single", 4 },
+			{ "Int64", 8 },
+			{ "UInt64", 8 },
+			{ "Double", 8 },
+			{ "IntPtr", ReferenceSize },	// so rule return the same results
+			{ "UIntPtr", ReferenceSize },	// on 32 and 64 bits architectures
 		};
 
 		private int max_size = MaximumRecommendedSize;
@@ -179,7 +180,7 @@ namespace Gendarme.Rules.Performance {
 			// list based on Type.IsPrimitive
 			if (type.Namespace == "System") {
 				int size;
-				if (Primitives.TryGetValue (type.FullName, out size))
+				if (Primitives.TryGetValue (type.Name, out size))
 					return (long) size;
 			}
 
@@ -216,7 +217,7 @@ namespace Gendarme.Rules.Performance {
 			else if (size > medium_severity_limit)
 				severity = Severity.Medium;
 
-			string text = String.Format ("Structure size is {0} bytes.", size);
+			string text = String.Format (CultureInfo.CurrentCulture, "Structure size is {0} bytes.", size);
 			Runner.Report (type, severity, Confidence.High, text);
 			return RuleResult.Failure;
 		}
diff --git a/gendarme/rules/Gendarme.Rules.Performance/AvoidLocalDataStoreSlotRule.cs b/gendarme/rules/Gendarme.Rules.Performance/AvoidLocalDataStoreSlotRule.cs
index a039d6a..b881c09 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/AvoidLocalDataStoreSlotRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/AvoidLocalDataStoreSlotRule.cs
@@ -89,8 +89,6 @@ namespace Gendarme.Rules.Performance {
 	[EngineDependency (typeof (OpCodeEngine))]
 	public class AvoidLocalDataStoreSlotRule : Rule, IMethodRule {
 
-		private const string LocalDataStoreSlot = "System.LocalDataStoreSlot";
-
 		public override void Initialize (IRunner runner)
 		{
 			base.Initialize (runner);
@@ -99,7 +97,9 @@ namespace Gendarme.Rules.Performance {
 				// if the module does not reference System.LocalDataStoreSlot
 				// then no method inside it will be using it
 				Active = (e.CurrentAssembly.Name.Name == "mscorlib" ||
-					e.CurrentModule.HasTypeReference (LocalDataStoreSlot));
+					e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+						return tr.IsNamed ("System", "LocalDataStoreSlot");
+					}));
 			};
 		}
 
@@ -119,9 +119,18 @@ namespace Gendarme.Rules.Performance {
 					if (mr == null)
 						continue;
 
-					switch (mr.DeclaringType.FullName) {
-					case "System.Threading.Thread":
-					case "System.Runtime.Remoting.Contexts.Context":
+					TypeReference type = mr.DeclaringType;
+					switch (type.Namespace) {
+					case "System.Threading":
+					case "System.Runtime.Remoting.Contexts":
+						break;
+					default:
+						continue;
+					}
+
+					switch (type.Name) {
+					case "Thread":
+					case "Context":
 						break;
 					default:
 						continue;
diff --git a/gendarme/rules/Gendarme.Rules.Performance/AvoidMethodWithLargeMaximumStackSizeRule.cs b/gendarme/rules/Gendarme.Rules.Performance/AvoidMethodWithLargeMaximumStackSizeRule.cs
index 5fbc09d..576e211 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/AvoidMethodWithLargeMaximumStackSizeRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/AvoidMethodWithLargeMaximumStackSizeRule.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -64,7 +65,8 @@ namespace Gendarme.Rules.Performance {
 			if (num <= MaximumStackSize)
 				return RuleResult.Success;
 
-			string msg = String.Format ("Found {0} maximum stack size (maximum {1}).", num, MaximumStackSize);
+			string msg = String.Format (CultureInfo.InvariantCulture, 
+				"Found {0} maximum stack size (maximum {1}).", num, MaximumStackSize);
 			Runner.Report (method, Severity.High, Confidence.High, msg);
 			return RuleResult.Failure;
 		}
diff --git a/gendarme/rules/Gendarme.Rules.Performance/AvoidRepetitiveCallsToPropertiesRule.cs b/gendarme/rules/Gendarme.Rules.Performance/AvoidRepetitiveCallsToPropertiesRule.cs
index a470e55..7e1bc64 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/AvoidRepetitiveCallsToPropertiesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/AvoidRepetitiveCallsToPropertiesRule.cs
@@ -29,6 +29,7 @@
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.Globalization;
 using System.Text;
 
 using Mono.Cecil;
@@ -107,14 +108,19 @@ namespace Gendarme.Rules.Performance {
 		static string GetKey (MethodDefinition caller, MethodDefinition callee, Instruction ins)
 		{
 			if (callee.IsStatic)
-				return callee.ToString ();
+				return callee.GetFullName ();
 
 			IMetadataTokenProvider chain = callee;
 			Instruction instance = ins.TraceBack (caller);
 
 			StringBuilder sb = new StringBuilder ();
 			while (instance != null) {
-				sb.Append (chain.ToString () ?? "null").Append ('.');
+				MemberReference mr = (chain as MemberReference);
+				if (mr == null)
+					sb.Append (chain.ToString ()); // ?? "null")
+				else
+					sb.Append (mr.GetFullName ());
+				sb.Append ('.');
 				chain = (instance.Operand as IMetadataTokenProvider);
 				if (chain == null) {
 					sb.Append (instance.GetOperand (caller));
@@ -151,16 +157,15 @@ namespace Gendarme.Rules.Performance {
 
 		static bool Filter (MethodDefinition method)
 		{
-			switch (method.DeclaringType.FullName) {
+			TypeReference type = method.DeclaringType;
 			// Elapsed* and IsRunning
-			case "System.Diagnostics.Stopwatch":
+			if (type.IsNamed ("System.Diagnostics", "Stopwatch"))
 				return true;
 			// Now and UtcNow
-			case "System.DateTime":
+			else if (type.IsNamed ("System", "DateTime"))
 				return method.IsStatic;
-			default:
-				return false;
-			}
+
+			return false;
 		}
 
 		public RuleResult CheckMethod (MethodDefinition method)
@@ -218,13 +223,15 @@ namespace Gendarme.Rules.Performance {
 				MethodDefinition md = kvp.Value.Key;
 				if (md.IsVirtual && !md.IsFinal) {
 					// virtual calls are expensive, so the code better cache the value
-					string msg = String.Format ("Multiple ({0}) calls to virtual property '{1}'.", count, md.ToString ());
+					string msg = String.Format (CultureInfo.InvariantCulture, 
+						"Multiple ({0}) calls to virtual property '{1}'.", count, md.ToString ());
 					Runner.Report (method, GetSeverity (count, true), Confidence.Normal, msg);
 				} else if (!IsInliningCandidate (md)) {
 					// non-virtual calls might be inlined
 					// otherwise caching the value is again a good idea
 					int size = md.HasBody ? md.Body.CodeSize : 0;
-					string msg = String.Format ("Multiple ({0}) calls to non-virtual property '{1}', likely non-inlined due to size ({2} >= {3}).",
+					string msg = String.Format (CultureInfo.InvariantCulture,
+						"Multiple ({0}) calls to non-virtual property '{1}', likely non-inlined due to size ({2} >= {3}).",
 						count, md.ToString (), size, InlineLimit);
 					Runner.Report (method, GetSeverity (count, false), Confidence.Normal, msg);
 				}
diff --git a/gendarme/rules/Gendarme.Rules.Performance/AvoidRepetitiveCastsRule.cs b/gendarme/rules/Gendarme.Rules.Performance/AvoidRepetitiveCastsRule.cs
index 5680c14..5a4a10e 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/AvoidRepetitiveCastsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/AvoidRepetitiveCastsRule.cs
@@ -29,6 +29,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -237,7 +238,7 @@ namespace Gendarme.Rules.Performance {
 			return match;
 		}
 
-		private int FindDuplicates (MethodDefinition method, string type, Instruction origin)
+		private int FindDuplicates (MethodDefinition method, TypeReference type, Instruction origin)
 		{
 			// we already had our first cast if we got here
 			int count = 1;
@@ -245,7 +246,7 @@ namespace Gendarme.Rules.Performance {
 			// don't check 0 since it's the one we compare with
 			for (int i = 1; i < casts.Count; i++) {
 				Instruction ins = casts [i];
-				if (type != (ins.Operand as TypeReference).FullName)
+				if (!(ins.Operand as TypeReference).IsNamed (type.Namespace, type.Name))
 					continue;
 				if (!OriginsMatch(method, origin, GetOrigin (ins)))
 					continue;
@@ -287,7 +288,7 @@ namespace Gendarme.Rules.Performance {
 			// if there's only one then it can't be a duplicate cast
 			while (casts.Count > 1) {
 				Instruction ins = casts [0];
-				string type = (ins.Operand as TypeReference).FullName;
+				TypeReference type = (ins.Operand as TypeReference);
 				Instruction origin = GetOrigin (ins);
 
 				int count = FindDuplicates (method, type, origin);
@@ -296,7 +297,8 @@ namespace Gendarme.Rules.Performance {
 
 					// rare, but it's possible to cast a null value (ldnull)
 					object name = origin.GetOperand (method) ?? "Null";
-					string msg = String.Format ("'{0}' is casted {1} times for type '{2}'.", name, count, type);
+					string msg = String.Format (CultureInfo.InvariantCulture, 
+						"'{0}' is casted {1} times for type '{2}'.", name, count, type.GetFullName ());
 					Runner.Report (method, ins, Severity.Medium, Confidence.Normal, msg);
 				}
 				casts.RemoveAt (0);
diff --git a/gendarme/rules/Gendarme.Rules.Performance/AvoidTypeGetTypeForConstantStringsRule.cs b/gendarme/rules/Gendarme.Rules.Performance/AvoidTypeGetTypeForConstantStringsRule.cs
index 23da450..e2d9ed1 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/AvoidTypeGetTypeForConstantStringsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/AvoidTypeGetTypeForConstantStringsRule.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -34,6 +35,7 @@ using Mono.Cecil.Cil;
 using Gendarme.Framework;
 using Gendarme.Framework.Engines;
 using Gendarme.Framework.Helpers;
+using Gendarme.Framework.Rocks;
 
 namespace Gendarme.Rules.Performance {
 
@@ -84,9 +86,9 @@ namespace Gendarme.Rules.Performance {
 
 				// look for calls to: static Type System.Type.GetType(string...)
 				MethodReference mr = (ins.Operand as MethodReference);
-				if ((mr == null) || !mr.HasParameters || (mr.Name != "GetType"))
+				if ((mr == null) || !mr.HasParameters)
 					continue;
-				if (mr.DeclaringType.FullName != "System.Type")
+				if (!mr.IsNamed ("System", "Type", "GetType"))
 					continue;
 
 				if (ins.Previous.OpCode.Code != Code.Ldstr)
@@ -100,7 +102,8 @@ namespace Gendarme.Rules.Performance {
 				if (type_name == "Mono.Runtime")
 					continue;
 
-				string msg = string.Format ("Replace call to Type.GetType(\"{0}\") into typeof({0}).", type_name);
+				string msg = String.Format (CultureInfo.InvariantCulture, 
+					"Replace call to Type.GetType(\"{0}\") into typeof({0}).", type_name);
 				Runner.Report (method, ins, Severity.Medium, Confidence.Normal, msg);
 			}
 			return Runner.CurrentRuleResult;
diff --git a/gendarme/rules/Gendarme.Rules.Performance/AvoidUncalledPrivateCodeRule.cs b/gendarme/rules/Gendarme.Rules.Performance/AvoidUncalledPrivateCodeRule.cs
index 529657a..37d0478 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/AvoidUncalledPrivateCodeRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/AvoidUncalledPrivateCodeRule.cs
@@ -93,11 +93,21 @@ namespace Gendarme.Rules.Performance {
 	[FxCopCompatibility ("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
 	public class AvoidUncalledPrivateCodeRule : Rule, IMethodRule {
 
-		static string [] SpecialAttributes = new string[] {
-			"System.Runtime.InteropServices.ComRegisterFunctionAttribute",
-			"System.Runtime.InteropServices.ComUnregisterFunctionAttribute",
-			"System.Diagnostics.ConditionalAttribute"
-		};
+		static bool HasAnySpecialAttribute (ICustomAttributeProvider method)
+		{
+			if (!method.HasCustomAttributes)
+				return false;
+
+			foreach (CustomAttribute ca in method.CustomAttributes) {
+				TypeReference cat = ca.AttributeType;
+				string name = cat.Name;
+				if ((cat.IsNamed ("System.Diagnostics", name)) || (cat.Namespace == "System.Runtime.InteropServices" && 
+					(name == "ComRegisterFunctionAttribute" || name == "ComUnregisterFunctionAttribute"))) {
+					return true;
+				}
+			}
+			return false;
+		}
 
 		static private bool Applicable (MethodDefinition method)
 		{
@@ -119,10 +129,8 @@ namespace Gendarme.Rules.Performance {
 
 			// does not apply if the method is used to register/unregister COM objects
 			// or it is decorated with a [Conditional("x")] attribute
-			if (method.HasCustomAttributes) {
-				if (method.CustomAttributes.ContainsAnyType (SpecialAttributes))
-					return false;
-			}
+			if (HasAnySpecialAttribute (method))
+				return false;
 
 			return true;
 		}
@@ -301,7 +309,7 @@ namespace Gendarme.Rules.Performance {
 			return methods;
 		}
 
-		private static void BuildMethodUsage (HashSet<ulong> methods, MethodDefinition method)
+		private static void BuildMethodUsage (ISet<ulong> methods, MethodDefinition method)
 		{
 			foreach (Instruction ins in method.Body.Instructions) {
 				MethodReference mr = (ins.Operand as MethodReference);
@@ -310,7 +318,7 @@ namespace Gendarme.Rules.Performance {
 					continue;
 
 				TypeReference type = mr.DeclaringType;
-				if (!(type is ArrayType)) {
+				if (!type.IsArray) {
 					// if (type.GetElementType ().HasGenericParameters)
 					// the simpler ^^^ does not work under Mono but works on MS
 					type = type.Resolve ();
diff --git a/gendarme/rules/Gendarme.Rules.Performance/AvoidUninstantiatedInternalClassesRule.cs b/gendarme/rules/Gendarme.Rules.Performance/AvoidUninstantiatedInternalClassesRule.cs
index 518a451..2406244 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/AvoidUninstantiatedInternalClassesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/AvoidUninstantiatedInternalClassesRule.cs
@@ -101,7 +101,7 @@ namespace Gendarme.Rules.Performance {
 			cache.Add (assembly, typeset);
 		}
 
-		static void AddType (HashSet<TypeReference> typeset, TypeReference type)
+		static void AddType (ISet<TypeReference> typeset, TypeReference type)
 		{
 			// we're interested in the array element type, not the array itself
 			if (type.IsArray)
@@ -240,7 +240,7 @@ namespace Gendarme.Rules.Performance {
 			// if we can't find the non-public type being used in the assembly then the rule fails
 			if (typeset == null || !typeset.Contains (type)) {
 				// base confidence on whether the internals are visible or not
-				Confidence c = assembly.HasAttribute ("System.Runtime.CompilerServices.InternalsVisibleToAttribute") ? 
+				Confidence c = assembly.HasAttribute ("System.Runtime.CompilerServices", "InternalsVisibleToAttribute") ? 
 					Confidence.Low : Confidence.Normal;
 				Runner.Report (type, Severity.High, c);
 				return RuleResult.Failure;
diff --git a/gendarme/rules/Gendarme.Rules.Performance/AvoidUnnecessaryOverridesRule.cs b/gendarme/rules/Gendarme.Rules.Performance/AvoidUnnecessaryOverridesRule.cs
index 5dac506..f1c9d8b 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/AvoidUnnecessaryOverridesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/AvoidUnnecessaryOverridesRule.cs
@@ -80,8 +80,9 @@ namespace Gendarme.Rules.Performance {
 			if (!mr.CompareSignature (method))
 				return false;
 
+			TypeReference type = mr.DeclaringType;
 			foreach (TypeDefinition baseType in method.DeclaringType.AllSuperTypes ()) {
-				if (mr.DeclaringType.FullName == baseType.FullName)
+				if (baseType.IsNamed (type.Namespace, type.Name))
 					return true;
 			}
 			return false;
diff --git a/gendarme/rules/Gendarme.Rules.Performance/AvoidUnneededCallsOnStringRule.cs b/gendarme/rules/Gendarme.Rules.Performance/AvoidUnneededCallsOnStringRule.cs
index 212892a..08a051b 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/AvoidUnneededCallsOnStringRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/AvoidUnneededCallsOnStringRule.cs
@@ -29,6 +29,7 @@
 //
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -126,15 +127,15 @@ namespace Gendarme.Rules.Performance {
 			if (call.HasParameters)
 				return String.Empty;
 
-			if (!IsSystemString (ins.Previous.GetOperandType (method)))
+			if (!ins.Previous.GetOperandType (method).IsNamed ("System", "String"))
 				return  String.Empty;
 
-			return String.Format (MessageString, call.Name, String.Empty);
+			return String.Format (CultureInfo.InvariantCulture, MessageString, call.Name, String.Empty);
 		}
 
 		private static string CheckSubstring (MethodReference call, Instruction ins)
 		{
-			if (!IsSystemString (call.DeclaringType))
+			if (!call.DeclaringType.IsNamed ("System", "String"))
 				return String.Empty;
 
 			// ensure it's System.String::Substring(System.Int32) and that it's given 0 as a parameter
@@ -143,24 +144,19 @@ namespace Gendarme.Rules.Performance {
 			if (!ins.Previous.IsOperandZero ())
 				return String.Empty;
 
-			return String.Format (MessageString, call.Name, "0");
+			return String.Format (CultureInfo.InvariantCulture, MessageString, call.Name, "0");
 		}
 
 		private static string CheckToString (MethodReference call, Instruction ins, MethodDefinition method)
 		{
-			if (IsSystemString (call.DeclaringType)) {
+			if (call.DeclaringType.IsNamed ("System", "String")) {
 				// most probably ToString(IFormatProvider), possibly ToString()
-				return String.Format (MessageString, call.Name, 
+				return String.Format (CultureInfo.InvariantCulture, MessageString, call.Name, 
 					(call.HasParameters && (call.Parameters.Count > 1)) ? "IFormatProvider" : String.Empty);
 			} else {
 				// signature for Clone is identical (well close enough) to share code
 				return CheckClone (call, ins, method);
 			}
 		}
-
-		private static bool IsSystemString (MemberReference type)
-		{
-			return (type == null) ? false : (type.FullName == "System.String");
-		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Performance/AvoidUnneededUnboxingRule.cs b/gendarme/rules/Gendarme.Rules.Performance/AvoidUnneededUnboxingRule.cs
index 06bbc3b..1b5e6d7 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/AvoidUnneededUnboxingRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/AvoidUnneededUnboxingRule.cs
@@ -28,6 +28,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -95,7 +96,6 @@ namespace Gendarme.Rules.Performance {
 		private static string Previous (MethodDefinition method, Instruction ins)
 		{
 			string kind, name;
-			string type = (ins.Operand as TypeReference).FullName;
 
 			ins = ins.Previous;
 			Code previous_op_code = ins.OpCode.Code;
@@ -139,7 +139,8 @@ namespace Gendarme.Rules.Performance {
 			default:
 				return String.Empty;
 			}
-			return String.Format ("{0} '{1}' unboxed to type '{2}' {{0}} times.", kind, name, type);
+			return String.Format (CultureInfo.InvariantCulture, "{0} '{1}' unboxed to type '{2}' {{0}} times.", 
+				kind, name, (ins.Operand as TypeReference).GetFullName ());
 		}
 
 		// unboxing is never critical - but a high amount can be a sign of other problems too
@@ -189,7 +190,7 @@ namespace Gendarme.Rules.Performance {
 				// we can't (always) avoid unboxing one time
 				if (kvp.Value < 2)
 					continue;
-				string s = String.Format (kvp.Key, kvp.Value);
+				string s = String.Format (CultureInfo.InvariantCulture, kvp.Key, kvp.Value);
 				Runner.Report (method, GetSeverityFromCount (kvp.Value), Confidence.Normal, s);
 			}
 
diff --git a/gendarme/rules/Gendarme.Rules.Performance/AvoidUnsealedUninheritedInternalClassesRule.cs b/gendarme/rules/Gendarme.Rules.Performance/AvoidUnsealedUninheritedInternalClassesRule.cs
index c5f53ac..d7489c3 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/AvoidUnsealedUninheritedInternalClassesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/AvoidUnsealedUninheritedInternalClassesRule.cs
@@ -74,16 +74,17 @@ namespace Gendarme.Rules.Performance {
 				return RuleResult.Success;
 
 			ModuleDefinition module = type.Module;
-			string type_name = type.FullName;
+			string name = type.Name;
+			string nspace = type.Namespace;
 			foreach (TypeDefinition type_definition in module.GetAllTypes ()) {
 				// skip ourself
-				if (type_definition.FullName == type_name)
+				if (type_definition.IsNamed (nspace, name))
 					continue;
-				if (type_definition.Inherits (type_name))
+				if (type_definition.Inherits (nspace, name))
 					return RuleResult.Success;
 			}
 
-			Confidence c = module.Assembly.HasAttribute ("System.Runtime.CompilerServices.InternalsVisibleToAttribute") ?
+			Confidence c = module.Assembly.HasAttribute ("System.Runtime.CompilerServices", "InternalsVisibleToAttribute") ?
 				Confidence.High : Confidence.Total;
 			Runner.Report (type, Severity.Medium, c);
 			return RuleResult.Failure;
diff --git a/gendarme/rules/Gendarme.Rules.Performance/AvoidUnusedParametersRule.cs b/gendarme/rules/Gendarme.Rules.Performance/AvoidUnusedParametersRule.cs
index 75a6448..8df328f 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/AvoidUnusedParametersRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/AvoidUnusedParametersRule.cs
@@ -30,6 +30,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -132,10 +133,8 @@ namespace Gendarme.Rules.Performance {
 				return RuleResult.DoesNotApply;
 
 			// methods with [Conditional] can be empty (not using any parameter) IL-wise but not source-wise, ignore them
-			if (method.HasCustomAttributes) {
-				if (method.CustomAttributes.ContainsType ("System.Diagnostics.ConditionalAttribute"))
-					return RuleResult.DoesNotApply;
-			}
+			if (method.HasAttribute ("System.Diagnostics", "ConditionalAttribute"))
+				return RuleResult.DoesNotApply;
 
 			// rule applies
 
@@ -151,7 +150,7 @@ namespace Gendarme.Rules.Performance {
 				ParameterDefinition parameter = ins.GetParameter (method);
 				if (parameter == null)
 					continue;
-				mask |= ((ulong)1 << (parameter.GetSequence () - 1));
+				mask |= ((ulong)1 << parameter.Index);
 			}
 
 			// quick out based on value - i.e. every parameter is being used
@@ -162,7 +161,8 @@ namespace Gendarme.Rules.Performance {
 			for (int i = 0; i < pcount; i++) {
 				if ((mask & ((ulong) 1 << i)) == 0) {
 					ParameterDefinition parameter = pdc [i];
-					string text = String.Format ("Parameter '{0}' of type '{1}' is never used in the method.",
+					string text = String.Format (CultureInfo.InvariantCulture,
+						"Parameter '{0}' of type '{1}' is never used in the method.",
 						parameter.Name, parameter.ParameterType);
 					Runner.Report (parameter, Severity.Medium, Confidence.Normal, text);
 				}
diff --git a/gendarme/rules/Gendarme.Rules.Performance/AvoidUnusedPrivateFieldsRule.cs b/gendarme/rules/Gendarme.Rules.Performance/AvoidUnusedPrivateFieldsRule.cs
index bc8c0e5..72a548c 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/AvoidUnusedPrivateFieldsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/AvoidUnusedPrivateFieldsRule.cs
@@ -105,13 +105,32 @@ namespace Gendarme.Rules.Performance {
 			// copy all fields into an hashset
 			fields.Clear ();
 			foreach (FieldDefinition field in type.Fields) {
-				if (!field.IsPrivate || field.IsLiteral)
+				if (!field.IsPrivate || field.IsLiteral || field.IsGeneratedCode ())
 					continue;
 
 				fields.Add (field);
 			}
 
 			// scan all methods, including constructors, to find if the field is used
+			if (fields.Count > 0) {
+				CheckFieldsUsageInType (type);
+
+				// scan nested types becuase they also have access to private fields of their parent
+				if (type.HasNestedTypes) {
+					foreach (TypeDefinition nested in type.NestedTypes)
+						CheckFieldsUsageInType (nested);
+				}
+
+				// check remaining (private) fields in the set
+				foreach (FieldDefinition field in fields) {
+					Runner.Report (field, Severity.Medium, Confidence.Normal);
+				}
+			}
+			return Runner.CurrentRuleResult;
+		}
+
+		private void CheckFieldsUsageInType (TypeDefinition type)
+		{
 			foreach (MethodDefinition method in type.Methods) {
 				if (!method.HasBody)
 					continue;
@@ -127,14 +146,12 @@ namespace Gendarme.Rules.Performance {
 
 					fields.Remove (fd);
 				}
+				
+				if (fields.Count == 0)
+					break;				
 			}
-
-			// check remaining (private) fields in the set
-			foreach (FieldDefinition field in fields) {
-				Runner.Report (field, Severity.Medium, Confidence.Normal);
-			}
-			return Runner.CurrentRuleResult;
 		}
+
 #if false
 		public void Bitmask ()
 		{
diff --git a/gendarme/rules/Gendarme.Rules.Performance/CompareWithStringEmptyEfficientlyRule.cs b/gendarme/rules/Gendarme.Rules.Performance/CompareWithStringEmptyEfficientlyRule.cs
index 61fdee9..47f6e1e 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/CompareWithStringEmptyEfficientlyRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/CompareWithStringEmptyEfficientlyRule.cs
@@ -94,13 +94,16 @@ namespace Gendarme.Rules.Performance {
 				case "Equals":
 					if (mref.Parameters.Count > 1)
 						continue;
-					string tname = mref.DeclaringType.FullName;
-					if ((tname != "System.String") && (tname != "System.Object"))
+					TypeReference type = mref.DeclaringType;
+					if (type.Namespace != "System")
+						continue;
+					string name = type.Name;
+					if ((name != "String") && (name != "Object"))
 						continue;
 					break;
 				case "op_Equality":
 				case "op_Inequality":
-					if (mref.DeclaringType.FullName != "System.String")
+					if (!mref.DeclaringType.IsNamed ("System", "String"))
 						continue;
 					break;
 				default:
@@ -115,7 +118,7 @@ namespace Gendarme.Rules.Performance {
 					break;
 				case Code.Ldsfld:
 					FieldReference field = (prev.Operand as FieldReference);
-					if (field.DeclaringType.FullName != "System.String")
+					if (!field.DeclaringType.IsNamed ("System", "String"))
 						continue;
 					// unlikely to be anything else (at least with released fx)
 					if (field.Name != "Empty")
diff --git a/gendarme/rules/Gendarme.Rules.Performance/DontIgnoreMethodResultRule.cs b/gendarme/rules/Gendarme.Rules.Performance/DontIgnoreMethodResultRule.cs
index aadb867..fbd1931 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/DontIgnoreMethodResultRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/DontIgnoreMethodResultRule.cs
@@ -29,6 +29,7 @@
 //
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -99,17 +100,17 @@ namespace Gendarme.Rules.Performance {
 
 		private static bool IsCallException (MethodReference method)
 		{
-			switch (method.DeclaringType.FullName) {
+			switch (method.DeclaringType.GetFullName ()) {
 			case "System.String":
 				// Since strings are immutable, calling System.String methods that returns strings 
 				// better be assigned to something
-				return (method.ReturnType.FullName != "System.String");
+				return !method.ReturnType.IsNamed ("System", "String");
 			case "System.IO.DirectoryInfo":
 				// GetDirectories overloads don't apply to the instance
 				return (method.Name != "GetDirectories");
 			case "System.Security.PermissionSet":
 				// Intersection and Union returns a new PermissionSet (it does not change the instance)
-				return (method.ReturnType.FullName != "System.Security.PermissionSet");
+				return !method.ReturnType.IsNamed ("System.Security", "PermissionSet");
 			default:
 				// this is useless anytime, if unassigned, more in cases like a StringBuilder
 				return (method.Name != "ToString");
@@ -118,7 +119,7 @@ namespace Gendarme.Rules.Performance {
 
 		private static bool IsNewException (MemberReference method)
 		{
-			switch (method.ToString ()) {
+			switch (method.GetFullName ()) {
 			// supplying a callback is enough to make the Timer creation worthwhile
 			case "System.Void System.Threading.Timer::.ctor(System.Threading.TimerCallback,System.Object,System.Int32,System.Int32)":
 				return true;
@@ -132,7 +133,8 @@ namespace Gendarme.Rules.Performance {
 			if ((instruction.OpCode.Code == Code.Newobj || instruction.OpCode.Code == Code.Newarr)) {
 				MemberReference member = (instruction.Operand as MemberReference);
 				if ((member != null) && !IsNewException (member)) {
-					string s = String.Format ("Unused object of type '{0}' created.", member.ToString ());
+					string s = String.Format (CultureInfo.InvariantCulture,
+						"Unused object of type '{0}' created.", member.GetFullName ());
 					Runner.Report (method, instruction, Severity.High, Confidence.Normal, s);
 				}
 			}
@@ -142,7 +144,8 @@ namespace Gendarme.Rules.Performance {
 				if (callee != null && !callee.ReturnType.IsValueType) {
 					// check for some common exceptions (to reduce false positive)
 					if (!IsCallException (callee)) {
-						string s = String.Format ("Do not ignore method results from call to '{0}'.", callee.ToString ());
+						string s = String.Format (CultureInfo.InvariantCulture,
+							"Do not ignore method results from call to '{0}'.", callee.GetFullName ());
 						Runner.Report (method, instruction, Severity.Medium, Confidence.Normal, s);
 					}
 				}
diff --git a/gendarme/rules/Gendarme.Rules.Performance/EmptyDestructorRule.cs b/gendarme/rules/Gendarme.Rules.Performance/EmptyDestructorRule.cs
index a6b3bb3..4971448 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/EmptyDestructorRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/EmptyDestructorRule.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -131,7 +132,8 @@ namespace Gendarme.Rules.Performance {
 
 			// finalizer is empty (bad / useless)
 			string msg = nullify_fields == 0 ? String.Empty : 
-				String.Format ("Contains {0} fields being nullified needlessly", nullify_fields);
+				String.Format (CultureInfo.InvariantCulture, 
+					"Contains {0} fields being nullified needlessly", nullify_fields);
 			Runner.Report (type, Severity.Medium, Confidence.Normal, msg);
 			return RuleResult.Failure;
 		}
diff --git a/gendarme/rules/Gendarme.Rules.Performance/Gendarme.Rules.Performance.csproj b/gendarme/rules/Gendarme.Rules.Performance/Gendarme.Rules.Performance.csproj
index f9a5521..e8266ab 100755
--- a/gendarme/rules/Gendarme.Rules.Performance/Gendarme.Rules.Performance.csproj
+++ b/gendarme/rules/Gendarme.Rules.Performance/Gendarme.Rules.Performance.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -12,9 +12,11 @@
     <AssemblyName>Gendarme.Rules.Performance</AssemblyName>
     <FileUpgradeFlags>
     </FileUpgradeFlags>
-    <OldToolsVersion>2.0</OldToolsVersion>
+    <OldToolsVersion>3.5</OldToolsVersion>
     <UpgradeBackupLocation>
     </UpgradeBackupLocation>
+    <IsWebBootstrapper>true</IsWebBootstrapper>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <PublishUrl>http://localhost/Gendarme.Rules.Performance/</PublishUrl>
     <Install>true</Install>
     <InstallFrom>Web</InstallFrom>
@@ -27,10 +29,9 @@
     <MapFileExtensions>true</MapFileExtensions>
     <ApplicationRevision>0</ApplicationRevision>
     <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>true</IsWebBootstrapper>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -43,6 +44,7 @@
     <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Performance.xml</DocumentationFile>
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -54,6 +56,7 @@
     <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Performance.xml</DocumentationFile>
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -117,14 +120,33 @@
     <None Include="ChangeLog" />
   </ItemGroup>
   <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
diff --git a/gendarme/rules/Gendarme.Rules.Performance/IDisposableWithDestructorWithoutSuppressFinalizeRule.cs b/gendarme/rules/Gendarme.Rules.Performance/IDisposableWithDestructorWithoutSuppressFinalizeRule.cs
index 7d81391..d02c1c0 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/IDisposableWithDestructorWithoutSuppressFinalizeRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/IDisposableWithDestructorWithoutSuppressFinalizeRule.cs
@@ -128,7 +128,7 @@ namespace Gendarme.Rules.Performance {
 				case Code.Callvirt:
 					// are we calling GC.SuppressFinalize ?
 					MethodReference callee = (ins.Operand as MethodReference);
-					if ((callee.Name == "SuppressFinalize") && (callee.DeclaringType.FullName == "System.GC")) {
+					if (callee.IsNamed ("System", "GC", "SuppressFinalize")) {
 						return true;
 					} else if (level < 3) {
 						if (Recurse (callee.Resolve (), level + 1))
@@ -154,7 +154,7 @@ namespace Gendarme.Rules.Performance {
 				return RuleResult.DoesNotApply;
 
 			// rule applies to types that implements System.IDisposable
-			if (!type.Implements ("System.IDisposable"))
+			if (!type.Implements ("System", "IDisposable"))
 				return RuleResult.DoesNotApply;
 
 			// and provide a finalizer
diff --git a/gendarme/rules/Gendarme.Rules.Performance/ImplementEqualsTypeRule.cs b/gendarme/rules/Gendarme.Rules.Performance/ImplementEqualsTypeRule.cs
index 528a7cf..76240b4 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/ImplementEqualsTypeRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/ImplementEqualsTypeRule.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 
@@ -107,20 +108,20 @@ namespace Gendarme.Rules.Performance {
 			// * the assembly targets the 2.0 (or later) runtime
 			// * and it does not already implement it
 			if (type.Module.Runtime >= TargetRuntime.Net_2_0) {
-				if (!type.Implements ("System.IEquatable`1")) {
+				if (!type.Implements ("System", "IEquatable`1")) {
 					Runner.Report (type, Severity.Medium, Confidence.Total, "Implement System.IEquatable<T>");
 				}
 				return Runner.CurrentRuleResult;
 			}
 
-			parameters [0] = type.FullName;
+			parameters [0] = type.GetFullName ();
 			if (type.GetMethod (MethodAttributes.Public, "Equals", "System.Boolean", parameters) != null)
 				return RuleResult.Success;
 
 			// we consider this a step more severe for value types since it will need 
 			// boxing/unboxing with Equals(object)
 			Severity severity = type.IsValueType ? Severity.Medium : Severity.Low;
-			string msg = String.Format ("Implement 'bool Equals({0})'", type.Name);
+			string msg = String.Format (CultureInfo.InvariantCulture, "Implement 'bool Equals({0})'", type.Name);
 			Runner.Report (type, severity, Confidence.High, msg);
 			return RuleResult.Failure;
 		}
diff --git a/gendarme/rules/Gendarme.Rules.Performance/Makefile.in b/gendarme/rules/Gendarme.Rules.Performance/Makefile.in
index a841116..7668a90 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Performance/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(rules_categorydir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
-rules_categorySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(rules_category_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,20 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(rules_documentation_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -130,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -334,14 +410,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Performance/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Performance/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Performance/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Performance/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -351,6 +427,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../common.make $(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -359,42 +436,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-rules_categorySCRIPTS: $(rules_category_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_categorydir)" || $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)"
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_categorydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(rules_categorySCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	    $(rules_categorySCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rules_categorydir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rules_categorydir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-rules_categorySCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	done
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(rules_categorydir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -403,7 +501,7 @@ uninstall-rules_documentationDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -420,7 +518,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -428,7 +526,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -454,16 +552,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -471,14 +569,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -490,7 +588,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -499,29 +597,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -542,29 +645,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -587,10 +702,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -598,6 +718,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -617,6 +738,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -626,18 +749,28 @@ install-data-am: install-rules_categorySCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -659,8 +792,8 @@ ps-am:
 uninstall-am: uninstall-rules_categorySCRIPTS \
 	uninstall-rules_documentationDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -680,11 +813,11 @@ uninstall-am: uninstall-rules_categorySCRIPTS \
 
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -693,7 +826,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
@@ -713,6 +846,7 @@ $(rules_doc_source):
 
 clean-local:
 	rm -fr doc
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Performance/MathMinMaxCandidateRule.cs b/gendarme/rules/Gendarme.Rules.Performance/MathMinMaxCandidateRule.cs
index 37bca4c..b87866f 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/MathMinMaxCandidateRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/MathMinMaxCandidateRule.cs
@@ -83,18 +83,21 @@ namespace Gendarme.Rules.Performance {
 		// unlikely than any JIT inlines it
 		private static bool IsSupported (TypeReference type)
 		{
-			// GetOriginalType will remove the '&' for references
-			switch (type.GetElementType ().FullName) {
-			case "System.Byte":
-			case "System.Double":
-			case "System.Int16":
-			case "System.Int32":
-			case "System.Int64":
-			case "System.SByte":
-			case "System.Single":
-			case "System.UInt16":
-			case "System.UInt32":
-			case "System.UInt64":
+			if (type.Namespace != "System")
+				return false;
+			// GetElementType will remove the '&' for references
+			TypeReference tr = type.GetElementType ();
+			switch (tr.Name) {
+			case "Byte":
+			case "Double":
+			case "Int16":
+			case "Int32":
+			case "Int64":
+			case "SByte":
+			case "Single":
+			case "UInt16":
+			case "UInt32":
+			case "UInt64":
 				return true;
 			default:
 				return false;
diff --git a/gendarme/rules/Gendarme.Rules.Performance/OverrideValueTypeDefaultsRule.cs b/gendarme/rules/Gendarme.Rules.Performance/OverrideValueTypeDefaultsRule.cs
index 5ab9c1c..169ced5 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/OverrideValueTypeDefaultsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/OverrideValueTypeDefaultsRule.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 
 using Mono.Cecil;
 
@@ -118,7 +119,7 @@ namespace Gendarme.Rules.Performance {
 			// drop severity one level if only operators are missing (since overloading them
 			// is not available in every language)
 			Severity severity = (equals || gethashcode) ? Severity.Medium : Severity.Low;
-			string msg = String.Format (MissingImplementationMessage,
+			string msg = String.Format (CultureInfo.InvariantCulture, MissingImplementationMessage,
 				!equals && !gethashcode ? "Equals(object)' and 'GetHashCode()" : equals ? "GetHashCode()" : "Equals(object)",
 				operators ? String.Empty : MissingOperatorsMessage);
 
diff --git a/gendarme/rules/Gendarme.Rules.Performance/PreferCharOverloadRule.cs b/gendarme/rules/Gendarme.Rules.Performance/PreferCharOverloadRule.cs
index a81b773..84c84aa 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/PreferCharOverloadRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/PreferCharOverloadRule.cs
@@ -28,6 +28,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -93,7 +94,8 @@ namespace Gendarme.Rules.Performance {
 
 		void Report (MethodDefinition method, Instruction ins, Confidence confidence, MemberReference call, string parameter)
 		{
-			string msg = String.Format ("Prefer the use of: {0}('{1}'...);", call.Name, parameter);
+			string msg = String.Format (CultureInfo.InvariantCulture, "Prefer the use of: {0}('{1}'...);", 
+				call.Name, parameter);
 			Runner.Report (method, ins, Severity.Medium, confidence, msg);
 		}
 
@@ -106,7 +108,7 @@ namespace Gendarme.Rules.Performance {
 
 			IList<ParameterDefinition> pdc = call.Parameters;
 			int last = pdc.Count;
-			if (pdc [last - 1].ParameterType.FullName != "System.StringComparison") {
+			if (!pdc [last - 1].ParameterType.IsNamed ("System", "StringComparison")) {
 				// confidence is normal because it's possible that the code expects a
 				// culture sensitive comparison (but that will break in .NET 4).
 				Report (method, ins, Confidence.Normal, call, p1);
@@ -140,14 +142,15 @@ namespace Gendarme.Rules.Performance {
 			if (p2.Length != 1)
 				return;
 
-			string msg = String.Format ("Prefer the use of: Replace('{0}','{1}');", p1, p2);
+			string msg = String.Format (CultureInfo.InvariantCulture, 
+				"Prefer the use of: Replace('{0}','{1}');", p1, p2);
 			// confidence is higher since there's no StringComparison to consider
 			Runner.Report (method, ins, Severity.Medium, Confidence.High, msg);
 		}
 
 		static bool CheckFirstParameterIsString (IMethodSignature method)
 		{
-			return (method.HasParameters && (method.Parameters [0].ParameterType.FullName == "System.String"));
+			return (method.HasParameters && method.Parameters [0].ParameterType.IsNamed ("System", "String"));
 		}
 
 		public RuleResult CheckMethod (MethodDefinition method)
@@ -165,7 +168,7 @@ namespace Gendarme.Rules.Performance {
 					continue;
 
 				MethodReference call = (ins.Operand as MethodReference);
-				if (call.DeclaringType.FullName != "System.String")
+				if (!call.DeclaringType.IsNamed ("System", "String"))
 					continue;
 
 				switch (call.Name) {
diff --git a/gendarme/rules/Gendarme.Rules.Performance/PreferInterfaceConstraintOnGenericParameterForPrimitiveInterfaceRule.cs b/gendarme/rules/Gendarme.Rules.Performance/PreferInterfaceConstraintOnGenericParameterForPrimitiveInterfaceRule.cs
index 2567025..6dac441 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/PreferInterfaceConstraintOnGenericParameterForPrimitiveInterfaceRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/PreferInterfaceConstraintOnGenericParameterForPrimitiveInterfaceRule.cs
@@ -28,7 +28,10 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
+
 using Gendarme.Framework;
+using Gendarme.Framework.Rocks;
 using Mono.Cecil;
 
 namespace Gendarme.Rules.Performance {
@@ -61,41 +64,49 @@ namespace Gendarme.Rules.Performance {
 	[Solution("Replace the interface parameter with interface constraint on generic type parameter.")]
 	public class PreferInterfaceConstraintOnGenericParameterForPrimitiveInterfaceRule : Rule, IMethodRule {
 
-		private readonly HashSet<string> primitiveTypeInterfaces = new HashSet<string> ();
+		static bool CheckGenericArgument (GenericInstanceType git)
+		{
+			if ((git == null) || !git.HasGenericArguments)
+				return false; // should not happen with the '`1' but...
+
+			TypeReference arg = git.GenericArguments [0];
+			switch (arg.MetadataType) {
+			case MetadataType.MVar:
+				return (arg.IsGenericParameter && arg.IsNamed (String.Empty, "T"));
+			case MetadataType.ValueType:
+				return arg.IsNamed ("System", "Decimal");
+			case MetadataType.Boolean:
+			case MetadataType.Byte:
+			case MetadataType.Char:
+			case MetadataType.Double:
+			case MetadataType.Single:
+			case MetadataType.Int16:
+			case MetadataType.Int32:
+			case MetadataType.Int64:
+			case MetadataType.SByte:
+			case MetadataType.UInt16:
+			case MetadataType.UInt32:
+			case MetadataType.UInt64:
+				return true;
+			default:
+				return false;
+			}
+		}
 
-		public PreferInterfaceConstraintOnGenericParameterForPrimitiveInterfaceRule ()
+		static bool IsPrimitiveInterface (MemberReference type)
 		{
-			primitiveTypeInterfaces.Add ("System.IComparable");
-			primitiveTypeInterfaces.Add ("System.IComparable`1<T>");
-			primitiveTypeInterfaces.Add ("System.IComparable`1<System.Boolean>");
-			primitiveTypeInterfaces.Add ("System.IComparable`1<System.Byte>");
-			primitiveTypeInterfaces.Add ("System.IComparable`1<System.Char>");
-			primitiveTypeInterfaces.Add ("System.IComparable`1<System.Decimal>");
-			primitiveTypeInterfaces.Add ("System.IComparable`1<System.Double>");
-			primitiveTypeInterfaces.Add ("System.IComparable`1<System.Float>");
-			primitiveTypeInterfaces.Add ("System.IComparable`1<System.Int32>");
-			primitiveTypeInterfaces.Add ("System.IComparable`1<System.Int64>");
-			primitiveTypeInterfaces.Add ("System.IComparable`1<System.SByte>");
-			primitiveTypeInterfaces.Add ("System.IComparable`1<System.Short>");
-			primitiveTypeInterfaces.Add ("System.IComparable`1<System.UInt16>");
-			primitiveTypeInterfaces.Add ("System.IComparable`1<System.UInt32>");
-			primitiveTypeInterfaces.Add ("System.IComparable`1<System.UInt64>");
-			primitiveTypeInterfaces.Add ("System.IFormattable");
-			primitiveTypeInterfaces.Add ("System.IConvertible");
-			primitiveTypeInterfaces.Add ("System.IEquatable`1<T>");
-			primitiveTypeInterfaces.Add ("System.IEquatable`1<System.Boolean>");
-			primitiveTypeInterfaces.Add ("System.IEquatable`1<System.Byte>");
-			primitiveTypeInterfaces.Add ("System.IEquatable`1<System.Char>");
-			primitiveTypeInterfaces.Add ("System.IEquatable`1<System.Decimal>");
-			primitiveTypeInterfaces.Add ("System.IEquatable`1<System.Double>");
-			primitiveTypeInterfaces.Add ("System.IEquatable`1<System.Float>");
-			primitiveTypeInterfaces.Add ("System.IEquatable`1<System.Int32>");
-			primitiveTypeInterfaces.Add ("System.IEquatable`1<System.Int64>");
-			primitiveTypeInterfaces.Add ("System.IEquatable`1<System.SByte>");
-			primitiveTypeInterfaces.Add ("System.IEquatable`1<System.Short>");
-			primitiveTypeInterfaces.Add ("System.IEquatable`1<System.UInt16>");
-			primitiveTypeInterfaces.Add ("System.IEquatable`1<System.UInt32>");
-			primitiveTypeInterfaces.Add ("System.IEquatable`1<System.UInt64>");
+			switch (type.Name) {
+			case "IComparable":
+			case "IFormattable":
+			case "IConvertible":
+				return true; // no doubt
+			case "IComparable`1":
+			case "IEquatable`1":
+				// maybe, check generic argument type
+				return CheckGenericArgument (type as GenericInstanceType);
+			default:
+				return false;
+			}
 		}
 
 		public RuleResult CheckMethod (MethodDefinition method)
@@ -108,10 +119,10 @@ namespace Gendarme.Rules.Performance {
 				if (type.Namespace != "System")
 					continue;
 
-				string tname = type.FullName;
-				if (primitiveTypeInterfaces.Contains (tname)) {
-					string msg = String.Format ("You are using {0} as parameter, which cause boxing with value type as argument",
-						tname);
+				if (IsPrimitiveInterface (type)) {
+					string msg = String.Format (CultureInfo.InvariantCulture,
+						"You are using {0} as parameter, which cause boxing with value type as argument",
+						type.GetFullName ());
 					Runner.Report (method, Severity.Low, Confidence.Total, msg);
 				}
 			}
diff --git a/gendarme/rules/Gendarme.Rules.Performance/PreferLiteralOverInitOnlyFieldsRule.cs b/gendarme/rules/Gendarme.Rules.Performance/PreferLiteralOverInitOnlyFieldsRule.cs
index a28601b..31310f8 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/PreferLiteralOverInitOnlyFieldsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/PreferLiteralOverInitOnlyFieldsRule.cs
@@ -113,7 +113,7 @@ namespace Gendarme.Rules.Performance {
 				// and report constant stuff
 				if (Constant.Get (previous.OpCode.Code)) {
 					// adjust severity based on the field visibility and it's type
-					Severity s = (field.FieldType.FullName == "System.String" || !field.IsVisible ()) ?
+					Severity s = (field.FieldType.IsNamed ("System", "String") || !field.IsVisible ()) ?
 						Severity.High : Severity.Medium;
 					Runner.Report (field, s, Confidence.Normal);
 				}
diff --git a/gendarme/rules/Gendarme.Rules.Performance/RemoveUnusedLocalVariablesRule.cs b/gendarme/rules/Gendarme.Rules.Performance/RemoveUnusedLocalVariablesRule.cs
index bf1cda5..ac4ece9 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/RemoveUnusedLocalVariablesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/RemoveUnusedLocalVariablesRule.cs
@@ -28,6 +28,7 @@
 
 using System;
 using System.Collections;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -132,8 +133,8 @@ namespace Gendarme.Rules.Performance {
 					if (variable.IsGeneratedName ())
 						continue;
 
-					string s = String.Format ("Variable '{0}' of type '{1}'", 
-						variable.Name, variable.VariableType.FullName);
+					string s = String.Format (CultureInfo.InvariantCulture, "Variable '{0}' of type '{1}'", 
+						variable.Name, variable.VariableType.GetFullName ());
 					Runner.Report (method, Severity.Low, Confidence.Normal, s);
 				}
 			}
diff --git a/gendarme/rules/Gendarme.Rules.Performance/ReviewLinqMethodRule.cs b/gendarme/rules/Gendarme.Rules.Performance/ReviewLinqMethodRule.cs
index 0bef7c2..095c240 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/ReviewLinqMethodRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/ReviewLinqMethodRule.cs
@@ -28,6 +28,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -96,10 +97,6 @@ namespace Gendarme.Rules.Performance {
 	[EngineDependency (typeof (OpCodeEngine))]
 	public sealed class ReviewLinqMethodRule : Rule, IMethodRule {
 
-		private const string EnumerableName = "System.Linq.Enumerable";
-
-		//private readonly OpCodeBitmask Comparisons = ComparisonsBitmask ();
-		//private readonly OpCodeBitmask Conditions = ConditionsBitmask ();
 		private readonly OpCodeBitmask Comparisons = new OpCodeBitmask (0x2801400000000000, 0x0, 0x0, 0xB);
 		private readonly OpCodeBitmask Conditions = new OpCodeBitmask (0x300180000000000, 0x0, 0x0, 0x0);
 
@@ -181,14 +178,16 @@ namespace Gendarme.Rules.Performance {
 		private void CheckForSubscript (TypeReference type, MethodDefinition method, Instruction ins, string name)
 		{
 			if (type.IsArray) {
-				string message = string.Format ("Use operator [] instead of the {0} method.", name);
+				string message = String.Format (CultureInfo.InvariantCulture, 
+					"Use operator [] instead of the {0} method.", name);
 				Log.WriteLine (this, "{0:X4} {1}", ins.Offset, message);
 				Runner.Report (method, ins, Severity.Medium, Confidence.High, message);
 
 			} else {
 				TypeDefinition td = type.Resolve ();						// resolve of an array returns the element type...
 				if (td != null && HasMethod (td, Subscript)) {
-					string message = string.Format ("Use operator [] instead of the {0} method.", name);
+					string message = String.Format (CultureInfo.InvariantCulture,
+						"Use operator [] instead of the {0} method.", name);
 					Log.WriteLine (this, "{0:X4} {1}", ins.Offset, message);
 					Runner.Report (method, ins, Severity.Medium, Confidence.High, message);
 				}
@@ -198,14 +197,16 @@ namespace Gendarme.Rules.Performance {
 		private void CheckForSort (TypeReference type, MethodDefinition method, Instruction ins, string name)
 		{
 			if (type.IsArray) {
-				string message = string.Format ("Use Array.Sort instead of the {0} method.", name);
+				string message = String.Format (CultureInfo.InvariantCulture,
+					"Use Array.Sort instead of the {0} method.", name);
 				Log.WriteLine (this, "{0:X4} {1}", ins.Offset, message);
 				Runner.Report (method, ins, Severity.Medium, Confidence.High, message);
 
 			} else {
 				TypeDefinition td = type.Resolve ();						// resolve of an array returns the element type...
 				if (td != null && HasMethod (td, Sort)) {
-					string message = string.Format ("Use Sort instead of the {0} method.", name);
+					string message = String.Format (CultureInfo.InvariantCulture,
+						"Use Sort instead of the {0} method.", name);
 					Log.WriteLine (this, "{0:X4} {1}", ins.Offset, message);
 					Runner.Report (method, ins, Severity.Medium, Confidence.High, message);
 				}
@@ -251,7 +252,7 @@ namespace Gendarme.Rules.Performance {
 				
 				// and the method is a System.Linq.Enumerable method then,
 				var target = ins.Operand as MethodReference;
-				if ((target == null) || (target.DeclaringType.FullName != EnumerableName))
+				if (!target.DeclaringType.IsNamed ("System.Linq", "Enumerable"))
 					continue;
 
 				string tname = target.Name;
diff --git a/gendarme/rules/Gendarme.Rules.Performance/Test/AvoidRepetitiveCallsToPropertiesTest.cs b/gendarme/rules/Gendarme.Rules.Performance/Test/AvoidRepetitiveCallsToPropertiesTest.cs
index a82ddf4..fe00fcc 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/Test/AvoidRepetitiveCallsToPropertiesTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/Test/AvoidRepetitiveCallsToPropertiesTest.cs
@@ -240,8 +240,8 @@ namespace Test.Rules.Performance {
 			if ((source == null) || (target == null))
 				return false;
 
-			int ss = source.GetSequence () - 1;
-			int ts = target.GetSequence () - 1;
+			int ss = source.Index;
+			int ts = target.Index;
 			if ((ss <= 0) || (ts <= 0))
 				return false;
 
diff --git a/gendarme/rules/Gendarme.Rules.Performance/Test/AvoidUnusedPrivateFieldsTest.cs b/gendarme/rules/Gendarme.Rules.Performance/Test/AvoidUnusedPrivateFieldsTest.cs
index 212bebf..98fbb3a 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/Test/AvoidUnusedPrivateFieldsTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/Test/AvoidUnusedPrivateFieldsTest.cs
@@ -162,5 +162,46 @@ namespace Test.Rules.Performance {
 			AssertRuleFailure<GenericUnused<int>> (1);
 			AssertRuleSuccess<GenericUsed<int>> ();
 		}
+
+		class FieldsUsedInNested {
+			private bool field;
+
+			private static string staticField;
+
+			class Nested {
+				public void Foo (FieldsUsedInNested parent)
+				{
+					FieldsUsedInNested.staticField = "bar";
+					parent.field = true;
+				}
+			}
+		}
+
+		[Test]
+		public void FieldsUsedInNestedType ()
+		{
+			AssertRuleSuccess<FieldsUsedInNested> ();
+		}
+		
+		class CompilerGenerated {
+			public string Name { get; set; }
+		}
+		
+		[Test]
+		public void ClassWithCompilerGeneratedFields ()
+		{
+			AssertRuleSuccess<CompilerGenerated> ();
+		}
+		
+		class CompilerGeneratedAndUnused {
+			private int number;
+			public string Name { get; set; }
+		}
+		
+		[Test]
+		public void ClassWithCompilerGeneratedFieldsAndUnusedPrivate ()
+		{
+			AssertRuleFailure<CompilerGeneratedAndUnused> (1);
+		}
 	}
 }
diff --git a/gendarme/rules/Gendarme.Rules.Performance/Test/Makefile.in b/gendarme/rules/Gendarme.Rules.Performance/Test/Makefile.in
index cacb530..9a2b406 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/Test/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Performance/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Performance/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Performance/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Performance/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Performance/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -298,6 +338,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -306,18 +348,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -352,6 +404,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Performance/Test/PreferInterfaceConstraintOnGenericParameterForPrimitiveInterfaceTest.cs b/gendarme/rules/Gendarme.Rules.Performance/Test/PreferInterfaceConstraintOnGenericParameterForPrimitiveInterfaceTest.cs
index 22200a8..76b1fc0 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/Test/PreferInterfaceConstraintOnGenericParameterForPrimitiveInterfaceTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/Test/PreferInterfaceConstraintOnGenericParameterForPrimitiveInterfaceTest.cs
@@ -52,7 +52,17 @@ namespace Tests.Rules.Performance {
 
 			}
 
-			private void MethodWithGenericInterfaceOfBaseTypeParameter2 (IComparable<int> comparable)
+			private void MethodWithGenericInterfaceOfBaseTypeParameter2a (IComparable<int> comparable)
+			{
+
+			}
+
+			private void MethodWithGenericInterfaceOfBaseTypeParameter2b (IComparable<decimal> comparable)
+			{
+
+			}
+
+			private void MethodWithGenericInterfaceOfBaseTypeParameter2c (IComparable<object> comparable)
 			{
 
 			}
@@ -101,25 +111,27 @@ namespace Tests.Rules.Performance {
 		[Test]
 		public void MethodWithInterfaceOfBaseTypeParameter ()
 		{
-			AssertRuleFailure<TestCase> ("MethodWithInterfaceOfBaseTypeParameter");
+			AssertRuleFailure<TestCase> ("MethodWithInterfaceOfBaseTypeParameter", 1);
 		}
 
 		[Test]
 		public void MethodWithGenericInterfaceOfBaseTypeParameter ()
 		{
-			AssertRuleFailure<TestCase> ("MethodWithGenericInterfaceOfBaseTypeParameter");
+			AssertRuleFailure<TestCase> ("MethodWithGenericInterfaceOfBaseTypeParameter", 1);
 		}
 
 		[Test]
 		public void MethodWithGenericInterfaceOfBaseTypeParameter2 ()
 		{
-			AssertRuleFailure<TestCase> ("MethodWithGenericInterfaceOfBaseTypeParameter2");
+			AssertRuleFailure<TestCase> ("MethodWithGenericInterfaceOfBaseTypeParameter2a", 1);
+			AssertRuleFailure<TestCase> ("MethodWithGenericInterfaceOfBaseTypeParameter2b", 1);
+			AssertRuleSuccess<TestCase> ("MethodWithGenericInterfaceOfBaseTypeParameter2c");
 		}
 
 		[Test]
 		public void MethodWithMultipleParameters ()
 		{
-			AssertRuleFailure<TestCase> ("MethodWithMultipleParameters");
+			AssertRuleFailure<TestCase> ("MethodWithMultipleParameters", 1);
 		}
 
 		[Test]
diff --git a/gendarme/rules/Gendarme.Rules.Performance/Test/Tests.Rules.Performance.csproj b/gendarme/rules/Gendarme.Rules.Performance/Test/Tests.Rules.Performance.csproj
index 16c7b64..531edcd 100755
--- a/gendarme/rules/Gendarme.Rules.Performance/Test/Tests.Rules.Performance.csproj
+++ b/gendarme/rules/Gendarme.Rules.Performance/Test/Tests.Rules.Performance.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -12,9 +12,11 @@
     <AssemblyName>Tests.Rules.Performance</AssemblyName>
     <FileUpgradeFlags>
     </FileUpgradeFlags>
-    <OldToolsVersion>2.0</OldToolsVersion>
+    <OldToolsVersion>3.5</OldToolsVersion>
     <UpgradeBackupLocation>
     </UpgradeBackupLocation>
+    <IsWebBootstrapper>true</IsWebBootstrapper>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <PublishUrl>http://localhost/Tests.Rules.Performance/</PublishUrl>
     <Install>true</Install>
     <InstallFrom>Web</InstallFrom>
@@ -27,10 +29,9 @@
     <MapFileExtensions>true</MapFileExtensions>
     <ApplicationRevision>0</ApplicationRevision>
     <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>true</IsWebBootstrapper>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -41,6 +42,7 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -50,6 +52,7 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
@@ -121,14 +124,33 @@
     </ProjectReference>
   </ItemGroup>
   <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
diff --git a/gendarme/rules/Gendarme.Rules.Performance/UseTypeEmptyTypesRule.cs b/gendarme/rules/Gendarme.Rules.Performance/UseTypeEmptyTypesRule.cs
index 21b0879..92efb53 100644
--- a/gendarme/rules/Gendarme.Rules.Performance/UseTypeEmptyTypesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Performance/UseTypeEmptyTypesRule.cs
@@ -83,9 +83,7 @@ namespace Gendarme.Rules.Performance {
 				if (ins.OpCode != OpCodes.Newarr)
 					continue;
 
-				var type = (TypeReference) ins.Operand;
-
-				if (type.FullName != "System.Type")
+				if (!(ins.Operand as TypeReference).IsNamed ("System", "Type"))
 					continue;
 
 				if (ins.Previous.IsOperandZero ())
diff --git a/gendarme/rules/Gendarme.Rules.Portability/DoNotHardcodePathsRule.cs b/gendarme/rules/Gendarme.Rules.Portability/DoNotHardcodePathsRule.cs
index 009ebba..92b597a 100644
--- a/gendarme/rules/Gendarme.Rules.Portability/DoNotHardcodePathsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Portability/DoNotHardcodePathsRule.cs
@@ -28,6 +28,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -363,11 +364,13 @@ namespace Gendarme.Rules.Portability {
 
 				// we can avoid some false positives by doing additional checks here
 
+				TypeReference tr = target.DeclaringType;
+				string nameSpace = tr.Namespace;
+				string typeName = tr.Name;
 				string methodName = target.Name;
-				string typeName = target.DeclaringType.FullName;
 
-				if (typeName.StartsWith ("Microsoft.Win32.Registry", StringComparison.Ordinal) // registry keys
-				    || (typeName.StartsWith ("System.Xml", StringComparison.Ordinal) // xpath expressions
+				if (nameSpace == "Microsoft.Win32" && typeName.StartsWith ("Registry", StringComparison.Ordinal) // registry keys
+				    || (nameSpace.StartsWith ("System.Xml", StringComparison.Ordinal) // xpath expressions
 					&& methodName.StartsWith ("Select", StringComparison.Ordinal))) {
 					AddPoints (-42);
 					return true; // handled
@@ -389,10 +392,8 @@ namespace Gendarme.Rules.Portability {
 			case Code.Newobj:
 				// this is a constructor call
 				MethodReference ctor = (MethodReference) ins.Operand;
-				string createdTypeName = ctor.DeclaringType.FullName;
-
 				// avoid catching regular expressions
-				if (createdTypeName == "System.Text.RegularExpressions.Regex")
+				if (ctor.DeclaringType.IsNamed ("System.Text.RegularExpressions", "Regex"))
 					AddPoints (-42);
 
 				break;
@@ -494,7 +495,8 @@ namespace Gendarme.Rules.Portability {
 				// if sure enough, report the problem with the candidate string
 				// important as this allows a quick false positive check without checking the source code
 				if (conf.HasValue) {
-					string msg = String.Format ("string \"{0}\" looks quite like a filename.", candidate);
+					string msg = String.Format (CultureInfo.InvariantCulture,
+						"string \"{0}\" looks quite like a filename.", candidate);
 					Runner.Report (method, ins, Severity.High, conf.Value, msg);
 				}
 			}
diff --git a/gendarme/rules/Gendarme.Rules.Portability/ExitCodeIsLimitedOnUnixRule.cs b/gendarme/rules/Gendarme.Rules.Portability/ExitCodeIsLimitedOnUnixRule.cs
index 29c63cd..5259d1d 100644
--- a/gendarme/rules/Gendarme.Rules.Portability/ExitCodeIsLimitedOnUnixRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Portability/ExitCodeIsLimitedOnUnixRule.cs
@@ -107,7 +107,9 @@ namespace Gendarme.Rules.Portability {
 			// but we want to avoid checking all methods if the Environment type
 			// isn't referenced in a module (big performance difference)
 			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				Active = e.CurrentAssembly.MainModule.HasTypeReference ("System.Environment");
+				Active = e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+					return tr.IsNamed ("System", "Environment");
+				});
 			};
 		}
 
@@ -141,7 +143,7 @@ namespace Gendarme.Rules.Portability {
 			// FIXME: entryPoint.ReturnType should not be null with void Main ()
 			// either bad unit tests or bug in cecil
 			TypeReference rt = entry_point.ReturnType;
-			if (rt == null || rt.FullName != "System.Int32")
+			if (!rt.IsNamed ("System", "Int32"))
 				return RuleResult.DoesNotApply;
 
 			Instruction previous = null;
@@ -188,7 +190,7 @@ namespace Gendarme.Rules.Portability {
 				return (a >= 0 && a <= 255) ? InspectionResult.Good : InspectionResult.Bad;
 			case Code.Call:
 			case Code.Callvirt:
-				if ((instruction.Operand as MethodReference).ReturnType.FullName == "System.Byte")
+				if ((instruction.Operand as MethodReference).ReturnType.IsNamed ("System", "Byte"))
 					return InspectionResult.Good;
 				else
 					return InspectionResult.Unsure; // could be within 0-255 or not
@@ -217,7 +219,7 @@ namespace Gendarme.Rules.Portability {
 					string name = calledMethod.Name;
 					if ((name != "set_ExitCode") && (name != "Exit"))
 						break;
-					if (calledMethod.DeclaringType.FullName != "System.Environment")
+					if (!calledMethod.DeclaringType.IsNamed ("System", "Environment"))
 						break;
 
 					InspectionResult result = CheckInstruction (previous);
diff --git a/gendarme/rules/Gendarme.Rules.Portability/FeatureRequiresRootPrivilegeOnUnixRule.cs b/gendarme/rules/Gendarme.Rules.Portability/FeatureRequiresRootPrivilegeOnUnixRule.cs
index 8de2f25..daeaf2c 100644
--- a/gendarme/rules/Gendarme.Rules.Portability/FeatureRequiresRootPrivilegeOnUnixRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Portability/FeatureRequiresRootPrivilegeOnUnixRule.cs
@@ -84,10 +84,6 @@ namespace Gendarme.Rules.Portability {
 		private const string ProcessMessage = "Setting Process.PriorityClass to something else than ProcessPriorityClass.Normal requires root privileges.";
 		private const string PingMessage = "Usage of System.Net.NetworkInformation.Ping requires root privileges.";
 
-		// non-localizable
-		private const string Ping = "System.Net.NetworkInformation.Ping";
-		private const string Process = "System.Diagnostics.Process";
-
 		private bool ping_present = true;
 		private bool process_present = true;
 
@@ -98,8 +94,13 @@ namespace Gendarme.Rules.Portability {
 			// if the module does not reference either Ping or Process
 			// then it's not being used inside it
 			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				ping_present = e.CurrentModule.HasTypeReference (Ping);
-				process_present = e.CurrentModule.HasTypeReference (Process);
+				Active = e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+					ping_present = tr.IsNamed ("System.Net.NetworkInformation", "Ping");
+					process_present = tr.IsNamed ("System.Diagnostics", "Process");
+					// return true to stop looping when both Ping and Process are found
+					return (ping_present && process_present);
+				});
+				// activate the rule if any (or both) is/are present(s)
 				Active = (ping_present || process_present);
 			};
 			// note: this ignores on purpose System.dll since there's
@@ -112,7 +113,7 @@ namespace Gendarme.Rules.Portability {
 			MethodReference method = (ins.Operand as MethodReference);
 			if ((method == null) || (method.Name != "set_PriorityClass"))
 				return false;
-			if (method.DeclaringType.FullName != "System.Diagnostics.Process")
+			if (!method.DeclaringType.IsNamed ("System.Diagnostics", "Process"))
 				return false;
 
 			Instruction prev = ins.Previous; //check stack
@@ -132,7 +133,7 @@ namespace Gendarme.Rules.Portability {
 		private static bool CheckPing (Instruction ins)
 		{
 			MethodReference method = (ins.Operand as MethodReference);
-			return ((method != null) && (method.DeclaringType.FullName == Ping));
+			return ((method != null) && (method.DeclaringType.IsNamed ("System.Net.NetworkInformation", "Ping")));
 		}
 
 		public RuleResult CheckMethod (MethodDefinition method)
diff --git a/gendarme/rules/Gendarme.Rules.Portability/Gendarme.Rules.Portability.csproj b/gendarme/rules/Gendarme.Rules.Portability/Gendarme.Rules.Portability.csproj
index 1528411..283e5d5 100755
--- a/gendarme/rules/Gendarme.Rules.Portability/Gendarme.Rules.Portability.csproj
+++ b/gendarme/rules/Gendarme.Rules.Portability/Gendarme.Rules.Portability.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -12,9 +12,11 @@
     <AssemblyName>Gendarme.Rules.Portability</AssemblyName>
     <FileUpgradeFlags>
     </FileUpgradeFlags>
-    <OldToolsVersion>2.0</OldToolsVersion>
+    <OldToolsVersion>3.5</OldToolsVersion>
     <UpgradeBackupLocation>
     </UpgradeBackupLocation>
+    <IsWebBootstrapper>true</IsWebBootstrapper>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <PublishUrl>http://localhost/Gendarme.Rules.Portability/</PublishUrl>
     <Install>true</Install>
     <InstallFrom>Web</InstallFrom>
@@ -27,10 +29,9 @@
     <MapFileExtensions>true</MapFileExtensions>
     <ApplicationRevision>0</ApplicationRevision>
     <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>true</IsWebBootstrapper>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -43,6 +44,7 @@
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
     <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Portability.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -54,6 +56,7 @@
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
     <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Portability.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="ICSharpCode.SharpZipLib, Version=2.84.0.0, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
@@ -94,14 +97,33 @@
     <None Include="ChangeLog" />
   </ItemGroup>
   <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
diff --git a/gendarme/rules/Gendarme.Rules.Portability/Makefile.in b/gendarme/rules/Gendarme.Rules.Portability/Makefile.in
index 00cb94a..3ef81f4 100644
--- a/gendarme/rules/Gendarme.Rules.Portability/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Portability/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(rules_categorydir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
-rules_categorySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(rules_category_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,20 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(rules_documentation_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -130,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -273,14 +349,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Portability/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Portability/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Portability/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Portability/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -290,6 +366,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../common.make $(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -298,42 +375,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-rules_categorySCRIPTS: $(rules_category_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_categorydir)" || $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)"
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_categorydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(rules_categorySCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	    $(rules_categorySCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rules_categorydir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rules_categorydir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-rules_categorySCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	done
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(rules_categorydir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -342,7 +440,7 @@ uninstall-rules_documentationDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -359,7 +457,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -367,7 +465,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -393,16 +491,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -410,14 +508,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -429,7 +527,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -438,29 +536,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -481,29 +584,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -526,10 +641,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -537,6 +657,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -556,6 +677,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -565,18 +688,28 @@ install-data-am: install-rules_categorySCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -598,8 +731,8 @@ ps-am:
 uninstall-am: uninstall-rules_categorySCRIPTS \
 	uninstall-rules_documentationDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -619,11 +752,11 @@ uninstall-am: uninstall-rules_categorySCRIPTS \
 
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -632,7 +765,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
@@ -652,6 +785,7 @@ $(rules_doc_source):
 
 clean-local:
 	rm -fr doc
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Portability/MonoCompatibilityReviewRule.cs b/gendarme/rules/Gendarme.Rules.Portability/MonoCompatibilityReviewRule.cs
index 141323f..e3a5d3b 100644
--- a/gendarme/rules/Gendarme.Rules.Portability/MonoCompatibilityReviewRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Portability/MonoCompatibilityReviewRule.cs
@@ -6,7 +6,7 @@
 //	Sebastien Pouliot  <sebastien at ximian.com>
 //
 //  (C) 2007 Andreas Noever
-// Copyright (C) 2009 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2009, 2011 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -31,6 +31,7 @@
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.Globalization;
 using System.IO;
 using System.Net;
 
@@ -40,6 +41,7 @@ using Mono.Cecil.Cil;
 using Gendarme.Framework;
 using Gendarme.Framework.Engines;
 using Gendarme.Framework.Helpers;
+using Gendarme.Framework.Rocks;
 
 using ICSharpCode.SharpZipLib.Zip;
 
@@ -126,7 +128,7 @@ namespace Gendarme.Rules.Portability {
 
 		private string GetFileName (Version v)
 		{
-			return Path.Combine (DefinitionsFolder, String.Format ("definitions-{0}.zip", v));
+			return Path.Combine (DefinitionsFolder, String.Format (CultureInfo.InvariantCulture, "definitions-{0}.zip", v));
 		}
 
 		private Version FindLastestLocalVersion ()
@@ -139,7 +141,7 @@ namespace Gendarme.Rules.Portability {
 
 			try {
 				string latest = def_files [def_files.Length - 1];
-				int s = latest.LastIndexOf ("definitions-") + 12;
+				int s = latest.LastIndexOf ("definitions-", StringComparison.Ordinal) + 12;
 				return new Version (latest.Substring (s, latest.Length - s - 4)); // remove .zip
 			}
 			catch (FormatException) {
@@ -175,7 +177,7 @@ namespace Gendarme.Rules.Portability {
 
 			using (FileStream fs = File.OpenRead (filename)) 
 			using (ZipInputStream zs = new ZipInputStream (fs))
-			using (StreamReader sr = new StreamReader (zs)) {
+			using (StreamLineReader sr = new StreamLineReader (zs)) {
 				ZipEntry ze;
 				while ((ze = zs.GetNextEntry ()) != null) {
 					switch (ze.Name) {
@@ -291,29 +293,28 @@ namespace Gendarme.Rules.Portability {
 			return v;
 		}
 
-		private static Dictionary<string, string> ReadWithComments (TextReader reader)
+		static char [] buffer = new char [4096];
+
+		private static Dictionary<string, string> ReadWithComments (StreamLineReader reader)
 		{
 			Dictionary<string, string> dict = new Dictionary<string, string> ();
-			string line;
-			while ((line = reader.ReadLine ()) != null) {
-				int split = line.IndexOf ('-');
-				string target = line.Substring (0, split);
-				// are there comments ? (many entries don't have any)
-				if (split == line.Length - 1) {
-					dict.Add (target, null);
-				} else {
-					dict.Add (target, line.Substring (split + 1));
-				}
+			while (!reader.EndOfStream) {
+				int length = reader.ReadLine (buffer, 0, buffer.Length);
+				int pos = Array.IndexOf (buffer, '-');
+				string key = new string (buffer, 0, pos);
+				string comment = (buffer [length - 1] == '-') ? null :
+					new string (buffer, pos + 1, length - pos - 1);
+				dict.Add (key, comment);
 			}
 			return dict;
 		}
 
-		private static HashSet<string> Read (TextReader reader)
+		private static HashSet<string> Read (StreamLineReader reader)
 		{
 			HashSet<string> set = new HashSet<string> ();
-			string line;
-			while ((line = reader.ReadLine ()) != null) {
-				set.Add (line);
+			while (!reader.EndOfStream) {
+				int length = reader.ReadLine (buffer, 0, buffer.Length);
+				set.Add (new string (buffer, 0, length));
 			}
 			return set;
 		}
@@ -344,18 +345,18 @@ namespace Gendarme.Rules.Portability {
 					continue;
 
 				// MethodReference.ToString is costly so we do it once for the three checks
-				string callee = mr.ToString ();
+				string callee = mr.GetFullName ();
 
 				// calling not implemented method is very likely not to work == High
 				if ((NotImplemented != null) && NotImplementedInternal.Contains (callee)) {
-					string message = String.Format (NotImplementedMessage, callee);
+					string message = String.Format (CultureInfo.InvariantCulture, NotImplementedMessage, callee);
 					// confidence is Normal since we can't be sure if MoMA data is up to date
 					Runner.Report (method, ins, Severity.High, Confidence.Normal, message);
 				}
 
 				// calling missing methods can't work == Critical
 				if ((Missing != null) && Missing.Contains (callee)) {
-					string message = String.Format (MissingMessage, callee);
+					string message = String.Format (CultureInfo.InvariantCulture, MissingMessage, callee);
 					Runner.Report (method, ins, Severity.Critical, Confidence.Normal, message);
 				}
 
@@ -363,7 +364,7 @@ namespace Gendarme.Rules.Portability {
 				if (ToDo != null) {
 					string value;
 					if (ToDo.TryGetValue (callee, out value)) {
-						string message = String.Format (TodoMessage, callee, value);
+						string message = String.Format (CultureInfo.InvariantCulture, TodoMessage, callee, value);
 						Runner.Report (method, ins,  Severity.Medium, Confidence.Normal, message);
 					}
 				}
diff --git a/gendarme/rules/Gendarme.Rules.Portability/NewLineLiteralRule.cs b/gendarme/rules/Gendarme.Rules.Portability/NewLineLiteralRule.cs
index 40345c9..1e3afa3 100644
--- a/gendarme/rules/Gendarme.Rules.Portability/NewLineLiteralRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Portability/NewLineLiteralRule.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 using System.Text;
 
 using Mono.Cecil;
@@ -115,7 +116,7 @@ namespace Gendarme.Rules.Portability {
 				else if (c == '\t')
 					result.Append ("\\t");
 				else
-					result.AppendFormat ("\\x").Append (((short) c).ToString ("x"));
+					result.Append ("\\x").Append (((short) c).ToString ("x", CultureInfo.InvariantCulture));
 			}
 			return result.Append ("\".").ToString ();
 		}
diff --git a/gendarme/rules/Gendarme.Rules.Portability/Test/Makefile.in b/gendarme/rules/Gendarme.Rules.Portability/Test/Makefile.in
index c0ee0aa..2a7157c 100644
--- a/gendarme/rules/Gendarme.Rules.Portability/Test/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Portability/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Portability/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Portability/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Portability/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Portability/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -298,6 +338,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -306,18 +348,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -352,6 +404,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Portability/Test/Tests.Rules.Portability.csproj b/gendarme/rules/Gendarme.Rules.Portability/Test/Tests.Rules.Portability.csproj
index 0787fd3..fcd8220 100755
--- a/gendarme/rules/Gendarme.Rules.Portability/Test/Tests.Rules.Portability.csproj
+++ b/gendarme/rules/Gendarme.Rules.Portability/Test/Tests.Rules.Portability.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -12,9 +12,11 @@
     <AssemblyName>Tests.Rules.Portability</AssemblyName>
     <FileUpgradeFlags>
     </FileUpgradeFlags>
-    <OldToolsVersion>2.0</OldToolsVersion>
+    <OldToolsVersion>3.5</OldToolsVersion>
     <UpgradeBackupLocation>
     </UpgradeBackupLocation>
+    <IsWebBootstrapper>true</IsWebBootstrapper>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <PublishUrl>http://localhost/Tests.Rules.Portability/</PublishUrl>
     <Install>true</Install>
     <InstallFrom>Web</InstallFrom>
@@ -27,10 +29,9 @@
     <MapFileExtensions>true</MapFileExtensions>
     <ApplicationRevision>0</ApplicationRevision>
     <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>true</IsWebBootstrapper>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -40,6 +41,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -48,6 +50,7 @@
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
@@ -90,14 +93,33 @@
     </ProjectReference>
   </ItemGroup>
   <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
diff --git a/gendarme/rules/Gendarme.Rules.Security.Cas/Gendarme.Rules.Security.Cas.csproj b/gendarme/rules/Gendarme.Rules.Security.Cas/Gendarme.Rules.Security.Cas.csproj
index 436c7cc..91cc467 100644
--- a/gendarme/rules/Gendarme.Rules.Security.Cas/Gendarme.Rules.Security.Cas.csproj
+++ b/gendarme/rules/Gendarme.Rules.Security.Cas/Gendarme.Rules.Security.Cas.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Gendarme.Rules.Security.Cas</RootNamespace>
     <AssemblyName>Gendarme.Rules.Security.Cas</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -24,6 +44,7 @@
     <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Security.Cas.xml</DocumentationFile>
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -35,6 +56,7 @@
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
     <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Security.Cas.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -66,6 +88,23 @@
       <Name>Gendarme.Framework</Name>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.Security.Cas/Makefile.in b/gendarme/rules/Gendarme.Rules.Security.Cas/Makefile.in
index 0d66270..1267a28 100644
--- a/gendarme/rules/Gendarme.Rules.Security.Cas/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Security.Cas/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(rules_categorydir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
-rules_categorySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(rules_category_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,20 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(rules_documentation_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -130,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -279,14 +355,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Security.Cas/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Security.Cas/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Security.Cas/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Security.Cas/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -296,6 +372,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../common.make $(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -304,42 +381,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-rules_categorySCRIPTS: $(rules_category_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_categorydir)" || $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)"
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_categorydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(rules_categorySCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	    $(rules_categorySCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rules_categorydir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rules_categorydir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-rules_categorySCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	done
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(rules_categorydir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -348,7 +446,7 @@ uninstall-rules_documentationDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -365,7 +463,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -373,7 +471,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -399,16 +497,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -416,14 +514,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -435,7 +533,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -444,29 +542,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -487,29 +590,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -532,10 +647,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -543,6 +663,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -562,6 +683,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -571,18 +694,28 @@ install-data-am: install-rules_categorySCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -604,8 +737,8 @@ ps-am:
 uninstall-am: uninstall-rules_categorySCRIPTS \
 	uninstall-rules_documentationDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -625,11 +758,11 @@ uninstall-am: uninstall-rules_categorySCRIPTS \
 
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -638,7 +771,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
@@ -658,6 +791,7 @@ $(rules_doc_source):
 
 clean-local:
 	rm -fr doc
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Security.Cas/ReviewSuppressUnmanagedCodeSecurityUsageRule.cs b/gendarme/rules/Gendarme.Rules.Security.Cas/ReviewSuppressUnmanagedCodeSecurityUsageRule.cs
index 8f0d3de..fc03231 100644
--- a/gendarme/rules/Gendarme.Rules.Security.Cas/ReviewSuppressUnmanagedCodeSecurityUsageRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Security.Cas/ReviewSuppressUnmanagedCodeSecurityUsageRule.cs
@@ -56,8 +56,6 @@ namespace Gendarme.Rules.Security.Cas {
 	[FxCopCompatibility ("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage")]
 	public class ReviewSuppressUnmanagedCodeSecurityUsageRule : Rule, ITypeRule, IMethodRule {
 
-		private const string SUCS = "System.Security.SuppressUnmanagedCodeSecurityAttribute";
-
 		public override void Initialize (IRunner runner)
 		{
 			base.Initialize (runner);
@@ -65,8 +63,10 @@ namespace Gendarme.Rules.Security.Cas {
 			// if the module does not reference [SuppressUnmanagedCodeSecurityAttribute]
 			// then it's not being used inside it
 			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				Active = (e.CurrentAssembly.Name.Name == "mscorlib"
-					|| e.CurrentModule.HasTypeReference (SUCS));
+				Active = (e.CurrentAssembly.Name.Name == "mscorlib" ||
+					e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+						return tr.IsNamed ("System.Security", "SuppressUnmanagedCodeSecurityAttribute");
+					}));
 			};
 		}
 
@@ -78,7 +78,7 @@ namespace Gendarme.Rules.Security.Cas {
 			if (type.IsEnum)
 				return RuleResult.DoesNotApply;
 
-			if (!type.HasAttribute (SUCS))
+			if (!type.HasAttribute ("System.Security", "SuppressUnmanagedCodeSecurityAttribute"))
 				return RuleResult.Success;
 
 			Runner.Report (type, Severity.Audit, Confidence.Total);
@@ -87,7 +87,7 @@ namespace Gendarme.Rules.Security.Cas {
 
 		public RuleResult CheckMethod (MethodDefinition method)
 		{
-			if (!method.HasAttribute (SUCS))
+			if (!method.HasAttribute ("System.Security", "SuppressUnmanagedCodeSecurityAttribute"))
 				return RuleResult.Success;
 
 			Runner.Report (method, Severity.Audit, Confidence.Total);
diff --git a/gendarme/rules/Gendarme.Rules.Security.Cas/SecureGetObjectDataOverridesRule.cs b/gendarme/rules/Gendarme.Rules.Security.Cas/SecureGetObjectDataOverridesRule.cs
index 481e95e..79831bd 100644
--- a/gendarme/rules/Gendarme.Rules.Security.Cas/SecureGetObjectDataOverridesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Security.Cas/SecureGetObjectDataOverridesRule.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 using System.Security;
 using System.Security.Permissions;
 
@@ -87,7 +88,7 @@ namespace Gendarme.Rules.Security.Cas {
 		public RuleResult CheckType (TypeDefinition type)
 		{
 			// rule applies only to types that implements ISerializable
-			if (!type.Implements ("System.Runtime.Serialization.ISerializable"))
+			if (!type.Implements ("System.Runtime.Serialization", "ISerializable"))
 				return RuleResult.DoesNotApply;
 
 			MethodDefinition method = type.GetMethod (MethodSignatures.GetObjectData);
@@ -112,7 +113,8 @@ namespace Gendarme.Rules.Security.Cas {
 				case Mono.Cecil.SecurityAction.NonCasLinkDemand:
 					demand = true;
 					if (!RuleSet.IsSubsetOf (declsec.ToPermissionSet ())) {
-						string message = String.Format ("{0} is not a subset of {1} permission set",
+						string message = String.Format (CultureInfo.InvariantCulture,
+							"{0} is not a subset of {1} permission set",
 							"SerializationFormatter", declsec.Action);
 						Runner.Report (method, Severity.High, Confidence.Total, message);
 					}
diff --git a/gendarme/rules/Gendarme.Rules.Security.Cas/SecurityDeclarationRocks.cs b/gendarme/rules/Gendarme.Rules.Security.Cas/SecurityDeclarationRocks.cs
index ee136e9..ba56671 100644
--- a/gendarme/rules/Gendarme.Rules.Security.Cas/SecurityDeclarationRocks.cs
+++ b/gendarme/rules/Gendarme.Rules.Security.Cas/SecurityDeclarationRocks.cs
@@ -31,6 +31,7 @@ using System.Security;
 using SSP = System.Security.Permissions;
 
 using Mono.Cecil;
+using Gendarme.Framework.Rocks;
 
 namespace Gendarme.Rules.Security.Cas {
 
diff --git a/gendarme/rules/Gendarme.Rules.Security.Cas/Test/Makefile.in b/gendarme/rules/Gendarme.Rules.Security.Cas/Test/Makefile.in
index ba619ca..ab4e6f0 100644
--- a/gendarme/rules/Gendarme.Rules.Security.Cas/Test/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Security.Cas/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Security.Cas/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Security.Cas/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Security.Cas/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Security.Cas/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -298,6 +338,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -306,18 +348,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -352,6 +404,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Security.Cas/Test/Tests.Rules.Security.Cas.csproj b/gendarme/rules/Gendarme.Rules.Security.Cas/Test/Tests.Rules.Security.Cas.csproj
index b9cd34a..8d2eec5 100644
--- a/gendarme/rules/Gendarme.Rules.Security.Cas/Test/Tests.Rules.Security.Cas.csproj
+++ b/gendarme/rules/Gendarme.Rules.Security.Cas/Test/Tests.Rules.Security.Cas.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Tests.Rules.Security.Cas</RootNamespace>
     <AssemblyName>Tests.Rules.Security.Cas</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -21,6 +41,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -29,6 +50,7 @@
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
@@ -72,6 +94,23 @@
   <ItemGroup>
     <Folder Include="Properties\" />
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.Security/DoNotShortCircuitCertificateCheckRule.cs b/gendarme/rules/Gendarme.Rules.Security/DoNotShortCircuitCertificateCheckRule.cs
index 31f51cf..3323b85 100644
--- a/gendarme/rules/Gendarme.Rules.Security/DoNotShortCircuitCertificateCheckRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Security/DoNotShortCircuitCertificateCheckRule.cs
@@ -122,8 +122,11 @@ namespace Gendarme.Rules.Security {
 			// if the module does not reference System.Math then 
 			// none of its method is being called with constants
 			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				Active = (e.CurrentAssembly.Name.Name == "mscorlib") ||
-					e.CurrentModule.HasTypeReference ("System.Net.ICertificatePolicy");
+				Active = (e.CurrentAssembly.Name.Name == "mscorlib" ||
+					e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+						return tr.IsNamed ("System.Net", "ICertificatePolicy");
+					})
+				);
 			};
 		}
 
@@ -138,11 +141,11 @@ namespace Gendarme.Rules.Security {
 						if (pd == null)
 							continue;
 
-						switch (pd.GetSequence ()) {
-						case 2:
-						case 4:
-							return RuleResult.Success;
+						switch (pd.Index) {
+						case 1:
 						case 3:
+							return RuleResult.Success;
+						case 2:
 							if (third)
 								return RuleResult.Success;
 							break;
@@ -160,7 +163,7 @@ namespace Gendarme.Rules.Security {
 			// since ICertificatePolicy is an interface we need to check its name
 			string name = method.Name;
 			if (name == "CheckValidationResult") {
-				if (!method.DeclaringType.Implements ("System.Net.ICertificatePolicy"))
+				if (!method.DeclaringType.Implements ("System.Net", "ICertificatePolicy"))
 					return RuleResult.Success;
 			} else if (name != "System.Net.ICertificatePolicy.CheckValidationResult")
 				return RuleResult.Success;
@@ -187,7 +190,7 @@ namespace Gendarme.Rules.Security {
 
 			IList<ParameterDefinition> pdc = method.Parameters;
 			int count = pdc.Count;
-			if ((count != 4) || (method.ReturnType.FullName != "System.Boolean"))
+			if ((count != 4) || !method.ReturnType.IsNamed ("System", "Boolean"))
 				return RuleResult.DoesNotApply;
 
 			// this method could be a candidate for both policy or callback
@@ -195,10 +198,10 @@ namespace Gendarme.Rules.Security {
 			bool callback = true;
 			// if all the parameters match
 			for (int i = 0; i < count; i++) {
-				string name = pdc [i].ParameterType.FullName;
-				if (policy && (name != CertificatePolicyParameters [i]))
+				TypeReference ptype = pdc [i].ParameterType;
+				if (policy && !ptype.IsNamed (CertificatePolicyParameters [i]))
 					policy = false;
-				if (callback && (name != RemoteCertificateValidationParameters [i]))
+				if (callback && !ptype.IsNamed (RemoteCertificateValidationParameters [i]))
 					callback = false;
 			}
 
diff --git a/gendarme/rules/Gendarme.Rules.Security/Gendarme.Rules.Security.csproj b/gendarme/rules/Gendarme.Rules.Security/Gendarme.Rules.Security.csproj
index 7cec633..62fc565 100755
--- a/gendarme/rules/Gendarme.Rules.Security/Gendarme.Rules.Security.csproj
+++ b/gendarme/rules/Gendarme.Rules.Security/Gendarme.Rules.Security.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -12,9 +12,11 @@
     <AssemblyName>Gendarme.Rules.Security</AssemblyName>
     <FileUpgradeFlags>
     </FileUpgradeFlags>
-    <OldToolsVersion>2.0</OldToolsVersion>
+    <OldToolsVersion>3.5</OldToolsVersion>
     <UpgradeBackupLocation>
     </UpgradeBackupLocation>
+    <IsWebBootstrapper>true</IsWebBootstrapper>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <PublishUrl>http://localhost/Gendarme.Rules.Security/</PublishUrl>
     <Install>true</Install>
     <InstallFrom>Web</InstallFrom>
@@ -27,10 +29,9 @@
     <MapFileExtensions>true</MapFileExtensions>
     <ApplicationRevision>0</ApplicationRevision>
     <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>true</IsWebBootstrapper>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -43,6 +44,7 @@
     <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Security.xml</DocumentationFile>
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -54,6 +56,7 @@
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
     <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Security.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -84,14 +87,33 @@
     <None Include="ChangeLog" />
   </ItemGroup>
   <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
diff --git a/gendarme/rules/Gendarme.Rules.Security/Makefile.in b/gendarme/rules/Gendarme.Rules.Security/Makefile.in
index 3121109..e82b158 100644
--- a/gendarme/rules/Gendarme.Rules.Security/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Security/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(rules_categorydir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
-rules_categorySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(rules_category_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,20 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(rules_documentation_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -130,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -269,14 +345,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Security/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Security/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Security/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Security/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -286,6 +362,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../common.make $(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -294,42 +371,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-rules_categorySCRIPTS: $(rules_category_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_categorydir)" || $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)"
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_categorydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(rules_categorySCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	    $(rules_categorySCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rules_categorydir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rules_categorydir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-rules_categorySCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	done
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(rules_categorydir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -338,7 +436,7 @@ uninstall-rules_documentationDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -355,7 +453,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -363,7 +461,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -389,16 +487,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -406,14 +504,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -425,7 +523,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -434,29 +532,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -477,29 +580,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -522,10 +637,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -533,6 +653,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -552,6 +673,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -561,18 +684,28 @@ install-data-am: install-rules_categorySCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -594,8 +727,8 @@ ps-am:
 uninstall-am: uninstall-rules_categorySCRIPTS \
 	uninstall-rules_documentationDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -615,11 +748,11 @@ uninstall-am: uninstall-rules_categorySCRIPTS \
 
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -628,7 +761,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
@@ -648,6 +781,7 @@ $(rules_doc_source):
 
 clean-local:
 	rm -fr doc
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Security/Test/Makefile.in b/gendarme/rules/Gendarme.Rules.Security/Test/Makefile.in
index 23619ef..2d050e9 100644
--- a/gendarme/rules/Gendarme.Rules.Security/Test/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Security/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Security/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Security/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Security/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Security/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -298,6 +338,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -306,18 +348,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -352,6 +404,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Security/Test/Tests.Rules.Security.csproj b/gendarme/rules/Gendarme.Rules.Security/Test/Tests.Rules.Security.csproj
index ce04b1c..2568557 100755
--- a/gendarme/rules/Gendarme.Rules.Security/Test/Tests.Rules.Security.csproj
+++ b/gendarme/rules/Gendarme.Rules.Security/Test/Tests.Rules.Security.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -12,9 +12,11 @@
     <AssemblyName>Tests.Rules.Security</AssemblyName>
     <FileUpgradeFlags>
     </FileUpgradeFlags>
-    <OldToolsVersion>2.0</OldToolsVersion>
+    <OldToolsVersion>3.5</OldToolsVersion>
     <UpgradeBackupLocation>
     </UpgradeBackupLocation>
+    <IsWebBootstrapper>true</IsWebBootstrapper>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <PublishUrl>http://localhost/Tests.Rules.Security/</PublishUrl>
     <Install>true</Install>
     <InstallFrom>Web</InstallFrom>
@@ -27,10 +29,9 @@
     <MapFileExtensions>true</MapFileExtensions>
     <ApplicationRevision>0</ApplicationRevision>
     <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>true</IsWebBootstrapper>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -40,6 +41,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -48,6 +50,7 @@
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
@@ -86,14 +89,33 @@
     </ProjectReference>
   </ItemGroup>
   <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
diff --git a/gendarme/rules/Gendarme.Rules.Serialization/CallBaseMethodsOnISerializableTypesRule.cs b/gendarme/rules/Gendarme.Rules.Serialization/CallBaseMethodsOnISerializableTypesRule.cs
index 640b093..bd7eb7c 100644
--- a/gendarme/rules/Gendarme.Rules.Serialization/CallBaseMethodsOnISerializableTypesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Serialization/CallBaseMethodsOnISerializableTypesRule.cs
@@ -102,9 +102,9 @@ namespace Gendarme.Rules.Serialization {
 		private static bool InheritsFromISerializableImplementation (TypeDefinition type)
 		{
 			TypeDefinition current = type.BaseType != null ? type.BaseType.Resolve () : null;
-			if (current == null || current.FullName == "System.Object")
+			if (current == null || current.IsNamed ("System", "Object"))
 				return false;
-			if (current.IsSerializable && current.Implements ("System.Runtime.Serialization.ISerializable"))
+			if (current.IsSerializable && current.Implements ("System.Runtime.Serialization", "ISerializable"))
 				return true;
 
 			return InheritsFromISerializableImplementation (current);
@@ -124,7 +124,8 @@ namespace Gendarme.Rules.Serialization {
 						continue;
 
 					MethodReference operand = (MethodReference) instruction.Operand;
-					if (methodSignature.Matches (operand) && type.Inherits (operand.DeclaringType.FullName))
+					TypeReference tr = operand.DeclaringType;
+					if (methodSignature.Matches (operand) && type.Inherits (tr.Namespace, tr.Name))
 						return;
 				}
 			}
diff --git a/gendarme/rules/Gendarme.Rules.Serialization/DeserializeOptionalFieldRule.cs b/gendarme/rules/Gendarme.Rules.Serialization/DeserializeOptionalFieldRule.cs
index 217384b..5fdbd75 100644
--- a/gendarme/rules/Gendarme.Rules.Serialization/DeserializeOptionalFieldRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Serialization/DeserializeOptionalFieldRule.cs
@@ -26,6 +26,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 
 using Mono.Cecil;
 
@@ -85,10 +86,6 @@ namespace Gendarme.Rules.Serialization {
 		private const string MessageOptional = "Optional fields '{0}' is not deserialized.";
 		private const string MessageSerializable = "Optional fields '{0}' in non-serializable type.";
 
-		private const string OptionalFieldAttribute = "System.Runtime.Serialization.OptionalFieldAttribute";
-		private const string OnDeserializedAttribute = "System.Runtime.Serialization.OnDeserializedAttribute";
-		private const string OnDeserializingAttribute = "System.Runtime.Serialization.OnDeserializingAttribute";
-
 		public override void Initialize (IRunner runner)
 		{
 			base.Initialize (runner);
@@ -103,7 +100,10 @@ namespace Gendarme.Rules.Serialization {
 					// if the module does not have a reference to System.Runtime.Serialization.OptionalFieldAttribute
 					// then nothing will be reported by this rule
 					(e.CurrentAssembly.Name.Name == "mscorlib" ||
-					e.CurrentModule.HasTypeReference (OptionalFieldAttribute));
+					e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+						return tr.IsNamed ("System.Runtime.Serialization", "OptionalFieldAttribute");
+					})
+				);
 			};
 		}
 
@@ -121,9 +121,9 @@ namespace Gendarme.Rules.Serialization {
 					if (method.IsConstructor || !method.HasCustomAttributes)
 						continue;
 
-					if (method.HasAttribute (OnDeserializedAttribute))
+					if (method.HasAttribute ("System.Runtime.Serialization", "OnDeserializedAttribute"))
 						deserialized_candidate = true;
-					if (method.HasAttribute (OnDeserializingAttribute))
+					if (method.HasAttribute ("System.Runtime.Serialization", "OnDeserializingAttribute"))
 						deserializing_candidate = true;
 
 					if (deserialized_candidate && deserializing_candidate)
@@ -133,19 +133,17 @@ namespace Gendarme.Rules.Serialization {
 
 			// check if we found some optional fields, if none then it's all ok
 			foreach (FieldDefinition field in type.Fields) {
-				if (!field.HasCustomAttributes)
-					continue;
-				if (field.CustomAttributes.ContainsType (OptionalFieldAttribute)) {
+				if (field.HasAttribute ("System.Runtime.Serialization", "OptionalFieldAttribute")) {
 					if (type.IsSerializable) {
 						// report if we didn't find a deserialization method
 						if (!deserialized_candidate || !deserializing_candidate) {
 							// Medium since it's possible that the optional fields don't need to be re-computed
-							string s = String.Format (MessageOptional, field.Name);
+							string s = String.Format (CultureInfo.InvariantCulture, MessageOptional, field.Name);
 							Runner.Report (field, Severity.Medium, Confidence.High, s);
 						}
 					} else {
 						// [OptionalField] without [Serializable] is a bigger problem
-						string s = String.Format (MessageSerializable, field.Name);
+						string s = String.Format (CultureInfo.InvariantCulture, MessageSerializable, field.Name);
 						Runner.Report (field, Severity.Critical, Confidence.High, s);
 					}
 				}
diff --git a/gendarme/rules/Gendarme.Rules.Serialization/Gendarme.Rules.Serialization.csproj b/gendarme/rules/Gendarme.Rules.Serialization/Gendarme.Rules.Serialization.csproj
index 06d1196..c8a0661 100755
--- a/gendarme/rules/Gendarme.Rules.Serialization/Gendarme.Rules.Serialization.csproj
+++ b/gendarme/rules/Gendarme.Rules.Serialization/Gendarme.Rules.Serialization.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Gendarme.Rules.Serialization</RootNamespace>
     <AssemblyName>Gendarme.Rules.Serialization</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -24,6 +44,7 @@
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
     <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Serialization.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -35,6 +56,7 @@
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
     <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Serialization.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -65,6 +87,23 @@
       <Name>Gendarme.Framework</Name>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.Serialization/ImplementISerializableCorrectlyRule.cs b/gendarme/rules/Gendarme.Rules.Serialization/ImplementISerializableCorrectlyRule.cs
index 553853b..2059795 100644
--- a/gendarme/rules/Gendarme.Rules.Serialization/ImplementISerializableCorrectlyRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Serialization/ImplementISerializableCorrectlyRule.cs
@@ -122,12 +122,12 @@ namespace Gendarme.Rules.Serialization {
 
 		static private FieldDefinition CheckProperty (MethodDefinition getter)
 		{
-			string return_type = getter.ReturnType.FullName;
+			TypeReference return_type = getter.ReturnType;
 			foreach (Instruction ins in getter.Body.Instructions) {
 				if (ins.OpCode.OperandType != OperandType.InlineField)
 					continue;
 				FieldDefinition field = (ins.Operand as FieldDefinition);
-				if ((field != null) && (field.FieldType.FullName == return_type))
+				if ((field != null) && field.FieldType.IsNamed (return_type.Namespace, return_type.Name))
 					return field;
 			}
 			return null;
@@ -143,7 +143,7 @@ namespace Gendarme.Rules.Serialization {
 					if (!mr.HasParameters || (mr.Name != "AddValue") || (mr.Parameters.Count < 2))
 						continue;
 					// type is sealed so this check is ok
-					if (mr.DeclaringType.FullName != "System.Runtime.Serialization.SerializationInfo")
+					if (!mr.DeclaringType.IsNamed ("System.Runtime.Serialization", "SerializationInfo"))
 						continue;
 
 					// look at the second parameter, which should be (or return) the field
@@ -189,7 +189,7 @@ namespace Gendarme.Rules.Serialization {
 
 		public RuleResult CheckType (TypeDefinition type)
 		{
-			if (!type.IsSerializable || !type.Implements ("System.Runtime.Serialization.ISerializable"))
+			if (!type.IsSerializable || !type.Implements ("System.Runtime.Serialization", "ISerializable"))
 				return RuleResult.DoesNotApply;
 
 			MethodDefinition getObjectData = type.GetMethod (MethodSignatures.GetObjectData);
diff --git a/gendarme/rules/Gendarme.Rules.Serialization/Makefile.in b/gendarme/rules/Gendarme.Rules.Serialization/Makefile.in
index e762277..4ef4a5c 100644
--- a/gendarme/rules/Gendarme.Rules.Serialization/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Serialization/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(rules_categorydir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
-rules_categorySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(rules_category_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,20 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(rules_documentation_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -130,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -277,14 +353,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Serialization/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Serialization/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Serialization/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Serialization/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -294,6 +370,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../common.make $(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -302,42 +379,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-rules_categorySCRIPTS: $(rules_category_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_categorydir)" || $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)"
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_categorydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(rules_categorySCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	    $(rules_categorySCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rules_categorydir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rules_categorydir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-rules_categorySCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	done
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(rules_categorydir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -346,7 +444,7 @@ uninstall-rules_documentationDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -363,7 +461,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -371,7 +469,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -397,16 +495,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -414,14 +512,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -433,7 +531,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -442,29 +540,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -485,29 +588,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -530,10 +645,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -541,6 +661,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -560,6 +681,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -569,18 +692,28 @@ install-data-am: install-rules_categorySCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -602,8 +735,8 @@ ps-am:
 uninstall-am: uninstall-rules_categorySCRIPTS \
 	uninstall-rules_documentationDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -623,11 +756,11 @@ uninstall-am: uninstall-rules_categorySCRIPTS \
 
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -636,7 +769,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
@@ -656,6 +789,7 @@ $(rules_doc_source):
 
 clean-local:
 	rm -fr doc
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Serialization/MarkAllNonSerializableFieldsRule.cs b/gendarme/rules/Gendarme.Rules.Serialization/MarkAllNonSerializableFieldsRule.cs
index 75d3a89..bfa7bf1 100644
--- a/gendarme/rules/Gendarme.Rules.Serialization/MarkAllNonSerializableFieldsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Serialization/MarkAllNonSerializableFieldsRule.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Globalization;
 using Gendarme.Framework;
 using Gendarme.Framework.Rocks;
 using Mono.Cecil;
@@ -75,7 +76,7 @@ namespace Gendarme.Rules.Serialization {
 		public RuleResult CheckType (TypeDefinition type)
 		{
 			// if type is not serializable or has not any fields or does not implements a custom serialization
-			if (!type.IsSerializable || !type.HasFields || type.Implements ("System.Runtime.Serialization.ISerializable"))
+			if (!type.IsSerializable || !type.HasFields || type.Implements ("System.Runtime.Serialization", "ISerializable"))
 				return RuleResult.DoesNotApply;
 
 			foreach (FieldDefinition field in type.Fields) {
@@ -85,11 +86,17 @@ namespace Gendarme.Rules.Serialization {
 						continue;
 
 					if (fieldType.IsInterface) {
-						Runner.Report (field, Severity.Critical, Confidence.Low, String.Format ("Serialization of interface {0} as field {1} unknown until runtime", fieldType, field.Name));
+						string msg = String.Format (CultureInfo.InvariantCulture,
+							"Serialization of interface {0} as field {1} unknown until runtime", 
+							fieldType, field.Name);
+						Runner.Report (field, Severity.Critical, Confidence.Low, msg);
 						continue;
 					}
-					if (!fieldType.IsEnum && !fieldType.IsSerializable)
-						Runner.Report (field, Severity.Critical, Confidence.High, String.Format ("The field {0} isn't serializable.", field.Name));
+					if (!fieldType.IsEnum && !fieldType.IsSerializable) {
+						string msg = String.Format (CultureInfo.InvariantCulture,
+							"The field {0} isn't serializable.", field.Name);
+						Runner.Report (field, Severity.Critical, Confidence.High, msg);
+					}
 				}
 			}
 
diff --git a/gendarme/rules/Gendarme.Rules.Serialization/MissingSerializableAttributeOnISerializableTypeRule.cs b/gendarme/rules/Gendarme.Rules.Serialization/MissingSerializableAttributeOnISerializableTypeRule.cs
index 24f0b00..74be9db 100644
--- a/gendarme/rules/Gendarme.Rules.Serialization/MissingSerializableAttributeOnISerializableTypeRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Serialization/MissingSerializableAttributeOnISerializableTypeRule.cs
@@ -64,8 +64,6 @@ namespace Gendarme.Rules.Serialization {
 	[FxCopCompatibility ("Microsoft.Usage", "CA2237:MarkISerializableTypesWithSerializable")]
 	public class MissingSerializableAttributeOnISerializableTypeRule : Rule, ITypeRule {
 
-		private const string ISerializable = "System.Runtime.Serialization.ISerializable";
-
 		public RuleResult CheckType (TypeDefinition type)
 		{
 			// rule does not apply to interface (since [Serializable] is not applicable to interfaces)
@@ -74,11 +72,11 @@ namespace Gendarme.Rules.Serialization {
 				return RuleResult.DoesNotApply;
 
 			// rule does not apply if the type does not implements ISerializable 
-			if (!type.Implements (ISerializable))
+			if (!type.Implements ("System.Runtime.Serialization", "ISerializable"))
 				return RuleResult.DoesNotApply;
 
 			// rule applies only if base type is serializable
-			if (type.BaseType.FullName != "System.Object") {
+			if (!type.BaseType.IsNamed ("System", "Object")) {
 				TypeDefinition base_type = type.BaseType.Resolve ();
 				// in doubt don't report
 				if ((base_type == null) || !base_type.IsSerializable)
diff --git a/gendarme/rules/Gendarme.Rules.Serialization/MissingSerializationConstructorRule.cs b/gendarme/rules/Gendarme.Rules.Serialization/MissingSerializationConstructorRule.cs
index 36115b0..e80ffe7 100644
--- a/gendarme/rules/Gendarme.Rules.Serialization/MissingSerializationConstructorRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Serialization/MissingSerializationConstructorRule.cs
@@ -89,9 +89,6 @@ namespace Gendarme.Rules.Serialization {
 	[FxCopCompatibility ("Microsoft.Usage", "CA2229:ImplementSerializationConstructors")]
 	public class MissingSerializationConstructorRule : Rule, ITypeRule {
 
-		// non-localizable
-		private const string ISerializable = "System.Runtime.Serialization.ISerializable";
-
 		// localizable
 		private const string NoSerializationCtorText = "The required constructor for ISerializable is not present in this type.";
 		private const string CtorSealedTypeText = "The serialization constructor should be private since this type is sealed.";
@@ -100,7 +97,7 @@ namespace Gendarme.Rules.Serialization {
 		public RuleResult CheckType (TypeDefinition type)
 		{
 			// rule does not apply to interfaces, delegates or types that does not implement ISerializable
-			if (type.IsInterface || type.IsDelegate () || !type.Implements (ISerializable))
+			if (type.IsInterface || type.IsDelegate () || !type.Implements ("System.Runtime.Serialization", "ISerializable"))
 				return RuleResult.DoesNotApply;
 
 			// rule applies, only Success or Failure from the point on
diff --git a/gendarme/rules/Gendarme.Rules.Serialization/Test/Makefile.in b/gendarme/rules/Gendarme.Rules.Serialization/Test/Makefile.in
index 48484f0..9533aec 100644
--- a/gendarme/rules/Gendarme.Rules.Serialization/Test/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Serialization/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Serialization/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Serialization/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Serialization/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Serialization/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -298,6 +338,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -306,18 +348,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -352,6 +404,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Serialization/Test/Tests.Rules.Serialization.csproj b/gendarme/rules/Gendarme.Rules.Serialization/Test/Tests.Rules.Serialization.csproj
index 5a92892..090910b 100755
--- a/gendarme/rules/Gendarme.Rules.Serialization/Test/Tests.Rules.Serialization.csproj
+++ b/gendarme/rules/Gendarme.Rules.Serialization/Test/Tests.Rules.Serialization.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Tests.Rules.Serialization</RootNamespace>
     <AssemblyName>Tests.Rules.Serialization</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -21,6 +41,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -29,6 +50,7 @@
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
@@ -70,6 +92,23 @@
   <ItemGroup>
     <Folder Include="Properties\" />
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.Serialization/UseCorrectSignatureForSerializationMethodsRule.cs b/gendarme/rules/Gendarme.Rules.Serialization/UseCorrectSignatureForSerializationMethodsRule.cs
index bf69c3a..eed6f2c 100644
--- a/gendarme/rules/Gendarme.Rules.Serialization/UseCorrectSignatureForSerializationMethodsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Serialization/UseCorrectSignatureForSerializationMethodsRule.cs
@@ -76,13 +76,6 @@ namespace Gendarme.Rules.Serialization {
 		private const string NotSerializableText = "The type of this method is not marked as [Serializable].";
 		private const string WrongSignatureText = "The method has the wrong signature, it should return System.Void and have a single parameter of type 'System.Runtime.Serialization.StreamingContext' and be private.";
 
-		static string [] Attributes = {
-			"System.Runtime.Serialization.OnSerializingAttribute",
-			"System.Runtime.Serialization.OnSerializedAttribute",
-			"System.Runtime.Serialization.OnDeserializingAttribute",
-			"System.Runtime.Serialization.OnDeserializedAttribute"
-		};
-
 		public override void Initialize (IRunner runner)
 		{
 			base.Initialize (runner);
@@ -97,10 +90,40 @@ namespace Gendarme.Rules.Serialization {
 					// if the module does not have a reference to any of the attributes
 					// then nothing will be reported by this rule
 					(e.CurrentAssembly.Name.Name == "mscorlib" ||
-					e.CurrentModule.HasAnyTypeReference (Attributes));
+					e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+						return IsSerializationAttribute (tr);
+					}));
 			};
 		}
 
+		static bool IsSerializationAttribute (TypeReference type)
+		{
+			if (type.Namespace != "System.Runtime.Serialization")
+				return false;
+
+			switch (type.Name) {
+			case "OnSerializingAttribute":
+			case "OnSerializedAttribute":
+			case "OnDeserializingAttribute":
+			case "OnDeserializedAttribute":
+				return true;
+			default:
+				return false;
+			}
+		}
+
+		static bool HasAnySerializationAttribute (ICustomAttributeProvider method)
+		{
+			if (!method.HasCustomAttributes)
+				return false;
+
+			foreach (CustomAttribute ca in method.CustomAttributes) {
+				if (IsSerializationAttribute (ca.AttributeType))
+					return true;
+			}
+			return false;
+		}
+
 		public RuleResult CheckMethod (MethodDefinition method)
 		{
 			// rule does not apply to constructor or to methods without custom attributes
@@ -108,7 +131,7 @@ namespace Gendarme.Rules.Serialization {
 				return RuleResult.DoesNotApply;
 
 			// marked with any of On[Des|S]erializ[ed|ing]Attribute ?
-			if (!method.CustomAttributes.ContainsAnyType (Attributes))
+			if (!HasAnySerializationAttribute (method))
 				return RuleResult.DoesNotApply;
 
 			// rule apply!
diff --git a/gendarme/rules/Gendarme.Rules.Smells/AvoidLargeClassesRule.cs b/gendarme/rules/Gendarme.Rules.Smells/AvoidLargeClassesRule.cs
index 25519b4..947bd6a 100644
--- a/gendarme/rules/Gendarme.Rules.Smells/AvoidLargeClassesRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Smells/AvoidLargeClassesRule.cs
@@ -28,6 +28,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 
 using Mono.Cecil;
 
@@ -108,7 +109,7 @@ namespace Gendarme.Rules.Smells {
 			int counter = 1; // include self
 			for (int i = fields.Count - 1; i > start; i--) {
 				FieldDefinition field = fields [i];
-				if (field.Name.StartsWith (prefix)) {
+				if (field.Name.StartsWith (prefix, StringComparison.Ordinal)) {
 					fields.RemoveAt (i);
 					counter++;
 				}
@@ -167,7 +168,8 @@ namespace Gendarme.Rules.Smells {
 					continue;
 				int count = CountPrefixedFields (prefix, i);
 				if (count > 1) {
-					string msg = String.Format ("This type contains fields common prefixes: {0} fields prefixed with '{1}'.",
+					string msg = String.Format (CultureInfo.InvariantCulture,
+						"This type contains fields common prefixes: {0} fields prefixed with '{1}'.",
 						count, prefix);
 					Runner.Report (type, Severity.Medium, Confidence.High, msg);
 				}
@@ -182,7 +184,8 @@ namespace Gendarme.Rules.Smells {
 
 			int fcount = GetNonConstantFieldsCount (type);
 			if (fcount > MaxFields) {
-				string msg = String.Format ("This type contains a lot of fields ({0} versus maximum of {1}).",
+				string msg = String.Format (CultureInfo.InvariantCulture,
+					"This type contains a lot of fields ({0} versus maximum of {1}).",
 					fcount, MaxFields);
 				Runner.Report (type, Severity.High, Confidence.High, msg);
 			}
diff --git a/gendarme/rules/Gendarme.Rules.Smells/AvoidLongMethodsRule.cs b/gendarme/rules/Gendarme.Rules.Smells/AvoidLongMethodsRule.cs
index 67cb274..1ef115b 100644
--- a/gendarme/rules/Gendarme.Rules.Smells/AvoidLongMethodsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Smells/AvoidLongMethodsRule.cs
@@ -28,6 +28,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -181,19 +182,6 @@ namespace Gendarme.Rules.Smells {
 
 		const int AssignationRatio = 7;
 		const int DefaultAmountOfElements = 13;
-		static Dictionary<string, string> typeMethodDictionary;
-
-		static AvoidLongMethodsRule ()
-		{
-			typeMethodDictionary = new Dictionary<string,string> (4);
-			typeMethodDictionary.Add ("Gtk.Bin", "Build");
-			typeMethodDictionary.Add ("Gtk.Window", "Build");
-			typeMethodDictionary.Add ("Gtk.Dialog", "Build");
-			typeMethodDictionary.Add ("System.Windows.Forms.Form", "InitializeComponent");
-			typeMethodDictionary.Add ("System.Workflow.Activities.SequentialWorkflowActivity", "InitializeComponent");
-			typeMethodDictionary.Add ("System.Workflow.Activities.StateMachineWorkflowActivity", "InitializeComponent");
-			typeMethodDictionary.Add ("System.Windows.Controls.UserControl", "InitializeComponent");
-		}
 
 		public AvoidLongMethodsRule ()
 		{
@@ -215,12 +203,31 @@ namespace Gendarme.Rules.Smells {
 			if (method.HasParameters)
 				return false;
 
+			string name = method.Name;
+			if ((name != "Build") && (name != "InitializeComponent"))
+				return false;
+
 			TypeDefinition type = method.DeclaringType.Resolve ();
-			if ((type != null) && (type.BaseType != null)) {
-				string method_name;
-				if (typeMethodDictionary.TryGetValue (type.BaseType.FullName, out method_name)) {
-					return (method_name == method.Name);
+			if ((type == null) || (type.BaseType == null))
+				return false;
+
+			string nspace = type.BaseType.Namespace;
+			string tname = type.BaseType.Name;
+			switch (name) {
+			case "Build":
+				if (nspace != "Gtk")
+					return false;
+				return (tname == "Bin" || tname == "Window" || tname == "Dialog");
+			case "InitializeComponent":
+				switch (nspace) {
+				case "System.Windows.Forms":
+					return tname == "Form";
+				case "System.Workflow.Activities":
+					return tname == "SequentialWorkflowActivity" || tname == "StateMachineWorkflowActivity";
+				case "System.Windows.Controls":
+					return tname == "UserControl";
 				}
+				break;
 			}
 			return false;
 		}
@@ -326,7 +333,8 @@ namespace Gendarme.Rules.Smells {
 				if (sloc <= max)
 					return RuleResult.Success;
 
-				string message = String.Format ("Logical SLOC: {0}. Maximum : {1}", sloc, max);
+				string message = String.Format (CultureInfo.CurrentCulture, 
+					"Logical SLOC: {0}. Maximum : {1}", sloc, max);
 				Runner.Report (method, Severity.High, Confidence.High, message);
 			} else {
 				// success if the instruction count is below the defined threshold
@@ -336,7 +344,8 @@ namespace Gendarme.Rules.Smells {
 				if (count <= max)
 					return RuleResult.Success;
 
-				string message = String.Format ("Method IL Size: {0}. Maximum Size: {1}", count, max);
+				string message = String.Format (CultureInfo.CurrentCulture,
+					"Method IL Size: {0}. Maximum Size: {1}", count, max);
 				Runner.Report (method, Severity.High, Confidence.Normal, message);
 			}
 
diff --git a/gendarme/rules/Gendarme.Rules.Smells/AvoidLongParameterListsRule.cs b/gendarme/rules/Gendarme.Rules.Smells/AvoidLongParameterListsRule.cs
index bd5ff4f..a76ec28 100644
--- a/gendarme/rules/Gendarme.Rules.Smells/AvoidLongParameterListsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Smells/AvoidLongParameterListsRule.cs
@@ -131,13 +131,13 @@ namespace Gendarme.Rules.Smells {
 			if (constructor == null) 
 				return;
 			if (HasMoreParametersThanAllowed (constructor)) 
-				Runner.Report (constructor, Severity.Medium, Confidence.Normal, "This constructor contains a long parameter list.");
+				Runner.Report (constructor, Severity.Medium, Confidence.High, "This constructor contains a long parameter list.");
 		}
 
 		private void CheckMethod (IMethodSignature method)
 		{
 			if (HasMoreParametersThanAllowed (method))
-				Runner.Report (method, Severity.Medium, Confidence.Normal, "This method contains a long parameter list.");
+				Runner.Report (method, Severity.Medium, Confidence.High, "This method contains a long parameter list.");
 		}
 
 		//TODO: Perhaps we can perform this action with linq instead of
@@ -182,7 +182,7 @@ namespace Gendarme.Rules.Smells {
 			MethodDefinition method = type.GetMethod ("Invoke");
 			// MulticastDelegate inherits from Delegate without overriding Invoke
 			if ((method != null) && HasMoreParametersThanAllowed (method))
-				Runner.Report (type, Severity.Medium, Confidence.Normal, "This delegate contains a long parameter list.");
+				Runner.Report (type, Severity.Medium, Confidence.High, "This delegate contains a long parameter list.");
 			return Runner.CurrentRuleResult;
 		}
 		
diff --git a/gendarme/rules/Gendarme.Rules.Smells/AvoidMessageChainsRule.cs b/gendarme/rules/Gendarme.Rules.Smells/AvoidMessageChainsRule.cs
index 8d79e77..f786cb7 100644
--- a/gendarme/rules/Gendarme.Rules.Smells/AvoidMessageChainsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Smells/AvoidMessageChainsRule.cs
@@ -31,6 +31,7 @@
 using System;
 using System.Collections.Generic;
 using System.Diagnostics;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -116,7 +117,7 @@ namespace Gendarme.Rules.Smells {
 
 				// operators "break" chains
 				MethodReference mr = (ins.Operand as MethodReference);
-				if (mr.Name.StartsWith ("op_"))
+				if (mr.Name.StartsWith ("op_", StringComparison.Ordinal))
 					continue;
 
 				int counter = 1;
@@ -131,7 +132,8 @@ namespace Gendarme.Rules.Smells {
 				Log.WriteLine (this, "chain of length {0} at {1:X4}", counter, ins.Offset);
 
 				if (counter > MaxChainLength) {
-					string msg = String.Format ("Chain length {0} versus maximum of {1}.", counter, MaxChainLength);
+					string msg = String.Format (CultureInfo.CurrentCulture, 
+						"Chain length {0} versus maximum of {1}.", counter, MaxChainLength);
 					Runner.Report (method, ins, Severity.Medium, Confidence.Normal, msg);
 				}
 			}
diff --git a/gendarme/rules/Gendarme.Rules.Smells/AvoidSpeculativeGeneralityRule.cs b/gendarme/rules/Gendarme.Rules.Smells/AvoidSpeculativeGeneralityRule.cs
index 7228572..1393c22 100644
--- a/gendarme/rules/Gendarme.Rules.Smells/AvoidSpeculativeGeneralityRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Smells/AvoidSpeculativeGeneralityRule.cs
@@ -117,15 +117,14 @@ namespace Gendarme.Rules.Smells {
 	[EngineDependency (typeof (OpCodeEngine))]
 	public class AvoidSpeculativeGeneralityRule : Rule, ITypeRule {
 
-		private bool HasExpectedInheritedTypeCount (MemberReference baseType, int expected)
+		private bool HasExpectedInheritedTypeCount (TypeReference baseType, int expected)
 		{
 			int count = 0;
-			string base_name = baseType.FullName;
 			foreach (AssemblyDefinition assembly in Runner.Assemblies) {
 				foreach (ModuleDefinition module in assembly.Modules) {
 					foreach (TypeDefinition type in module.GetAllTypes ()) {
 						if ((baseType == type.BaseType) || (type.BaseType != null &&
-							(base_name == type.BaseType.FullName))) {
+							type.BaseType.IsNamed (baseType.Namespace, baseType.Name))) {
 							if (++count > expected)
 								return false;
 						}
@@ -168,7 +167,7 @@ namespace Gendarme.Rules.Smells {
 
 		private static bool InheritsOnlyFromObject (TypeDefinition type)
 		{
-			return !type.HasInterfaces && type.BaseType.FullName == "System.Object";
+			return !type.HasInterfaces && type.BaseType.IsNamed ("System", "Object");
 		}
 
 		private static bool MostlyMethodsDelegatesCall (TypeDefinition type)
diff --git a/gendarme/rules/Gendarme.Rules.Smells/CodeDuplicatedLocator.cs b/gendarme/rules/Gendarme.Rules.Smells/CodeDuplicatedLocator.cs
index 621c22c..1e9790e 100644
--- a/gendarme/rules/Gendarme.Rules.Smells/CodeDuplicatedLocator.cs
+++ b/gendarme/rules/Gendarme.Rules.Smells/CodeDuplicatedLocator.cs
@@ -30,6 +30,7 @@ using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.Diagnostics;
+using System.Globalization;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
@@ -81,8 +82,10 @@ namespace Gendarme.Rules.Smells {
 					continue;
 
 				Pattern duplicated = GetDuplicatedCode (current, target);
-				if (duplicated != null && duplicated.Count > 0)
-					parent_rule.Runner.Report (current, duplicated[0], Severity.High, Confidence.Normal, String.Format ("Duplicated code with {0}", target));
+				if (duplicated != null && duplicated.Count > 0) {
+					parent_rule.Runner.Report (current, duplicated[0], Severity.High, Confidence.Normal, 
+						String.Format (CultureInfo.InvariantCulture, "Duplicated code with {0}", target.GetFullName ()));
+				}
 			}
 		}
 
diff --git a/gendarme/rules/Gendarme.Rules.Smells/Gendarme.Rules.Smells.csproj b/gendarme/rules/Gendarme.Rules.Smells/Gendarme.Rules.Smells.csproj
index e3d68f2..bdad8ae 100755
--- a/gendarme/rules/Gendarme.Rules.Smells/Gendarme.Rules.Smells.csproj
+++ b/gendarme/rules/Gendarme.Rules.Smells/Gendarme.Rules.Smells.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Gendarme.Rules.Smells</RootNamespace>
     <AssemblyName>Gendarme.Rules.Smells</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -24,6 +44,7 @@
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
     <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Smells.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -35,6 +56,7 @@
     <NoWarn>1591</NoWarn>
     <WarningsAsErrors>1570</WarningsAsErrors>
     <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Smells.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -72,6 +94,23 @@
       <Name>Gendarme.Rules.Performance</Name>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.Smells/InstructionMatcher.cs b/gendarme/rules/Gendarme.Rules.Smells/InstructionMatcher.cs
index 21fee89..34891d6 100644
--- a/gendarme/rules/Gendarme.Rules.Smells/InstructionMatcher.cs
+++ b/gendarme/rules/Gendarme.Rules.Smells/InstructionMatcher.cs
@@ -51,8 +51,8 @@ namespace Gendarme.Rules.Smells {
 			if ((source == null) || (target == null))
 				return false;
 
-			int ss = source.GetSequence () - 1;
-			int ts = target.GetSequence () - 1;
+			int ss = source.Index;
+			int ts = target.Index;
 			if ((ss <= 0) || (ts <= 0))
 				return false;
 
diff --git a/gendarme/rules/Gendarme.Rules.Smells/Makefile.in b/gendarme/rules/Gendarme.Rules.Smells/Makefile.in
index cc8f4af..39e83cb 100644
--- a/gendarme/rules/Gendarme.Rules.Smells/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Smells/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(rules_categorydir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
-rules_categorySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(rules_category_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,20 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(rules_documentation_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -130,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -281,14 +357,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Smells/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Smells/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Smells/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Smells/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -298,6 +374,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../common.make $(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -306,42 +383,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-rules_categorySCRIPTS: $(rules_category_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_categorydir)" || $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)"
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_categorydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(rules_categorySCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	    $(rules_categorySCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rules_categorydir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rules_categorydir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-rules_categorySCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	done
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(rules_categorydir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -350,7 +448,7 @@ uninstall-rules_documentationDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -367,7 +465,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -375,7 +473,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -401,16 +499,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -418,14 +516,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -437,7 +535,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -446,29 +544,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -489,29 +592,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -534,10 +649,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -545,6 +665,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -564,6 +685,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -573,18 +696,28 @@ install-data-am: install-rules_categorySCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -606,8 +739,8 @@ ps-am:
 uninstall-am: uninstall-rules_categorySCRIPTS \
 	uninstall-rules_documentationDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -627,11 +760,11 @@ uninstall-am: uninstall-rules_categorySCRIPTS \
 
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -640,7 +773,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
@@ -660,6 +793,7 @@ $(rules_doc_source):
 
 clean-local:
 	rm -fr doc
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Smells/Pattern.cs b/gendarme/rules/Gendarme.Rules.Smells/Pattern.cs
index c0c37e4..17b5afb 100644
--- a/gendarme/rules/Gendarme.Rules.Smells/Pattern.cs
+++ b/gendarme/rules/Gendarme.Rules.Smells/Pattern.cs
@@ -52,16 +52,7 @@ namespace Gendarme.Rules.Smells {
 		{
 			if (ins.OpCode.Code != Code.Isinst)
 				return false;
-			return ((ins.Operand as TypeReference).FullName == "System.IDisposable");
-		}
-
-		// look for a virtual call to a specific method
-		static bool IsCallVirt (Instruction ins, string typeName, string methodName)
-		{
-			if (ins.OpCode.Code != Code.Callvirt)
-				return false;
-			MethodReference mr = (ins.Operand as MethodReference);
-			return ((mr != null) && (mr.Name == methodName) && (mr.DeclaringType.FullName == typeName));
+			return (ins.Operand as TypeReference).IsNamed ("System", "IDisposable");
 		}
 
 		// look for:
@@ -69,7 +60,9 @@ namespace Gendarme.Rules.Smells {
 		//	endfinally 
 		static bool IsIDisposableDisposePattern (Instruction ins)
 		{
-			if (!IsCallVirt (ins, "System.IDisposable", "Dispose"))
+			if (ins.OpCode.Code != Code.Callvirt)
+				return false;
+			if (!(ins.Operand as MethodReference).IsNamed ("System", "IDisposable", "Dispose"))
 				return false;
 			return ins.Next.Is (Code.Endfinally);
 		}
@@ -89,10 +82,13 @@ namespace Gendarme.Rules.Smells {
 			for (int i = 0; i < Count; i++) {
 				Instruction ins = instructions [i];
 				// foreach
-				if (IsCallVirt (ins, "System.Collections.IEnumerator", "get_Current"))
-					return true;
-				if (IsCallVirt (ins, "System.Collections.IEnumerator", "MoveNext"))
-					return !call;
+				if (ins.OpCode.Code == Code.Callvirt) {
+					MethodReference mr = (ins.Operand as MethodReference);
+					if (mr.IsNamed ("System.Collections", "IEnumerator", "get_Current"))
+						return true;
+					if (mr.IsNamed ("System.Collections", "IEnumerator", "MoveNext"))
+						return !call;
+				}
 				// if there's a unknown call then it's likely not (totally) compiler generated
 				call |= (ins.OpCode.FlowControl == FlowControl.Call);
 				// foreach
diff --git a/gendarme/rules/Gendarme.Rules.Smells/Test/AvoidCodeDuplicatedInSameClassTest.cs b/gendarme/rules/Gendarme.Rules.Smells/Test/AvoidCodeDuplicatedInSameClassTest.cs
index f88d4ed..11dcfa6 100644
--- a/gendarme/rules/Gendarme.Rules.Smells/Test/AvoidCodeDuplicatedInSameClassTest.cs
+++ b/gendarme/rules/Gendarme.Rules.Smells/Test/AvoidCodeDuplicatedInSameClassTest.cs
@@ -686,20 +686,20 @@ namespace Test.Rules.Smells {
 		class NonDuplicatedComparingAndReturningNull {
 			string CheckTwoOptions (TypeReference type) 
 			{
-				if (type.Implements ("System.Collections.IDictionary") || type.Implements ("System.Collections.Generic.IDictionary`2"))
+				if (type.Implements ("System.Collections", "IDictionary") || type.Implements ("System.Collections.Generic", "IDictionary`2"))
 					return null;
 				return "'Dictionary' should only be used for types implementing IDictionary and IDictionary<TKey,TValue>.";
 			}
 
 			string CheckThreeOptions (TypeReference type)
 			{
-				if (type.Implements ("System.Collections.ICollection") ||
-					type.Implements ("System.Collections.IEnumerable") ||
-					type.Implements ("System.Collections.Generic.ICollection`1"))
+				if (type.Implements ("System.Collections", "ICollection") ||
+					type.Implements ("System.Collections", "IEnumerable") ||
+					type.Implements ("System.Collections.Generic", "ICollection`1"))
 					return null;
 
-				if (type.Inherits ("System.Collections.Queue") || type.Inherits ("System.Collections.Stack") || 
-					type.Inherits ("System.Data.DataSet") || type.Inherits ("System.Data.DataTable"))
+				if (type.Inherits ("System.Collections", "Queue") || type.Inherits ("System.Collections", "Stack") || 
+					type.Inherits ("System.Data", "DataSet") || type.Inherits ("System.Data", "DataTable"))
 					return null;
 
 				return "'Collection' should only be used for implementing ICollection or IEnumerable or inheriting from Queue, Stack, DataSet and DataTable.";
diff --git a/gendarme/rules/Gendarme.Rules.Smells/Test/Makefile.in b/gendarme/rules/Gendarme.Rules.Smells/Test/Makefile.in
index 4914884..b0a0637 100644
--- a/gendarme/rules/Gendarme.Rules.Smells/Test/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Smells/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Smells/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Smells/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Smells/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Smells/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -298,6 +338,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -306,18 +348,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -352,6 +404,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Smells/Test/Tests.Rules.Smells.csproj b/gendarme/rules/Gendarme.Rules.Smells/Test/Tests.Rules.Smells.csproj
index a67869a..eb69c1d 100755
--- a/gendarme/rules/Gendarme.Rules.Smells/Test/Tests.Rules.Smells.csproj
+++ b/gendarme/rules/Gendarme.Rules.Smells/Test/Tests.Rules.Smells.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Tests.Rules.Smells</RootNamespace>
     <AssemblyName>Tests.Rules.Smells</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -21,6 +41,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -29,6 +50,7 @@
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
@@ -75,6 +97,23 @@
   <ItemGroup>
     <Folder Include="Properties\" />
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/Gendarme.Rules.Ui/AddMatchingArrangeMeasureOverrideRule.cs b/gendarme/rules/Gendarme.Rules.Ui/AddMatchingArrangeMeasureOverrideRule.cs
index aaf21fe..b288e10 100644
--- a/gendarme/rules/Gendarme.Rules.Ui/AddMatchingArrangeMeasureOverrideRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Ui/AddMatchingArrangeMeasureOverrideRule.cs
@@ -81,15 +81,18 @@ namespace Gendarme.Rules.UI {
 			// if the module does not reference System.Windows.Size, 
 			// then it will not be using the overrides
 			Runner.AnalyzeModule += delegate (object o, RunnerEventArgs e) {
-				Active = ((e.CurrentAssembly.Name.Name == "WindowsBase" ||
-					 e.CurrentAssembly.Name.Name == "System.Windows") ||
-					 e.CurrentModule.HasTypeReference (Size));
+				string assembly_name = e.CurrentAssembly.Name.Name;
+				Active = ((assembly_name == "WindowsBase" || assembly_name == "System.Windows") ||
+					e.CurrentModule.AnyTypeReference ((TypeReference tr) => {
+						return tr.IsNamed ("System.Windows", "Size");
+					})
+				);
 			};
 		}
 
 		public RuleResult CheckType (TypeDefinition type)
 		{
-			if (!type.IsClass || !type.HasMethods || !type.Inherits ("System.Windows.FrameworkElement"))
+			if (!type.IsClass || !type.HasMethods || !type.Inherits ("System.Windows", "FrameworkElement"))
 				return RuleResult.DoesNotApply;
 			var arrangeOverride = type.GetMethod (arrangeSignature);
 			var measureOverride = type.GetMethod (measureSignature);
diff --git a/gendarme/rules/Gendarme.Rules.Ui/Gendarme.Rules.Ui.csproj b/gendarme/rules/Gendarme.Rules.Ui/Gendarme.Rules.Ui.csproj
index 379050c..dd0ff7a 100644
--- a/gendarme/rules/Gendarme.Rules.Ui/Gendarme.Rules.Ui.csproj
+++ b/gendarme/rules/Gendarme.Rules.Ui/Gendarme.Rules.Ui.csproj
@@ -1,119 +1,141 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{949C4D51-4581-402A-AC18-B1B41F395FDA}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Gendarme.Rules.Ui</RootNamespace>
-    <AssemblyName>Gendarme.Rules.Ui</AssemblyName>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <OldToolsVersion>2.0</OldToolsVersion>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <PublishUrl>http://localhost/Gendarme.Rules.Ui/</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Web</InstallFrom>
-    <UpdateEnabled>true</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>true</IsWebBootstrapper>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>..\..\console\bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <NoWarn>1590</NoWarn>
-    <WarningsAsErrors>1571</WarningsAsErrors>
-    <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Ui.xml</DocumentationFile>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>..\..\console\bin\Release\</OutputPath>
-    <DefineConstants>TRACE;RELEASE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Ui.xml</DocumentationFile>
-    <NoWarn>1591</NoWarn>
-    <WarningsAsErrors>1570</WarningsAsErrors>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\..\AssemblyStaticInfo.cs">
-      <Link>AssemblyStaticInfo.cs</Link>
-    </Compile>
-    <Compile Include="AddMatchingArrangeMeasureOverrideRule.cs" />
-    <Compile Include="ExecutableTargetRule.cs" />
-    <Compile Include="GtkSharpExecutableTargetRule.cs" />
-    <Compile Include="SystemWindowsFormsExecutableTargetRule.cs" />
-    <Compile Include="UseSTAThreadAttributeOnSWFEntryPointsRule.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\..\..\cecil\Mono.Cecil.csproj">
-      <Project>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</Project>
-      <Name>Mono.Cecil</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\framework\Gendarme.Framework.csproj">
-      <Project>{CD6818D5-B398-486C-B180-92A07B143AFD}</Project>
-      <Name>Gendarme.Framework</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
-      <Visible>False</Visible>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
-      <Visible>False</Visible>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
-      <Visible>False</Visible>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{949C4D51-4581-402A-AC18-B1B41F395FDA}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Gendarme.Rules.Ui</RootNamespace>
+    <AssemblyName>Gendarme.Rules.Ui</AssemblyName>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <IsWebBootstrapper>true</IsWebBootstrapper>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <PublishUrl>http://localhost/Gendarme.Rules.Ui/</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Web</InstallFrom>
+    <UpdateEnabled>true</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\console\bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>1590</NoWarn>
+    <WarningsAsErrors>1571</WarningsAsErrors>
+    <DocumentationFile>..\..\console\bin\Debug\Gendarme.Rules.Ui.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\..\console\bin\Release\</OutputPath>
+    <DefineConstants>TRACE;RELEASE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>..\..\console\bin\Release\Gendarme.Rules.Ui.xml</DocumentationFile>
+    <NoWarn>1591</NoWarn>
+    <WarningsAsErrors>1570</WarningsAsErrors>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\AssemblyStaticInfo.cs">
+      <Link>AssemblyStaticInfo.cs</Link>
+    </Compile>
+    <Compile Include="AddMatchingArrangeMeasureOverrideRule.cs" />
+    <Compile Include="ExecutableTargetRule.cs" />
+    <Compile Include="GtkSharpExecutableTargetRule.cs" />
+    <Compile Include="SystemWindowsFormsExecutableTargetRule.cs" />
+    <Compile Include="UseSTAThreadAttributeOnSWFEntryPointsRule.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\..\cecil\Mono.Cecil.csproj">
+      <Project>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</Project>
+      <Name>Mono.Cecil</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\framework\Gendarme.Framework.csproj">
+      <Project>{CD6818D5-B398-486C-B180-92A07B143AFD}</Project>
+      <Name>Gendarme.Framework</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
+      <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
+      <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
+      <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
   </Target>
   <Target Name="AfterBuild">
   </Target>
-  -->
-  <ProjectExtensions>
-    <MonoDevelop>
-      <Properties>
-        <MonoDevelop.Autotools.MakefileInfo IntegrationEnabled="true" RelativeMakefileName="Makefile.am" IsAutotoolsProject="true" RelativeConfigureInPath="../../..">
-          <BuildFilesVar Sync="true" Name="rules_sources" />
-          <DeployFilesVar />
-          <ResourcesVar />
-          <OthersVar />
-          <GacRefVar />
-          <AsmRefVar />
-          <ProjectRefVar />
-        </MonoDevelop.Autotools.MakefileInfo>
-      </Properties>
-    </MonoDevelop>
-    <VisualStudio />
-  </ProjectExtensions>
+  -->
+  <ProjectExtensions>
+    <MonoDevelop>
+      <Properties>
+        <MonoDevelop.Autotools.MakefileInfo IntegrationEnabled="true" RelativeMakefileName="Makefile.am" IsAutotoolsProject="true" RelativeConfigureInPath="../../..">
+          <BuildFilesVar Sync="true" Name="rules_sources" />
+          <DeployFilesVar />
+          <ResourcesVar />
+          <OthersVar />
+          <GacRefVar />
+          <AsmRefVar />
+          <ProjectRefVar />
+        </MonoDevelop.Autotools.MakefileInfo>
+      </Properties>
+    </MonoDevelop>
+    <VisualStudio />
+  </ProjectExtensions>
 </Project>
\ No newline at end of file
diff --git a/gendarme/rules/Gendarme.Rules.Ui/Makefile.in b/gendarme/rules/Gendarme.Rules.Ui/Makefile.in
index d5a210e..5825525 100644
--- a/gendarme/rules/Gendarme.Rules.Ui/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Ui/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,11 +60,38 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(rules_categorydir)" \
 	"$(DESTDIR)$(rules_documentationdir)"
-rules_categorySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(rules_category_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -56,20 +102,46 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-rules_documentationDATA_INSTALL = $(INSTALL_DATA)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(rules_documentation_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -130,6 +202,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -143,9 +216,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -271,14 +347,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Ui/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Ui/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Ui/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Ui/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -288,6 +364,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../common.make $(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -296,42 +373,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-rules_categorySCRIPTS: $(rules_category_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_categorydir)" || $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)"
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_categorydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_categorydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(rules_categorySCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	    $(rules_categorySCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rules_categorydir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rules_categorydir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-rules_categorySCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_category_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(rules_categorydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_categorydir)/$$f"; \
-	done
+	@list='$(rules_category_SCRIPTS)'; test -n "$(rules_categorydir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(rules_categorydir)'; $(am__uninstall_files_from_dir)
 install-rules_documentationDATA: $(rules_documentation_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(rules_documentationdir)" || $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)"
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rules_documentationdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(rules_documentationDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  $(rules_documentationDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(rules_documentationdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rules_documentationdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(rules_documentationdir)" || exit $$?; \
 	done
 
 uninstall-rules_documentationDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rules_documentation_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(rules_documentationdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(rules_documentationdir)/$$f"; \
-	done
+	@list='$(rules_documentation_DATA)'; test -n "$(rules_documentationdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(rules_documentationdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -340,7 +438,7 @@ uninstall-rules_documentationDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -357,7 +455,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -365,7 +463,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -391,16 +489,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -408,14 +506,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -427,7 +525,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -436,29 +534,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -479,29 +582,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -524,10 +639,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -535,6 +655,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -554,6 +675,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -563,18 +686,28 @@ install-data-am: install-rules_categorySCRIPTS \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -596,8 +729,8 @@ ps-am:
 uninstall-am: uninstall-rules_categorySCRIPTS \
 	uninstall-rules_documentationDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-local \
@@ -617,11 +750,11 @@ uninstall-am: uninstall-rules_categorySCRIPTS \
 
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -630,7 +763,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
@@ -650,6 +783,7 @@ $(rules_doc_source):
 
 clean-local:
 	rm -fr doc
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Ui/Test/Makefile.in b/gendarme/rules/Gendarme.Rules.Ui/Test/Makefile.in
index 8446ee5..9dee3f5 100644
--- a/gendarme/rules/Gendarme.Rules.Ui/Test/Makefile.in
+++ b/gendarme/rules/Gendarme.Rules.Ui/Test/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -197,14 +226,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Ui/Test/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Gendarme.Rules.Ui/Test/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Ui/Test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Gendarme.Rules.Ui/Test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,6 +251,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -245,13 +275,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -269,16 +303,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -298,6 +338,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -306,18 +348,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -352,6 +404,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Ui/Test/Tests.Rules.Ui.csproj b/gendarme/rules/Gendarme.Rules.Ui/Test/Tests.Rules.Ui.csproj
index 1122d10..902d880 100644
--- a/gendarme/rules/Gendarme.Rules.Ui/Test/Tests.Rules.Ui.csproj
+++ b/gendarme/rules/Gendarme.Rules.Ui/Test/Tests.Rules.Ui.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -12,9 +12,11 @@
     <AssemblyName>Tests.Rules.Ui</AssemblyName>
     <FileUpgradeFlags>
     </FileUpgradeFlags>
-    <OldToolsVersion>2.0</OldToolsVersion>
+    <OldToolsVersion>3.5</OldToolsVersion>
     <UpgradeBackupLocation>
     </UpgradeBackupLocation>
+    <IsWebBootstrapper>true</IsWebBootstrapper>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <PublishUrl>http://localhost/Tests.Rules.Ui/</PublishUrl>
     <Install>true</Install>
     <InstallFrom>Web</InstallFrom>
@@ -27,10 +29,9 @@
     <MapFileExtensions>true</MapFileExtensions>
     <ApplicationRevision>0</ApplicationRevision>
     <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>true</IsWebBootstrapper>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -40,6 +41,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -48,6 +50,7 @@
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
@@ -64,6 +67,7 @@
     <Reference Include="System.Core">
       <RequiredTargetFramework>3.5</RequiredTargetFramework>
     </Reference>
+    <Reference Include="System.Xaml" />
     <Reference Include="WindowsBase">
       <RequiredTargetFramework>3.0</RequiredTargetFramework>
     </Reference>
@@ -94,14 +98,33 @@
     </ProjectReference>
   </ItemGroup>
   <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
     <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
       <Visible>False</Visible>
+      <ProductName>
+      </ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
     </BootstrapperPackage>
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
diff --git a/gendarme/rules/Gendarme.Rules.Ui/UseSTAThreadAttributeOnSWFEntryPointsRule.cs b/gendarme/rules/Gendarme.Rules.Ui/UseSTAThreadAttributeOnSWFEntryPointsRule.cs
index 5d0cf60..7460b54 100644
--- a/gendarme/rules/Gendarme.Rules.Ui/UseSTAThreadAttributeOnSWFEntryPointsRule.cs
+++ b/gendarme/rules/Gendarme.Rules.Ui/UseSTAThreadAttributeOnSWFEntryPointsRule.cs
@@ -92,9 +92,6 @@ namespace Gendarme.Rules.UI {
 
 		private const string SystemWindowsForms = "System.Windows.Forms";
 
-		private const string STAThread = "System.STAThreadAttribute";
-		private const string MTAThread = "System.MTAThreadAttribute";
-
 		public RuleResult CheckAssembly (AssemblyDefinition assembly)
 		{
 			MethodDefinition entry_point = assembly.EntryPoint;
@@ -115,8 +112,8 @@ namespace Gendarme.Rules.UI {
 			if (!referencesSWF)
 				return RuleResult.DoesNotApply;
 
-			bool hasSTA = entry_point.HasAttribute (STAThread);
-			bool hasMTA = entry_point.HasAttribute (MTAThread);
+			bool hasSTA = entry_point.HasAttribute ("System", "STAThreadAttribute");
+			bool hasMTA = entry_point.HasAttribute ("System", "MTAThreadAttribute");
 
 			// success if only [STAThread] attribute is present
 			if (hasSTA && !hasMTA)
diff --git a/gendarme/rules/Makefile.in b/gendarme/rules/Makefile.in
index bb78093..976694d 100644
--- a/gendarme/rules/Makefile.in
+++ b/gendarme/rules/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,8 +57,9 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -49,12 +69,45 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -115,6 +168,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -128,9 +182,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -233,14 +290,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -258,6 +315,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -266,7 +324,7 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -283,7 +341,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -291,7 +349,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -317,16 +375,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -334,14 +392,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -353,7 +411,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -362,29 +420,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -405,29 +468,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -447,16 +522,22 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -476,6 +557,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -483,21 +566,30 @@ info-am:
 install-data-am:
 	@$(NORMAL_INSTALL)
 	$(MAKE) $(AM_MAKEFLAGS) install-data-hook
-
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -519,9 +611,9 @@ ps-am:
 uninstall-am:
 	@$(NORMAL_INSTALL)
 	$(MAKE) $(AM_MAKEFLAGS) uninstall-hook
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-data-am install-strip uninstall-am
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-data-am install-strip tags-recursive \
+	uninstall-am
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic ctags \
@@ -563,6 +655,7 @@ run-test:
 	list='$(RULEDIRS)'; for d in $$list ; do \
 	    (cd $$d && $(MAKE) run-test) ; \
 	done;
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Test.Rules/Makefile.am b/gendarme/rules/Test.Rules/Makefile.am
index 428350d..e3f3ae4 100644
--- a/gendarme/rules/Test.Rules/Makefile.am
+++ b/gendarme/rules/Test.Rules/Makefile.am
@@ -5,7 +5,7 @@ test_SCRIPTS =
 test_DATA = 
 
 framework=../../bin/Gendarme.Framework.dll
-common_tests=../Test.Rules/Test.Rules.dll
+common_tests=Test.Rules.dll
 
 EXTRA_DIST = $(test_sources) Test.Rules.csproj
 CLEANFILES = Test.Rules.dll Test.Rules.dll.mdb $(common_tests)
@@ -24,8 +24,8 @@ test_sources =  \
 
 test_build_sources = $(addprefix $(srcdir)/, $(test_sources))
 
-$(common_tests): $(test_build_sources)
-	$(GMCS) -target:library $(TESTS_OPTIONS) -pkg:mono-nunit -r:$(CECIL_ASM) -r:$(framework) -out:$@ $(test_build_sources)
+$(common_tests): $(test_build_sources) $(framework)
+	$(MCS) -target:library $(TESTS_OPTIONS) -pkg:mono-nunit -r:$(CECIL_ASM) -r:$(framework) -out:$@ $(test_build_sources)
 
 all: $(common_tests)
 
diff --git a/gendarme/rules/Test.Rules/Makefile.in b/gendarme/rules/Test.Rules/Makefile.in
index fe257ab..cc4df0c 100644
--- a/gendarme/rules/Test.Rules/Makefile.in
+++ b/gendarme/rules/Test.Rules/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,20 +60,45 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
-am__installdirs = "$(DESTDIR)$(testdir)" "$(DESTDIR)$(testdir)"
-testSCRIPT_INSTALL = $(INSTALL_SCRIPT)
-SCRIPTS = $(test_SCRIPTS)
-SOURCES =
-DIST_SOURCES =
+CONFIG_CLEAN_VPATH_FILES =
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-testDATA_INSTALL = $(INSTALL_DATA)
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(testdir)" "$(DESTDIR)$(testdir)"
+SCRIPTS = $(test_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(test_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
@@ -117,6 +161,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -130,9 +175,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -212,7 +260,7 @@ testdir = .
 test_SCRIPTS = 
 test_DATA = 
 framework = ../../bin/Gendarme.Framework.dll
-common_tests = ../Test.Rules/Test.Rules.dll
+common_tests = Test.Rules.dll
 EXTRA_DIST = $(test_sources) Test.Rules.csproj
 CLEANFILES = Test.Rules.dll Test.Rules.dll.mdb $(common_tests)
 DISTCLEANFILES = Makefile.in
@@ -235,14 +283,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/..
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/rules/Test.Rules/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/rules/Test.Rules/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/rules/Test.Rules/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/rules/Test.Rules/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -252,6 +300,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/../../options.make:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -260,42 +309,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-testSCRIPTS: $(test_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(testdir)" || $(MKDIR_P) "$(DESTDIR)$(testdir)"
-	@list='$(test_SCRIPTS)'; for p in $$list; do \
+	@list='$(test_SCRIPTS)'; test -n "$(testdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(testdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(testdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(testSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(testdir)/$$f'"; \
-	    $(testSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(testdir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(testdir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(testdir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-testSCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(test_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(testdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(testdir)/$$f"; \
-	done
+	@list='$(test_SCRIPTS)'; test -n "$(testdir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(testdir)'; $(am__uninstall_files_from_dir)
 install-testDATA: $(test_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(testdir)" || $(MKDIR_P) "$(DESTDIR)$(testdir)"
-	@list='$(test_DATA)'; for p in $$list; do \
+	@list='$(test_DATA)'; test -n "$(testdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(testdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(testdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(testDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(testdir)/$$f'"; \
-	  $(testDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(testdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(testdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(testdir)" || exit $$?; \
 	done
 
 uninstall-testDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(test_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(testdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(testdir)/$$f"; \
-	done
+	@list='$(test_DATA)'; test -n "$(testdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(testdir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -319,13 +389,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -346,10 +420,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -357,6 +436,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -376,6 +456,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -384,18 +466,28 @@ install-data-am: install-testDATA install-testSCRIPTS
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -431,8 +523,8 @@ uninstall-am: uninstall-testDATA uninstall-testSCRIPTS
 	uninstall-testSCRIPTS
 
 
-$(common_tests): $(test_build_sources)
-	$(GMCS) -target:library $(TESTS_OPTIONS) -pkg:mono-nunit -r:$(CECIL_ASM) -r:$(framework) -out:$@ $(test_build_sources)
+$(common_tests): $(test_build_sources) $(framework)
+	$(MCS) -target:library $(TESTS_OPTIONS) -pkg:mono-nunit -r:$(CECIL_ASM) -r:$(framework) -out:$@ $(test_build_sources)
 
 all: $(common_tests)
 
@@ -441,6 +533,7 @@ test: $(common_tests)
 run-test: test
 
 self-test:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Test.Rules/Test.Rules.csproj b/gendarme/rules/Test.Rules/Test.Rules.csproj
index 8da60d8..9ee6d88 100755
--- a/gendarme/rules/Test.Rules/Test.Rules.csproj
+++ b/gendarme/rules/Test.Rules/Test.Rules.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Test.Rules</RootNamespace>
     <AssemblyName>Test.Rules</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -21,6 +41,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -29,6 +50,7 @@
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
@@ -61,6 +83,23 @@
       <Name>Gendarme.Framework</Name>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/rules/common.make b/gendarme/rules/common.make
index 5e864e4..05eb8dd 100644
--- a/gendarme/rules/common.make
+++ b/gendarme/rules/common.make
@@ -39,13 +39,13 @@ rules_doc = $(rules_doc_zip) $(rules_doc_source) $(rules_doc_tree)
 generated_doc = doc/generated/index.xml
 
 $(rules_dll): $(rules_build_sources) $(framework)
-	$(GMCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
+	$(MCS) -target:library $(EXTRA_RULES_OPTIONS) -nowarn:1591 -doc:$(rules_dll).doc \
 		-r:$(CECIL_ASM) -r:$(framework) -out:$@ $(rules_build_sources)
 
 tests_build_sources = $(addprefix $(srcdir)/Test/, $(tests_sources))
 
 $(tests_dll): $(tests_build_sources) $(rules_dll) $(EXTRA_TESTS_DEPS)
-	$(GMCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
+	$(MCS) -target:library $(EXTRA_TESTS_OPTIONS) -r:$(CECIL_ASM) -r:$(framework) \
 		-r:$(rules_dll) -r:$(common_tests) -pkg:mono-nunit -out:$@ $(tests_build_sources)
 
 rule: $(rules_dll)
@@ -54,7 +54,7 @@ test: $(tests_dll)
 
 run-test: test
 	cp ../../bin/gendarme.exe.config $(tests_dll).config
-	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) nunit-console2 $(tests_dll)
+	MONO_PATH=../../bin/:../Test.Rules/:$(MONO_PATH) $(prefix)/bin/mono $(prefix)/lib/mono/4.0/nunit-console.exe $(tests_dll)
 
 self-test: $(rules_dll)
 	mono --debug $(console_runner) $(rules_dll)
diff --git a/gendarme/self-test.ignore b/gendarme/self-test.ignore
index 0bf06ca..3daebf3 100644
--- a/gendarme/self-test.ignore
+++ b/gendarme/self-test.ignore
@@ -24,12 +24,14 @@ M: System.Void Gendarme.Rules.Concurrency.DoNotLockOnWeakIdentityObjectsRule::An
 # all > 200 rules expose a Check* method that does not check for null (by contract) but we need code contracts to show this
 M: Gendarme.Framework.RuleResult Gendarme.Rules.BadPractice.AvoidAssemblyVersionMismatchRule::CheckAssembly(Mono.Cecil.AssemblyDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.BadPractice.AvoidCallingProblematicMethodsRule::CheckMethod(Mono.Cecil.MethodDefinition)
+M: Gendarme.Framework.RuleResult Gendarme.Rules.BadPractice.AvoidNullCheckWithAsOperatorRule::CheckMethod(Mono.Cecil.MethodDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.BadPractice.AvoidVisibleConstantFieldRule::CheckType(Mono.Cecil.TypeDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.BadPractice.CheckNewExceptionWithoutThrowingRule::CheckMethod(Mono.Cecil.MethodDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.BadPractice.CheckNewThreadWithoutStartRule::CheckMethod(Mono.Cecil.MethodDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.BadPractice.CloneMethodShouldNotReturnNullRule::CheckMethod(Mono.Cecil.MethodDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.BadPractice.ConstructorShouldNotCallVirtualMethodsRule::CheckType(Mono.Cecil.TypeDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.BadPractice.DisableDebuggingCodeRule::CheckMethod(Mono.Cecil.MethodDefinition)
+M: Gendarme.Framework.RuleResult Gendarme.Rules.BadPractice.DoNotDecreaseVisibilityRule::CheckMethod(Mono.Cecil.MethodDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.BadPractice.DoNotForgetNotImplementedMethodsRule::CheckMethod(Mono.Cecil.MethodDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.BadPractice.DoNotUseEnumIsAssignableFromRule::CheckMethod(Mono.Cecil.MethodDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.BadPractice.DoNotUseGetInterfaceToCheckAssignabilityRule::CheckMethod(Mono.Cecil.MethodDefinition)
@@ -58,6 +60,7 @@ M: Gendarme.Framework.RuleResult Gendarme.Rules.Correctness.DoNotRecurseInEquali
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Correctness.BadRecursiveInvocationRule::CheckMethod(Mono.Cecil.MethodDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Correctness.CallingEqualsWithNullArgRule::CheckMethod(Mono.Cecil.MethodDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Correctness.CheckParametersNullityInVisibleMethodsRule::CheckMethod(Mono.Cecil.MethodDefinition)
+M: Gendarme.Framework.RuleResult Gendarme.Rules.Correctness.DeclareEventsExplicitlyRule::CheckType(Mono.Cecil.TypeDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Correctness.DisposableFieldsShouldBeDisposedRule::CheckType(Mono.Cecil.TypeDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Correctness.DoNotRoundIntegersRule::CheckMethod(Mono.Cecil.MethodDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Correctness.EnsureLocalDisposalRule::CheckMethod(Mono.Cecil.MethodDefinition)
@@ -75,6 +78,9 @@ M: Gendarme.Framework.RuleResult Gendarme.Rules.Correctness.ReviewSelfAssignment
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Correctness.ReviewUselessControlFlowRule::CheckMethod(Mono.Cecil.MethodDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Correctness.ReviewUseOfInt64BitsToDoubleRule::CheckMethod(Mono.Cecil.MethodDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Correctness.ReviewUseOfModuloOneOnIntegersRule::CheckMethod(Mono.Cecil.MethodDefinition)
+M: Gendarme.Framework.RuleResult Gendarme.Rules.Correctness.TypesShouldBeDisposableBaseRule::CheckType(Mono.Cecil.TypeDefinition)
+M: Gendarme.Framework.RuleResult Gendarme.Rules.Correctness.TypesWithDisposableFieldsShouldBeDisposableRule::CheckType(Mono.Cecil.TypeDefinition)
+M: Gendarme.Framework.RuleResult Gendarme.Rules.Correctness.TypesWithNativeFieldsShouldBeDisposableRule::CheckType(Mono.Cecil.TypeDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Correctness.UseNoInliningWithGetCallingAssemblyRule::CheckMethod(Mono.Cecil.MethodDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Correctness.UseValueInPropertySetterRule::CheckMethod(Mono.Cecil.MethodDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.AbstractTypesShouldNotHavePublicConstructorsRule::CheckType(Mono.Cecil.TypeDefinition)
@@ -91,6 +97,7 @@ M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.ConsiderConvertingMethodT
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.ConsiderUsingStaticTypeRule::CheckType(Mono.Cecil.TypeDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.DeclareEventHandlersCorrectlyRule::CheckType(Mono.Cecil.TypeDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.DisposableTypesShouldHaveFinalizerRule::CheckType(Mono.Cecil.TypeDefinition)
+M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.DoNotDeclareSettersOnCollectionPropertiesRule::CheckType(Mono.Cecil.TypeDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.DoNotDeclareVirtualMethodsInSealedTypeRule::CheckType(Mono.Cecil.TypeDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.DoNotDeclareProtectedMembersInSealedTypeRule::CheckType(Mono.Cecil.TypeDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.EnsureSymmetryForOverloadedOperatorsRule::CheckType(Mono.Cecil.TypeDefinition)
@@ -109,8 +116,6 @@ M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.ProvideAlternativeNamesFo
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.ProvideTryParseAlternativeRule::CheckType(Mono.Cecil.TypeDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.StronglyTypedRule::CheckType(Mono.Cecil.TypeDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.TypesShouldBeInsideNamespacesRule::CheckType(Mono.Cecil.TypeDefinition)
-M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.TypesWithDisposableFieldsShouldBeDisposableRule::CheckType(Mono.Cecil.TypeDefinition)
-M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.TypesWithNativeFieldsShouldBeDisposableRule::CheckType(Mono.Cecil.TypeDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.UseFlagsAttributeRule::CheckType(Mono.Cecil.TypeDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.UseCorrectDisposeSignaturesRule::CheckType(Mono.Cecil.TypeDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.Generic.AvoidExcessiveParametersOnGenericTypesRule::CheckType(Mono.Cecil.TypeDefinition)
@@ -119,9 +124,9 @@ M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.Generic.DoNotDeclareStati
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.Generic.DoNotExposeGenericListsRule::CheckType(Mono.Cecil.TypeDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.Generic.ImplementGenericCollectionInterfacesRule::CheckType(Mono.Cecil.TypeDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.Generic.PreferGenericsOverRefObjectRule::CheckMethod(Mono.Cecil.MethodDefinition)
-M: Gendarme.Framework.RuleResult Gendarme.Rules.Globalization.SatelliteResourceMismatchRule::CheckAssembly(Mono.Cecil.AssemblyDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Exceptions.AvoidArgumentExceptionDefaultConstructorRule::CheckMethod(Mono.Cecil.MethodDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Exceptions.DoNotDestroyStackTraceRule::CheckMethod(Mono.Cecil.MethodDefinition)
+M: Gendarme.Framework.RuleResult Gendarme.Rules.Exceptions.DoNotThrowInNonCatchClausesRule::CheckMethod(Mono.Cecil.MethodDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Exceptions.DoNotThrowInUnexpectedLocationRule::CheckMethod(Mono.Cecil.MethodDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Exceptions.DoNotSwallowErrorsCatchingNonSpecificExceptionsRule::CheckMethod(Mono.Cecil.MethodDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Exceptions.ExceptionShouldBeVisibleRule::CheckType(Mono.Cecil.TypeDefinition)
@@ -132,6 +137,8 @@ M: Gendarme.Framework.RuleResult Gendarme.Rules.Gendarme.DefectsMustBeReportedRu
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Gendarme.DoNotThrowExceptionRule::CheckMethod(Mono.Cecil.MethodDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Gendarme.MissingEngineDependencyRule::CheckType(Mono.Cecil.TypeDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Gendarme.UseCorrectSuffixRule::CheckType(Mono.Cecil.TypeDefinition)
+M: Gendarme.Framework.RuleResult Gendarme.Rules.Globalization.PreferOverrideBaseRule::CheckMethod(Mono.Cecil.MethodDefinition)
+M: Gendarme.Framework.RuleResult Gendarme.Rules.Globalization.SatelliteResourceMismatchRule::CheckAssembly(Mono.Cecil.AssemblyDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Interoperability.CentralizePInvokesIntoNativeMethodsTypeRule::CheckType(Mono.Cecil.TypeDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Interoperability.CentralizePInvokesIntoNativeMethodsTypeRule::CheckMethod(Mono.Cecil.MethodDefinition)
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Interoperability.DelegatesPassedToNativeCodeMustIncludeExceptionHandlingRule::CheckMethod(Mono.Cecil.MethodDefinition)
@@ -279,6 +286,7 @@ M: System.Void Gendarme.Rules.Concurrency.DoNotLockOnWeakIdentityObjectsRule::An
 # different code path / switch
 M: System.Void Gendarme.Rules.Correctness.ProvideValidXmlStringRule::CheckCall(Mono.Cecil.MethodDefinition,Mono.Cecil.Cil.Instruction,Mono.Cecil.MethodReference)
 M: System.Void Gendarme.Rules.Correctness.ProvideValidXPathExpressionRule::CheckCall(Mono.Cecil.MethodDefinition,Mono.Cecil.Cil.Instruction,Mono.Cecil.MethodReference)
+M: System.Boolean Gendarme.Rules.Concurrency.DoNotLockOnWeakIdentityObjectsRule::IsWeakSealedType(Mono.Cecil.TypeReference)
 
 # mono bug wrt metatoken id with generics
 R: Gendarme.Rules.Performance.AvoidUncalledPrivateCodeRule
@@ -298,7 +306,7 @@ M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.AvoidSmallNamespaceRule::
 M: System.Void Gendarme.Rules.Design.AvoidSmallNamespaceRule::TearDown()
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Design.InternalNamespacesShouldNotExposeTypesRule::CheckAssembly(Mono.Cecil.AssemblyDefinition)
 M: System.Void Gendarme.Rules.Interoperability.Com.MarkComSourceInterfacesAsIDispatchRule::FindInterfaces()
-M: System.Boolean Gendarme.Rules.Smells.AvoidSpeculativeGeneralityRule::HasExpectedInheritedTypeCount(Mono.Cecil.MemberReference,System.Int32)
+M: System.Boolean Gendarme.Rules.Smells.AvoidSpeculativeGeneralityRule::HasExpectedInheritedTypeCount(Mono.Cecil.TypeReference,System.Int32)
 M: System.Void Gendarme.XmlResultWriter::CreateDefects()
 M: System.Boolean Gendarme.Wizard::UpdateActiveRules()
 M: System.Void Gendarme.Framework.Engines.SuppressMessageEngine::AddIgnore(Mono.Cecil.IMetadataTokenProvider,System.Collections.Generic.IEnumerable`1<System.String>)
@@ -344,6 +352,9 @@ T: Gendarme.Rules.Performance.ReviewLinqMethodRule
 T: Gendarme.Rules.Design.StronglyTypedRule
 # 2.8+
 M: System.String Gendarme.Rules.Maintainability.PreferStringIsNullOrEmptyRule::GetName(Mono.Cecil.MethodDefinition,Mono.Cecil.Cil.Instruction)
+# ParseSeverity(System.String) and ParseConfidence(System.String) are very similar
+T: Gendarme.ConsoleRunner
+
 R: Gendarme.Rules.Smells.AvoidCodeDuplicatedInSiblingClassesRule
 M: Gendarme.Framework.RuleResult Gendarme.Rules.Correctness.AvoidFloatingPointEqualityRule::CheckMethod(Mono.Cecil.MethodDefinition)
 # CheckType and GetEngineDependencyValue
@@ -354,6 +365,7 @@ T: Gendarme.Rules.Gendarme.GendarmeRule
 R: Gendarme.Rules.Smells.AvoidSpeculativeGeneralityRule
 T: Gendarme.Framework.EngineController
 T: Gendarme.Framework.Helpers.MethodSignatures
+T: Gendarme.Framework.Rocks.ParameterRocks
 
 # FIXME - note: some seems to be related to an xMCS bug
 R: Gendarme.Rules.Performance.AvoidMethodWithLargeMaximumStackSizeRule
@@ -414,6 +426,7 @@ R: Gendarme.Rules.Maintainability.AvoidUnnecessarySpecializationRule
 M: System.Boolean Gendarme.Rules.Interoperability.Com.ComRocks::IsTypeComVisible(Mono.Cecil.TypeDefinition)
 M: System.Boolean Gendarme.Rules.Performance.AvoidUnnecessaryOverridesRule::IsBase(Mono.Cecil.MethodReference,Mono.Cecil.MethodReference)
 M: System.Boolean Gendarme.Rules.Correctness.BadRecursiveInvocationRule::CompareMethods(Mono.Cecil.MethodReference,Mono.Cecil.MethodReference,System.Boolean)
+M: System.Boolean Gendarme.Rules.Naming.ParameterNamesShouldMatchOverriddenMethodRule::SignatureMatches(Mono.Cecil.MethodReference,Mono.Cecil.MethodReference,System.Boolean)
 
 # ---------------------------------------------------------
 # These are all OK.
@@ -458,11 +471,6 @@ M: Gendarme.Framework.RuleResult Gendarme.Rules.Interoperability.DelegatesPassed
 # FIXME the last one needs validation
 M: System.Boolean Gendarme.Wizard::CouldCopyReport(System.String&,System.String)
 
-# OK - Version and Guid sadly do not provide a TryParse method (at least they did not before FX4.0 - FIXME once we update)
-R: Gendarme.Rules.Performance.DoNotIgnoreMethodResultRule
-M: System.Boolean Gendarme.Rules.Correctness.AttributeStringLiteralsShouldParseCorrectlyRule::TryParseVersion(System.String)
-M: System.Boolean Gendarme.Rules.Correctness.AttributeStringLiteralsShouldParseCorrectlyRule::TryParseGuid(System.String)
-
 # OK - MethodSignatures use the CLR names for operators that starts with "op_"
 R: Gendarme.Rules.Naming.AvoidNonAlphanumericIdentifierRule
 T: Gendarme.Framework.Helpers.MethodSignatures
@@ -527,12 +535,6 @@ R: Gendarme.Rules.Smells.AvoidCodeDuplicatedInSameClassRule
 # OK - (CSC only) GetLoadSlot and GetStoreSlot are identical except for the switch/case (load versus store instructions) - delegating calls won't change defect
 T: Gendarme.Framework.Helpers.StackEntryAnalysis
 
-# FX4 related - will be fixed once we move to FX4 (likely for Gendarme 3.0)
-R: Gendarme.Rules.Maintainability.AvoidUnnecessarySpecializationRule
-# use ISet<H>
-M: System.Void Gendarme.Rules.Performance.AvoidUninstantiatedInternalClassesRule::AddType(System.Collections.Generic.HashSet`1<Mono.Cecil.TypeReference>,Mono.Cecil.TypeReference)
-M: System.Void Gendarme.Rules.Performance.AvoidUncalledPrivateCodeRule::BuildMethodUsage(System.Collections.Generic.HashSet`1<System.UInt32>,Mono.Cecil.MethodDefinition)
-
 # OK
 R: Gendarme.Rules.Naming.AvoidRedundancyInTypeNameRule
 # ComRocks is not directly used
@@ -566,3 +568,12 @@ T: Gendarme.Rules.UI.GtkSharpExecutableTargetRule
 # OK - Gendarme.Framework.Rule may throw exceptions as it is not a real rule
 R: Gendarme.Rules.Gendarme.DoNotThrowExceptionRule
 T: Gendarme.Framework.Rule
+
+# Type::op_[Ine|e]quality is new and marked as MonoTODO but it does (at least) the same job as the earlier FX provided
+R: Gendarme.Rules.Portability.MonoCompatibilityReviewRule
+M: System.Void Gendarme.Framework.Rocks.ModuleRocks::LoadDebuggingSymbols(Mono.Cecil.ModuleDefinition)
+M: System.Void Gendarme.Framework.Rocks.ModuleRocks::.cctor()
+M: System.Void Gendarme.Framework.EngineDependencyAttribute::.ctor(System.Type)
+M: System.Type Gendarme.Framework.Rule::get_Type()
+M: System.Security.IPermission Gendarme.Rules.Security.Cas.SecurityDeclarationRocks::CreatePermission(Mono.Cecil.SecurityDeclaration,Mono.Cecil.SecurityAttribute)
+
diff --git a/gendarme/swf-wizard-runner/GuiRunner.cs b/gendarme/swf-wizard-runner/GuiRunner.cs
index 385406e..b34d5cb 100644
--- a/gendarme/swf-wizard-runner/GuiRunner.cs
+++ b/gendarme/swf-wizard-runner/GuiRunner.cs
@@ -28,6 +28,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 using System.IO;
 using System.Reflection;
 using System.Text;
@@ -110,11 +111,11 @@ namespace Gendarme {
 				TearDown ();
 			}
 			catch (Exception e) {
-				if (CurrentRule != null)
-					unexpected.AppendFormat ("Rule:\t{0}{1}{1}", CurrentRule, Environment.NewLine);
+				if (CurrentRule != null) 
+					unexpected.Append ("Rule:\t").Append (CurrentRule).AppendLine ().AppendLine ();
 				if (CurrentTarget != null)
-					unexpected.AppendFormat ("Target:\t{0}{1}{1}", CurrentTarget, Environment.NewLine);
-				unexpected.AppendFormat ("Stack trace: {0}", e);
+					unexpected.Append ("Target:\t").Append (CurrentTarget).AppendLine ().AppendLine ();
+				unexpected.Append ("Stack trace: ").Append (e);
 			}
 		}
 
diff --git a/gendarme/swf-wizard-runner/Makefile.in b/gendarme/swf-wizard-runner/Makefile.in
index 3f27d9e..eddfea8 100644
--- a/gendarme/swf-wizard-runner/Makefile.in
+++ b/gendarme/swf-wizard-runner/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -40,20 +59,45 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
-am__installdirs = "$(DESTDIR)$(wizarddir)" "$(DESTDIR)$(desktopdir)"
-wizardSCRIPT_INSTALL = $(INSTALL_SCRIPT)
-SCRIPTS = $(wizard_SCRIPTS)
-SOURCES =
-DIST_SOURCES =
+CONFIG_CLEAN_VPATH_FILES =
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-desktopDATA_INSTALL = $(INSTALL_DATA)
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(wizarddir)" "$(DESTDIR)$(desktopdir)"
+SCRIPTS = $(wizard_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(desktop_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
@@ -116,6 +160,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -129,9 +174,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -248,14 +296,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/swf-wizard-runner/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/swf-wizard-runner/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/swf-wizard-runner/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/swf-wizard-runner/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -273,42 +321,63 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-wizardSCRIPTS: $(wizard_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(wizarddir)" || $(MKDIR_P) "$(DESTDIR)$(wizarddir)"
-	@list='$(wizard_SCRIPTS)'; for p in $$list; do \
+	@list='$(wizard_SCRIPTS)'; test -n "$(wizarddir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(wizarddir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(wizarddir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(wizardSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(wizarddir)/$$f'"; \
-	    $(wizardSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(wizarddir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(wizarddir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(wizarddir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-wizardSCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(wizard_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(wizarddir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(wizarddir)/$$f"; \
-	done
+	@list='$(wizard_SCRIPTS)'; test -n "$(wizarddir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(wizarddir)'; $(am__uninstall_files_from_dir)
 install-desktopDATA: $(desktop_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(desktopdir)" || $(MKDIR_P) "$(DESTDIR)$(desktopdir)"
-	@list='$(desktop_DATA)'; for p in $$list; do \
+	@list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(desktopdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(desktopdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(desktopDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(desktopdir)/$$f'"; \
-	  $(desktopDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(desktopdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(desktopdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(desktopdir)" || exit $$?; \
 	done
 
 uninstall-desktopDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(desktop_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(desktopdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(desktopdir)/$$f"; \
-	done
+	@list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(desktopdir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -332,13 +401,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -359,10 +432,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -370,6 +448,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -389,6 +468,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -397,18 +478,28 @@ install-data-am: install-desktopDATA install-wizardSCRIPTS
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -463,6 +554,7 @@ Properties/Resources.resources: $(wizard_properties_prefix_resx)
 
 self-test: $(wizard_SCRIPTS)
 	mono --debug ../bin/gendarme.exe $(wizard_SCRIPTS)
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/swf-wizard-runner/Properties/Resources.Designer.cs b/gendarme/swf-wizard-runner/Properties/Resources.Designer.cs
old mode 100644
new mode 100755
index c588026..9a1518f
--- a/gendarme/swf-wizard-runner/Properties/Resources.Designer.cs
+++ b/gendarme/swf-wizard-runner/Properties/Resources.Designer.cs
@@ -1,7 +1,7 @@
-//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:2.0.50727.1433
+//     Runtime Version:4.0.30319.1
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -19,7 +19,7 @@ namespace Gendarme.Properties {
     // class via a tool like ResGen or Visual Studio.
     // To add or remove a member, edit your .ResX file then rerun ResGen
     // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
     internal class Resources {
diff --git a/gendarme/swf-wizard-runner/Properties/Settings.Designer.cs b/gendarme/swf-wizard-runner/Properties/Settings.Designer.cs
old mode 100644
new mode 100755
index c7479ed..ad7c2d2
--- a/gendarme/swf-wizard-runner/Properties/Settings.Designer.cs
+++ b/gendarme/swf-wizard-runner/Properties/Settings.Designer.cs
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:2.0.50727.3053
+//     Runtime Version:4.0.30319.1
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -12,7 +12,7 @@ namespace Gendarme.Properties {
     
     
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
     internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
         
         private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
diff --git a/gendarme/swf-wizard-runner/Wizard.Designer.cs b/gendarme/swf-wizard-runner/Wizard.Designer.cs
index c92554a..9977480 100644
--- a/gendarme/swf-wizard-runner/Wizard.Designer.cs
+++ b/gendarme/swf-wizard-runner/Wizard.Designer.cs
@@ -146,7 +146,7 @@ namespace Gendarme {
 			this.label1.Padding = new System.Windows.Forms.Padding (12, 0, 0, 1);
 			this.label1.Size = new System.Drawing.Size (265, 14);
 			this.label1.TabIndex = 1;
-			this.label1.Text = "Copyright © 2005-2010 Novell, Inc. and contributors";
+			this.label1.Text = "Copyright © 2005-2011 Novell, Inc. and contributors";
 			// 
 			// welcome_link_label
 			// 
diff --git a/gendarme/swf-wizard-runner/Wizard.cs b/gendarme/swf-wizard-runner/Wizard.cs
index 0739ca1..7465b19 100644
--- a/gendarme/swf-wizard-runner/Wizard.cs
+++ b/gendarme/swf-wizard-runner/Wizard.cs
@@ -30,6 +30,7 @@ using System;
 using System.Collections.Specialized;
 using System.Collections.Generic;
 using System.Diagnostics;
+using System.Globalization;
 using System.IO;
 using System.Windows.Forms;
 
@@ -98,7 +99,7 @@ namespace Gendarme {
 			if ((v.Major == 0) && (v.Minor == 0))
 				welcome_gendarme_label.Text = "Gendarme (development snapshot)";
 			else
-				welcome_gendarme_label.Text = String.Format ("Gendarme, version {0}", v);
+				welcome_gendarme_label.Text = String.Format (CultureInfo.CurrentCulture, "Gendarme, version {0}", v);
 
 			assembly_loader = UpdateAssemblies;
 
@@ -265,7 +266,7 @@ namespace Gendarme {
 			next_button.Enabled = has_files;
 			remove_file_button.Enabled = has_files;
 			if (has_files) {
-				add_files_count_label.Text = String.Format ("{0} assembl{1} selected",
+				add_files_count_label.Text = String.Format (CultureInfo.CurrentCulture, "{0} assembl{1} selected",
 					files_count, files_count == 1 ? "y" : "ies");
 			} else {
 				add_files_count_label.Text = "No assembly selected.";
@@ -344,7 +345,8 @@ namespace Gendarme {
 			// asynchronously load assemblies (or the one that changed)
 			assemblies_loading = assembly_loader.BeginInvoke (EndCallback, assembly_loader);
 
-			rules_count_label.Text = String.Format ("{0} rules are available.", Runner.Rules.Count);
+			rules_count_label.Text = String.Format (CultureInfo.CurrentCulture, 
+				"{0} rules are available.", Runner.Rules.Count);
 			if (rules_loading == null)
 				throw new InvalidOperationException ("rules_loading");
 
@@ -390,7 +392,8 @@ namespace Gendarme {
 					parent.Checked = true;
 			}
 			foreach (TreeNode node in rules_tree_view.Nodes) {
-				node.ToolTipText = String.Format ("{0} rules available", node.Nodes.Count);
+				node.ToolTipText = String.Format (CultureInfo.CurrentCulture,
+					"{0} rules available", node.Nodes.Count);
 			}
 			nodes.Clear ();
 			rules_tree_view.AfterCheck += RulesTreeViewAfterCheck;
@@ -527,8 +530,8 @@ namespace Gendarme {
 			// update UI before waiting for assemblies to be loaded
 			progress_bar.Value = 0;
 			next_button.Enabled = false;
-			analyze_status_label.Text = String.Format ("Processing assembly 1 of {0}",
-				assemblies.Count);
+			analyze_status_label.Text = String.Format (CultureInfo.CurrentCulture,
+				"Processing assembly 1 of {0}", assemblies.Count);
 			analyze_defect_label.Text = "Defects Found: 0";
 			// make sure all assemblies are loaded into memory
 			assemblies_loading.AsyncWaitHandle.WaitOne ();
@@ -597,7 +600,8 @@ namespace Gendarme {
 
 		private bool ConfirmAnalyzeAbort (bool quit)
 		{
-			string message = String.Format ("Abort the current analysis being executed {0}Gendarme ?",
+			string message = String.Format (CultureInfo.CurrentCulture,
+				"Abort the current analysis being executed {0}Gendarme ?",
 				quit ? "and quit " : String.Empty);
 			return (MessageBox.Show (this, message, "Gendarme", MessageBoxButtons.YesNo, MessageBoxIcon.Question,
 				MessageBoxDefaultButton.Button2) == DialogResult.Yes);
@@ -610,7 +614,8 @@ namespace Gendarme {
 		internal void PreAssemblyUpdate (RunnerEventArgs e)
 		{
 			progress_bar.Value = counter++;
-			analyze_status_label.Text = String.Format ("Processing assembly {0} of {1}",
+			analyze_status_label.Text = String.Format (CultureInfo.CurrentCulture,
+				"Processing assembly {0} of {1}",
 				counter, e.Runner.Assemblies.Count);
 			analyze_assembly_label.Text = "Assembly: " + e.CurrentAssembly.Name.FullName;
 		}
@@ -621,7 +626,8 @@ namespace Gendarme {
 		/// <param name="e">RunnerEventArgs that contains the Assembly being analyzed and the Runner</param>
 		internal void PostTypeUpdate (RunnerEventArgs e)
 		{
-			analyze_defect_label.Text = String.Format ("Defects Found: {0}", e.Runner.Defects.Count);
+			analyze_defect_label.Text = String.Format (CultureInfo.CurrentCulture, 
+				"Defects Found: {0}", e.Runner.Defects.Count);
 		}
 
 		#endregion
@@ -633,8 +639,9 @@ namespace Gendarme {
 			bool has_defects = (Runner.Defects.Count > 0);
 			save_report_button.Enabled = has_defects;
 			view_report_button.Enabled = has_defects;
-			report_subtitle_label.Text = String.Format ("Gendarme has found {0} defects during analysis.",
-				has_defects ? Runner.Defects.Count.ToString () : "no");
+			report_subtitle_label.Text = String.Format (CultureInfo.CurrentCulture,
+				"Gendarme has found {0} defects during analysis.",
+				has_defects ? Runner.Defects.Count.ToString (CultureInfo.CurrentCulture) : "no");
 			cancel_button.Text = "Close";
 			next_button.Enabled = false;
 
diff --git a/gendarme/swf-wizard-runner/swf-wizard-runner.csproj b/gendarme/swf-wizard-runner/swf-wizard-runner.csproj
index b54da3b..4f52a11 100644
--- a/gendarme/swf-wizard-runner/swf-wizard-runner.csproj
+++ b/gendarme/swf-wizard-runner/swf-wizard-runner.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,9 +10,29 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Gendarme</RootNamespace>
     <AssemblyName>GendarmeWizard</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
     <ApplicationIcon>Resources\gendarme.ico</ApplicationIcon>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -22,6 +42,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -30,6 +51,7 @@
     <DefineConstants>TRACE;RELEASE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -39,7 +61,7 @@
     <Reference Include="System.Drawing" />
     <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml" />
-    <Reference Include="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />
+    <Reference Include="System.Xml.Linq" />
   </ItemGroup>
   <ItemGroup>
     <Compile Include="..\AssemblyStaticInfo.cs" />
@@ -50,6 +72,16 @@
     <Compile Include="..\console\XmlResultWriter.cs" />
     <Compile Include="GuiRunner.cs" />
     <Compile Include="Page.cs" />
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+      <DependentUpon>Settings.settings</DependentUpon>
+    </Compile>
     <Compile Include="Wizard.cs">
       <SubType>Form</SubType>
     </Compile>
@@ -64,16 +96,12 @@
     <EmbeddedResource Include="Properties\Resources.resx">
       <SubType>Designer</SubType>
       <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
     </EmbeddedResource>
-    <Compile Include="Properties\Resources.Designer.cs">
-      <DependentUpon>Resources.resx</DependentUpon>
-    </Compile>
     <None Include="Properties\Settings.settings">
       <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
     </None>
-    <Compile Include="Properties\Settings.Designer.cs">
-      <DependentUpon>Settings.settings</DependentUpon>
-    </Compile>
     <EmbeddedResource Include="..\console\gendarme.xsl" />
     <None Include="Resources\gendarme.png" />
   </ItemGroup>
@@ -90,6 +118,23 @@
   <ItemGroup>
     <Content Include="Resources\gendarme.ico" />
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/tools/Makefile.in b/gendarme/tools/Makefile.in
index 6f8f383..0e0d068 100644
--- a/gendarme/tools/Makefile.in
+++ b/gendarme/tools/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,8 +57,9 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -49,12 +69,45 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -115,6 +168,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -128,9 +182,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -208,14 +265,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/tools/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/tools/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/tools/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/tools/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -233,6 +290,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -241,7 +299,7 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -258,7 +316,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -266,7 +324,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -292,16 +350,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -309,14 +367,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -328,7 +386,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -337,29 +395,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -380,29 +443,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -422,16 +497,22 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -450,6 +531,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -458,18 +541,28 @@ install-data-am:
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -490,8 +583,8 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic ctags \
@@ -508,6 +601,7 @@ uninstall-am:
 
 
 all:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/tools/supported/Makefile.am b/gendarme/tools/supported/Makefile.am
index 4f8f0a9..8590cf2 100644
--- a/gendarme/tools/supported/Makefile.am
+++ b/gendarme/tools/supported/Makefile.am
@@ -1,2 +1,2 @@
-SUBDIRS = gd2i
+SUBDIRS = gd2i templates
 
diff --git a/gendarme/tools/supported/Makefile.in b/gendarme/tools/supported/Makefile.in
index 32c44d6..37372cb 100644
--- a/gendarme/tools/supported/Makefile.in
+++ b/gendarme/tools/supported/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,8 +57,9 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -49,12 +69,45 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -115,6 +168,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -128,9 +182,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -200,7 +257,7 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-SUBDIRS = gd2i
+SUBDIRS = gd2i templates
 all: all-recursive
 
 .SUFFIXES:
@@ -208,14 +265,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/tools/supported/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/tools/supported/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/tools/supported/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/tools/supported/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -233,6 +290,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -241,7 +299,7 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -258,7 +316,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -266,7 +324,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -292,16 +350,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -309,14 +367,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -328,7 +386,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -337,29 +395,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -380,29 +443,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -422,16 +497,22 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -450,6 +531,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -458,18 +541,28 @@ install-data-am:
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -490,8 +583,8 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic ctags \
@@ -506,6 +599,7 @@ uninstall-am:
 	mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
 	tags-recursive uninstall uninstall-am
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/tools/supported/gd2i/Makefile.am b/gendarme/tools/supported/gd2i/Makefile.am
index 0ad49f3..c698ed5 100644
--- a/gendarme/tools/supported/gd2i/Makefile.am
+++ b/gendarme/tools/supported/gd2i/Makefile.am
@@ -12,7 +12,7 @@ gd2i_sources =  \
 	gd2i.cs
 
 $(gd2i_SCRIPTS):  $(gd2i_sources)
-	$(GMCS) -d:CODE_ANALYSIS -debug $^ -out:$@
+	$(MCS) -d:CODE_ANALYSIS -debug $^ -out:$@
 
 update: $(gd2i_SCRIPTS)
 	mono --debug $(gd2i_SCRIPTS) ../../../bin/self-test.xml ../../../self-test.ignore
diff --git a/gendarme/tools/supported/gd2i/Makefile.in b/gendarme/tools/supported/gd2i/Makefile.in
index b6520cd..3a1f2d9 100644
--- a/gendarme/tools/supported/gd2i/Makefile.in
+++ b/gendarme/tools/supported/gd2i/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,9 +16,27 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -39,13 +58,45 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(gd2idir)"
-gd2iSCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(gd2i_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -107,6 +158,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -120,9 +172,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -210,14 +265,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/tools/supported/gd2i/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/tools/supported/gd2i/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/tools/supported/gd2i/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/tools/supported/gd2i/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -235,25 +290,42 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-gd2iSCRIPTS: $(gd2i_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(gd2idir)" || $(MKDIR_P) "$(DESTDIR)$(gd2idir)"
-	@list='$(gd2i_SCRIPTS)'; for p in $$list; do \
+	@list='$(gd2i_SCRIPTS)'; test -n "$(gd2idir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(gd2idir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(gd2idir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(gd2iSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(gd2idir)/$$f'"; \
-	    $(gd2iSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(gd2idir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(gd2idir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(gd2idir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-gd2iSCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(gd2i_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(gd2idir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(gd2idir)/$$f"; \
-	done
+	@list='$(gd2i_SCRIPTS)'; test -n "$(gd2idir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(gd2idir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -277,13 +349,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -304,10 +380,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -315,6 +396,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -332,6 +414,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -340,18 +424,28 @@ install-data-am: install-gd2iSCRIPTS
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -387,7 +481,7 @@ uninstall-am: uninstall-gd2iSCRIPTS
 
 
 $(gd2i_SCRIPTS):  $(gd2i_sources)
-	$(GMCS) -d:CODE_ANALYSIS -debug $^ -out:$@
+	$(MCS) -d:CODE_ANALYSIS -debug $^ -out:$@
 
 update: $(gd2i_SCRIPTS)
 	mono --debug $(gd2i_SCRIPTS) ../../../bin/self-test.xml ../../../self-test.ignore
@@ -400,6 +494,7 @@ clean:
 	rm -f $(CLEANFILES) self-test.xml self-test.html
 
 all: $(gd2i_SCRIPTS)
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/tools/supported/gd2i/gd2i.csproj b/gendarme/tools/supported/gd2i/gd2i.csproj
index ec2aa2d..84105de 100644
--- a/gendarme/tools/supported/gd2i/gd2i.csproj
+++ b/gendarme/tools/supported/gd2i/gd2i.csproj
@@ -1,60 +1,99 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{627AA224-D043-4CF4-A783-72546E6ACFDD}</ProjectGuid>
-    <OutputType>Exe</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>gd2i</RootNamespace>
-    <AssemblyName>gd2i</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>TRACE;DEBUG;CODE_ANALYSIS</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\..\..\AssemblyStaticInfo.cs">
-      <Link>AssemblyStaticInfo.cs</Link>
-    </Compile>
-    <Compile Include="..\..\..\console\Options.cs">
-      <Link>Options.cs</Link>
-    </Compile>
-    <Compile Include="gd2i.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <Folder Include="Properties\" />
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{627AA224-D043-4CF4-A783-72546E6ACFDD}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>gd2i</RootNamespace>
+    <AssemblyName>gd2i</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>TRACE;DEBUG;CODE_ANALYSIS</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\..\AssemblyStaticInfo.cs">
+      <Link>AssemblyStaticInfo.cs</Link>
+    </Compile>
+    <Compile Include="..\..\..\console\Options.cs">
+      <Link>Options.cs</Link>
+    </Compile>
+    <Compile Include="gd2i.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Properties\" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
   </Target>
   <Target Name="AfterBuild">
   </Target>
-  -->
+  -->
 </Project>
\ No newline at end of file
diff --git a/gendarme/rules/Gendarme.Rules.Design.Generic/AvoidExcessiveParametersOnGenericTypesRule.cs b/gendarme/tools/supported/templates/AssemblyRule.cs
similarity index 60%
copy from gendarme/rules/Gendarme.Rules.Design.Generic/AvoidExcessiveParametersOnGenericTypesRule.cs
copy to gendarme/tools/supported/templates/AssemblyRule.cs
index e5a8353..80e77c1 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Generic/AvoidExcessiveParametersOnGenericTypesRule.cs
+++ b/gendarme/tools/supported/templates/AssemblyRule.cs
@@ -1,10 +1,10 @@
 // 
-// Gendarme.Rules.Design.Generic.AvoidExcessiveParametersOnGenericTypesRule
+// $rootnamespace$.$safeitemname$
 //
 // Authors:
-//	Nicholas Rioux
+//	$name$ <$email$>
 //
-// Copyright (C) 2010 Nicholas Rioux
+// Copyright (C) $year$ $name$
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
@@ -34,39 +34,32 @@ using Gendarme.Framework.Engines;
 using Gendarme.Framework.Helpers;
 using Gendarme.Framework.Rocks;
 
-namespace Gendarme.Rules.Design.Generic {
+namespace $rootnamespace$ {
 
 	/// <summary>
-	/// A type should not have more than two generic parameters.
+	/// TODO: Add a summary of the rule.
 	/// </summary>
 	/// <example>
 	/// Bad example:
 	/// <code>
-	/// public class BadClass<A, B, C> {
-	/// }
+	/// TODO: Add an example where the rule would fail.
 	/// </code>
 	/// </example>
 	/// <example>
 	/// Good example:
 	/// <code>
-	/// public class GoodClass<A, B> {
-	/// }
+	/// TODO: Show how to fix the bad example.
 	/// </code>
 	/// </example>
 
-	[Problem ("A type has more than two generic parameters.")]
-	[Solution ("Redesign the type so it doesn't take more than two generic parameters.")]
-	[FxCopCompatibility ("Microsoft.Design", "CA1005:AvoidExcessiveParametersOnGenericTypes")]
-	public class AvoidExcessiveParametersOnGenericTypesRule : Rule, ITypeRule {
-		public RuleResult CheckType (TypeDefinition type)
+	// TODO: Describe the problem and solution
+	[Problem ("")]
+	[Solution ("")]
+	public class $safeitemname$ : Rule, IAssemblyRule {
+		public RuleResult CheckAssembly (AssemblyDefinition assembly)
 		{
-			if (!type.IsClass || !type.HasGenericParameters || !type.IsVisible ())
-				return RuleResult.DoesNotApply;
-
-			if (type.GenericParameters.Count > 2)
-				Runner.Report (type, Severity.Medium, Confidence.Total);
-
-			return Runner.CurrentRuleResult;
+			// TODO: Write the rule.
+			return RuleResult.Success;
 		}
 	}
 }
diff --git a/gendarme/tools/supported/templates/AssemblyRule.vstemplate b/gendarme/tools/supported/templates/AssemblyRule.vstemplate
new file mode 100644
index 0000000..9715194
--- /dev/null
+++ b/gendarme/tools/supported/templates/AssemblyRule.vstemplate
@@ -0,0 +1,24 @@
+<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
+  <TemplateData>
+    <DefaultName>Assembly Rule.cs</DefaultName>
+    <Name>Assembly Rule</Name>
+    <Description>A gendarme rule that checks an assembly.</Description>
+    <ProjectType>CSharp</ProjectType>
+    <SortOrder>10</SortOrder>
+    <Icon>__TemplateIcon.ico</Icon>
+  </TemplateData>
+  <TemplateContent>
+    <References>
+      <Reference>
+        <Assembly>Mono.Cecil</Assembly>
+      </Reference>
+      <Reference>
+        <Assembly>Gendarme.Framework</Assembly>
+      </Reference>
+      <Reference>
+        <Assembly>System.Core</Assembly>
+      </Reference>
+    </References>
+    <ProjectItem SubType="Code" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">AssemblyRule.cs</ProjectItem>
+  </TemplateContent>
+</VSTemplate>
\ No newline at end of file
diff --git a/gendarme/framework/Test/Gendarme.Framework.Rocks/AssemblyRocksTest.cs b/gendarme/tools/supported/templates/AssemblyTest.cs
similarity index 58%
copy from gendarme/framework/Test/Gendarme.Framework.Rocks/AssemblyRocksTest.cs
copy to gendarme/tools/supported/templates/AssemblyTest.cs
index c4bbafd..77d5c06 100644
--- a/gendarme/framework/Test/Gendarme.Framework.Rocks/AssemblyRocksTest.cs
+++ b/gendarme/tools/supported/templates/AssemblyTest.cs
@@ -1,10 +1,10 @@
 // 
-// Unit tests for AssemblyRocks
+// $rootnamespace$.$safeitemname$
 //
 // Authors:
-//	Sebastien Pouliot  <sebastien at ximian.com>
+//	$name$ <$email$>
 //
-// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
+// Copyright (C) $year$ $name$
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
@@ -27,38 +27,38 @@
 using System;
 using System.Reflection;
 
-using Gendarme.Framework;
-using Gendarme.Framework.Rocks;
-
 using Mono.Cecil;
+// TODO: Add using for the project of the rule being tested.
+// using Gendarme.Rules. ;
+
 using NUnit.Framework;
+using Test.Rules.Fixtures;
+using Test.Rules.Helpers;
+using Test.Rules.Definitions;
 
-namespace Test.Framework.Rocks {
+namespace $rootnamespace$ {
 
 	[TestFixture]
-	public class AssemblyRocksTest {
-
-		private AssemblyDefinition assembly;
-
-		[TestFixtureSetUp]
-		public void FixtureSetUp ()
+	public class $safeitemname$ : AssemblyRuleTestFixture</* TODO: Add rule's type */> {
+		[Test]
+		public void DoesNotApply ()
 		{
-			string unit = Assembly.GetExecutingAssembly ().Location;
-			assembly = AssemblyDefinition.ReadAssembly (unit);
+			// TODO: Write tests that don't apply.
+			// AssertRuleDoesNotApply (assembly);
 		}
 
 		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void HasAttribute_Null ()
+		public void Good ()
 		{
-			assembly.HasAttribute (null);
+			// TODO: Write tests that should succeed.
+			// AssertRuleSuccess (assembly);
 		}
 
 		[Test]
-		public void HasAttribute ()
+		public void Bad ()
 		{
-			Assert.IsTrue (assembly.HasAttribute ("System.Runtime.CompilerServices.RuntimeCompatibilityAttribute"), "System.Runtime.CompilerServices.RuntimeCompatibilityAttribute");
-			Assert.IsFalse (assembly.HasAttribute ("NUnit.Framework.TestFixtureAttribute"), "TestFixtureAttribute");
+			// TODO: Write tests that should fail.
+			// AssertRuleFailure (assembly);
 		}
 	}
 }
diff --git a/gendarme/tools/supported/templates/AssemblyTest.vstemplate b/gendarme/tools/supported/templates/AssemblyTest.vstemplate
new file mode 100644
index 0000000..9c8c0f0
--- /dev/null
+++ b/gendarme/tools/supported/templates/AssemblyTest.vstemplate
@@ -0,0 +1,27 @@
+<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
+  <TemplateData>
+    <DefaultName>Assembly Rule Test.cs</DefaultName>
+    <Name>Assembly Rule Test</Name>
+    <Description>A unit test for a gendarme assembly rule.</Description>
+    <ProjectType>CSharp</ProjectType>
+    <SortOrder>10</SortOrder>
+    <Icon>__TemplateIcon.ico</Icon>
+  </TemplateData>
+  <TemplateContent>
+    <References>
+      <Reference>
+        <Assembly>Mono.Cecil</Assembly>
+      </Reference>
+      <Reference>
+        <Assembly>Gendarme.Framework</Assembly>
+      </Reference>
+      <Reference>
+        <Assembly>Test.Rules</Assembly>
+      </Reference>
+      <Reference>
+        <Assembly>System.Core</Assembly>
+      </Reference>
+    </References>
+    <ProjectItem SubType="Code" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">AssemblyTest.cs</ProjectItem>
+  </TemplateContent>
+</VSTemplate>
\ No newline at end of file
diff --git a/gendarme/tools/supported/templates/Makefile.am b/gendarme/tools/supported/templates/Makefile.am
new file mode 100644
index 0000000..885e9e8
--- /dev/null
+++ b/gendarme/tools/supported/templates/Makefile.am
@@ -0,0 +1,102 @@
+EXTRA_DIST = README README.vsnet \
+	AssemblyRule.cs AssemblyRule.vstemplate \
+	AssemblyTest.cs AssemblyTest.vstemplate \
+	TypeRule.cs TypeRule.vstemplate \
+	TypeTest.cs TypeTest.vstemplate \
+	MethodRule.cs MethodRule.vstemplate \
+	MethodTest.cs MethodTest.vstemplate \
+	Templates.RuleProject.csproj Templates.RuleProject.vstemplate \
+	Templates.TestProject.csproj Templates.TestProject.vstemplate
+
+GENDARME_ICON = ../../../swf-wizard-runner/Resources/gendarme.ico
+
+vsnet-item-assembly-rule:
+	mkdir -p temp
+	cp $(GENDARME_ICON) temp/__TemplateIcon.ico
+	cp AssemblyRule.cs temp/AssemblyRule.cs
+	cp AssemblyRule.vstemplate temp/MyTemplate.vstemplate
+	zip -j "Templates\ItemTemplates\Visual C#\Gendarme Items\Assembly Rule.zip" temp/*
+	rm -rf temp/*
+
+vsnet-item-assembly-test:
+	mkdir -p temp
+	cp $(GENDARME_ICON) temp/__TemplateIcon.ico
+	cp AssemblyTest.cs temp/AssemblyTest.cs
+	cp AssemblyTest.vstemplate temp/MyTemplate.vstemplate
+	zip -j "Templates\ItemTemplates\Visual C#\Gendarme Items\Assembly Rule Test.zip" temp/*
+	rm -rf temp/*
+
+vsnet-item-method-rule:
+	mkdir -p temp
+	cp $(GENDARME_ICON) temp/__TemplateIcon.ico
+	cp MethodRule.cs temp/MethodRule.cs
+	cp MethodRule.vstemplate temp/MyTemplate.vstemplate
+	zip -j "Templates\ItemTemplates\Visual C#\Gendarme Items\Method Rule.zip" temp/*
+	rm -rf temp/*
+
+vsnet-item-method-test:
+	mkdir -p temp
+	cp $(GENDARME_ICON) temp/__TemplateIcon.ico
+	cp MethodTest.cs temp/MethodTest.cs
+	cp MethodTest.vstemplate temp/MyTemplate.vstemplate
+	zip -j "Templates\ItemTemplates\Visual C#\Gendarme Items\Method Rule Test.zip" temp/*
+	rm -rf temp/*
+
+vsnet-item-type-rule:
+	mkdir -p temp
+	cp $(GENDARME_ICON) temp/__TemplateIcon.ico
+	cp TypeRule.cs temp/TypeRule.cs
+	cp TypeRule.vstemplate temp/MyTemplate.vstemplate
+	zip -j "Templates\ItemTemplates\Visual C#\Gendarme Items\Type Rule.zip" temp/*
+	rm -rf temp/*
+
+vsnet-item-type-test:
+	mkdir -p temp
+	cp $(GENDARME_ICON) temp/__TemplateIcon.ico
+	cp TypeTest.cs temp/TypeTest.cs
+	cp TypeTest.vstemplate temp/MyTemplate.vstemplate
+	zip -j "Templates\ItemTemplates\Visual C#\Gendarme Items\Type Rule Test.zip" temp/*
+	rm -rf temp/*
+
+vsnet-item-templates: vsnet-item-assembly-rule vsnet-item-assembly-test \
+	vsnet-item-method-rule vsnet-item-method-test \
+	vsnet-item-type-rule vsnet-item-type-test
+
+vsnet-project-rules:
+	mkdir -p temp
+	cp $(GENDARME_ICON) temp/__TemplateIcon.ico
+	cp Templates.RuleProject.csproj temp/Templates.RuleProject.csproj
+	cp Templates.RuleProject.vstemplate temp/MyTemplate.vstemplate
+	zip -j "Templates\ProjectTemplates\Visual C#\Gendarme Projects\Rule Assembly.zip" temp/*
+	rm -rf temp/*
+
+vsnet-project-tests:
+	mkdir -p temp
+	cp $(GENDARME_ICON) temp/__TemplateIcon.ico
+	cp Templates.TestProject.csproj temp/Templates.TestProject.csproj
+	cp Templates.TestProject.vstemplate temp/MyTemplate.vstemplate
+	zip -j "Templates\ProjectTemplates\Visual C#\Gendarme Projects\Rule Test Assembly.zip" temp/*
+	rm -rf temp/*
+
+vsnet-project-templates: vsnet-project-rules vsnet-project-tests
+
+vsnet: vsnet-item-templates vsnet-project-templates
+	zip gendarme-vsnet-templates.zip README.vsnet \
+		"Templates\ItemTemplates\Visual C#\Gendarme Items\Assembly Rule.zip" \
+		"Templates\ItemTemplates\Visual C#\Gendarme Items\Assembly Rule Test.zip" \
+		"Templates\ItemTemplates\Visual C#\Gendarme Items\Method Rule.zip" \
+		"Templates\ItemTemplates\Visual C#\Gendarme Items\Method Rule Test.zip" \
+		"Templates\ItemTemplates\Visual C#\Gendarme Items\Type Rule.zip" \
+		"Templates\ItemTemplates\Visual C#\Gendarme Items\Type Rule Test.zip" \
+		"Templates\ProjectTemplates\Visual C#\Gendarme Projects\Rule Assembly.zip" \
+		"Templates\ProjectTemplates\Visual C#\Gendarme Projects\Rule Test Assembly.zip"
+	rmdir temp
+
+gendarme-vsnet-templates.zip: vsnet
+
+all: gendarme-vsnet-templates.zip
+
+clean:
+	rm -f *.zip
+	rm -rf temp
+
diff --git a/gendarme/tools/unsupported/mapper/Makefile.in b/gendarme/tools/supported/templates/Makefile.in
similarity index 58%
copy from gendarme/tools/unsupported/mapper/Makefile.in
copy to gendarme/tools/supported/templates/Makefile.in
index af1ceac..474f9d2 100644
--- a/gendarme/tools/unsupported/mapper/Makefile.in
+++ b/gendarme/tools/supported/templates/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -32,16 +51,22 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-subdir = gendarme/tools/unsupported/mapper
+subdir = gendarme/tools/supported/templates
 DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -188,13 +217,17 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-EXTRA_DIST = $(mapper_sources) fxcop.missing
-mapper_sources = \
-	../../../AssemblyStaticInfo.cs	\
-	../../../AssemblyInfo.cs	\
-	FxCopMapBuilder.cs		\
-	FxCopRule.cs
-
+EXTRA_DIST = README README.vsnet \
+	AssemblyRule.cs AssemblyRule.vstemplate \
+	AssemblyTest.cs AssemblyTest.vstemplate \
+	TypeRule.cs TypeRule.vstemplate \
+	TypeTest.cs TypeTest.vstemplate \
+	MethodRule.cs MethodRule.vstemplate \
+	MethodTest.cs MethodTest.vstemplate \
+	Templates.RuleProject.csproj Templates.RuleProject.vstemplate \
+	Templates.TestProject.csproj Templates.TestProject.vstemplate
+
+GENDARME_ICON = ../../../swf-wizard-runner/Resources/gendarme.ico
 all: all-am
 
 .SUFFIXES:
@@ -202,14 +235,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/tools/unsupported/mapper/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/tools/unsupported/mapper/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/tools/supported/templates/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/tools/supported/templates/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -227,6 +260,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -250,13 +284,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -274,16 +312,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -300,6 +344,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -308,18 +354,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -353,13 +409,96 @@ uninstall-am:
 	mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
 
 
-mapper.exe: $(mapper_sources)
-	$(GMCS) -debug $^ -out:$@ -r:System.Xml.Linq.dll -r:$(CECIL_ASM)
+vsnet-item-assembly-rule:
+	mkdir -p temp
+	cp $(GENDARME_ICON) temp/__TemplateIcon.ico
+	cp AssemblyRule.cs temp/AssemblyRule.cs
+	cp AssemblyRule.vstemplate temp/MyTemplate.vstemplate
+	zip -j "Templates\ItemTemplates\Visual C#\Gendarme Items\Assembly Rule.zip" temp/*
+	rm -rf temp/*
+
+vsnet-item-assembly-test:
+	mkdir -p temp
+	cp $(GENDARME_ICON) temp/__TemplateIcon.ico
+	cp AssemblyTest.cs temp/AssemblyTest.cs
+	cp AssemblyTest.vstemplate temp/MyTemplate.vstemplate
+	zip -j "Templates\ItemTemplates\Visual C#\Gendarme Items\Assembly Rule Test.zip" temp/*
+	rm -rf temp/*
+
+vsnet-item-method-rule:
+	mkdir -p temp
+	cp $(GENDARME_ICON) temp/__TemplateIcon.ico
+	cp MethodRule.cs temp/MethodRule.cs
+	cp MethodRule.vstemplate temp/MyTemplate.vstemplate
+	zip -j "Templates\ItemTemplates\Visual C#\Gendarme Items\Method Rule.zip" temp/*
+	rm -rf temp/*
+
+vsnet-item-method-test:
+	mkdir -p temp
+	cp $(GENDARME_ICON) temp/__TemplateIcon.ico
+	cp MethodTest.cs temp/MethodTest.cs
+	cp MethodTest.vstemplate temp/MyTemplate.vstemplate
+	zip -j "Templates\ItemTemplates\Visual C#\Gendarme Items\Method Rule Test.zip" temp/*
+	rm -rf temp/*
+
+vsnet-item-type-rule:
+	mkdir -p temp
+	cp $(GENDARME_ICON) temp/__TemplateIcon.ico
+	cp TypeRule.cs temp/TypeRule.cs
+	cp TypeRule.vstemplate temp/MyTemplate.vstemplate
+	zip -j "Templates\ItemTemplates\Visual C#\Gendarme Items\Type Rule.zip" temp/*
+	rm -rf temp/*
+
+vsnet-item-type-test:
+	mkdir -p temp
+	cp $(GENDARME_ICON) temp/__TemplateIcon.ico
+	cp TypeTest.cs temp/TypeTest.cs
+	cp TypeTest.vstemplate temp/MyTemplate.vstemplate
+	zip -j "Templates\ItemTemplates\Visual C#\Gendarme Items\Type Rule Test.zip" temp/*
+	rm -rf temp/*
+
+vsnet-item-templates: vsnet-item-assembly-rule vsnet-item-assembly-test \
+	vsnet-item-method-rule vsnet-item-method-test \
+	vsnet-item-type-rule vsnet-item-type-test
+
+vsnet-project-rules:
+	mkdir -p temp
+	cp $(GENDARME_ICON) temp/__TemplateIcon.ico
+	cp Templates.RuleProject.csproj temp/Templates.RuleProject.csproj
+	cp Templates.RuleProject.vstemplate temp/MyTemplate.vstemplate
+	zip -j "Templates\ProjectTemplates\Visual C#\Gendarme Projects\Rule Assembly.zip" temp/*
+	rm -rf temp/*
+
+vsnet-project-tests:
+	mkdir -p temp
+	cp $(GENDARME_ICON) temp/__TemplateIcon.ico
+	cp Templates.TestProject.csproj temp/Templates.TestProject.csproj
+	cp Templates.TestProject.vstemplate temp/MyTemplate.vstemplate
+	zip -j "Templates\ProjectTemplates\Visual C#\Gendarme Projects\Rule Test Assembly.zip" temp/*
+	rm -rf temp/*
+
+vsnet-project-templates: vsnet-project-rules vsnet-project-tests
+
+vsnet: vsnet-item-templates vsnet-project-templates
+	zip gendarme-vsnet-templates.zip README.vsnet \
+		"Templates\ItemTemplates\Visual C#\Gendarme Items\Assembly Rule.zip" \
+		"Templates\ItemTemplates\Visual C#\Gendarme Items\Assembly Rule Test.zip" \
+		"Templates\ItemTemplates\Visual C#\Gendarme Items\Method Rule.zip" \
+		"Templates\ItemTemplates\Visual C#\Gendarme Items\Method Rule Test.zip" \
+		"Templates\ItemTemplates\Visual C#\Gendarme Items\Type Rule.zip" \
+		"Templates\ItemTemplates\Visual C#\Gendarme Items\Type Rule Test.zip" \
+		"Templates\ProjectTemplates\Visual C#\Gendarme Projects\Rule Assembly.zip" \
+		"Templates\ProjectTemplates\Visual C#\Gendarme Projects\Rule Test Assembly.zip"
+	rmdir temp
+
+gendarme-vsnet-templates.zip: vsnet
+
+all: gendarme-vsnet-templates.zip
 
 clean:
-	rm -f mapper.exe*
+	rm -f *.zip
+	rm -rf temp
 
-all: mapper.exe
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/rules/Gendarme.Rules.Design.Generic/AvoidExcessiveParametersOnGenericTypesRule.cs b/gendarme/tools/supported/templates/MethodRule.cs
similarity index 60%
copy from gendarme/rules/Gendarme.Rules.Design.Generic/AvoidExcessiveParametersOnGenericTypesRule.cs
copy to gendarme/tools/supported/templates/MethodRule.cs
index e5a8353..bd0911a 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Generic/AvoidExcessiveParametersOnGenericTypesRule.cs
+++ b/gendarme/tools/supported/templates/MethodRule.cs
@@ -1,10 +1,10 @@
 // 
-// Gendarme.Rules.Design.Generic.AvoidExcessiveParametersOnGenericTypesRule
+// $rootnamespace$.$safeitemname$
 //
 // Authors:
-//	Nicholas Rioux
+//	$name$ <$email$>
 //
-// Copyright (C) 2010 Nicholas Rioux
+// Copyright (C) $year$ $name$
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
@@ -34,39 +34,32 @@ using Gendarme.Framework.Engines;
 using Gendarme.Framework.Helpers;
 using Gendarme.Framework.Rocks;
 
-namespace Gendarme.Rules.Design.Generic {
+namespace $rootnamespace$ {
 
 	/// <summary>
-	/// A type should not have more than two generic parameters.
+	/// TODO: Add a summary of the rule.
 	/// </summary>
 	/// <example>
 	/// Bad example:
 	/// <code>
-	/// public class BadClass<A, B, C> {
-	/// }
+	/// TODO: Add an example where the rule would fail.
 	/// </code>
 	/// </example>
 	/// <example>
 	/// Good example:
 	/// <code>
-	/// public class GoodClass<A, B> {
-	/// }
+	/// TODO: Show how to fix the bad example.
 	/// </code>
 	/// </example>
 
-	[Problem ("A type has more than two generic parameters.")]
-	[Solution ("Redesign the type so it doesn't take more than two generic parameters.")]
-	[FxCopCompatibility ("Microsoft.Design", "CA1005:AvoidExcessiveParametersOnGenericTypes")]
-	public class AvoidExcessiveParametersOnGenericTypesRule : Rule, ITypeRule {
-		public RuleResult CheckType (TypeDefinition type)
+	// TODO: Describe the problem and solution
+	[Problem ("")]
+	[Solution ("")]
+	public class $safeitemname$ : Rule, IMethodRule {
+		public RuleResult CheckMethod (MethodDefinition method)
 		{
-			if (!type.IsClass || !type.HasGenericParameters || !type.IsVisible ())
-				return RuleResult.DoesNotApply;
-
-			if (type.GenericParameters.Count > 2)
-				Runner.Report (type, Severity.Medium, Confidence.Total);
-
-			return Runner.CurrentRuleResult;
+			// TODO: Write the rule.
+			return RuleResult.Success;
 		}
 	}
 }
diff --git a/gendarme/tools/supported/templates/MethodRule.vstemplate b/gendarme/tools/supported/templates/MethodRule.vstemplate
new file mode 100644
index 0000000..5942dbd
--- /dev/null
+++ b/gendarme/tools/supported/templates/MethodRule.vstemplate
@@ -0,0 +1,24 @@
+<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
+  <TemplateData>
+    <DefaultName>Method Rule.cs</DefaultName>
+    <Name>Method Rule</Name>
+    <Description>A gendarme rule that checks a method.</Description>
+    <ProjectType>CSharp</ProjectType>
+    <SortOrder>10</SortOrder>
+    <Icon>__TemplateIcon.ico</Icon>
+  </TemplateData>
+  <TemplateContent>
+    <References>
+      <Reference>
+        <Assembly>Mono.Cecil</Assembly>
+      </Reference>
+      <Reference>
+        <Assembly>Gendarme.Framework</Assembly>
+      </Reference>
+      <Reference>
+        <Assembly>System.Core</Assembly>
+      </Reference>
+    </References>
+    <ProjectItem SubType="Code" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">MethodRule.cs</ProjectItem>
+  </TemplateContent>
+</VSTemplate>
\ No newline at end of file
diff --git a/gendarme/framework/Test/Gendarme.Framework.Rocks/AssemblyRocksTest.cs b/gendarme/tools/supported/templates/MethodTest.cs
similarity index 58%
copy from gendarme/framework/Test/Gendarme.Framework.Rocks/AssemblyRocksTest.cs
copy to gendarme/tools/supported/templates/MethodTest.cs
index c4bbafd..4f70412 100644
--- a/gendarme/framework/Test/Gendarme.Framework.Rocks/AssemblyRocksTest.cs
+++ b/gendarme/tools/supported/templates/MethodTest.cs
@@ -1,10 +1,10 @@
 // 
-// Unit tests for AssemblyRocks
+// $rootnamespace$.$safeitemname$
 //
 // Authors:
-//	Sebastien Pouliot  <sebastien at ximian.com>
+//	$name$ <$email$>
 //
-// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
+// Copyright (C) $year$ $name$
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
@@ -27,38 +27,38 @@
 using System;
 using System.Reflection;
 
-using Gendarme.Framework;
-using Gendarme.Framework.Rocks;
-
 using Mono.Cecil;
+// TODO: Add using for the project of the rule being tested.
+// using Gendarme.Rules. ;
+
 using NUnit.Framework;
+using Test.Rules.Fixtures;
+using Test.Rules.Helpers;
+using Test.Rules.Definitions;
 
-namespace Test.Framework.Rocks {
+namespace $rootnamespace$ {
 
 	[TestFixture]
-	public class AssemblyRocksTest {
-
-		private AssemblyDefinition assembly;
-
-		[TestFixtureSetUp]
-		public void FixtureSetUp ()
+	public class $safeitemname$ : MethodRuleTestFixture</* TODO: Add rule's type */> {
+		[Test]
+		public void DoesNotApply ()
 		{
-			string unit = Assembly.GetExecutingAssembly ().Location;
-			assembly = AssemblyDefinition.ReadAssembly (unit);
+			// TODO: Write tests that don't apply.
+			// AssertRuleDoesNotApply (method);
 		}
 
 		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void HasAttribute_Null ()
+		public void Good ()
 		{
-			assembly.HasAttribute (null);
+			// TODO: Write tests that should succeed.
+			// AssertRuleSuccess (method);
 		}
 
 		[Test]
-		public void HasAttribute ()
+		public void Bad ()
 		{
-			Assert.IsTrue (assembly.HasAttribute ("System.Runtime.CompilerServices.RuntimeCompatibilityAttribute"), "System.Runtime.CompilerServices.RuntimeCompatibilityAttribute");
-			Assert.IsFalse (assembly.HasAttribute ("NUnit.Framework.TestFixtureAttribute"), "TestFixtureAttribute");
+			// TODO: Write tests that should fail.
+			// AssertRuleFailure (method);
 		}
 	}
 }
diff --git a/gendarme/tools/supported/templates/MethodTest.vstemplate b/gendarme/tools/supported/templates/MethodTest.vstemplate
new file mode 100644
index 0000000..c9e9cd7
--- /dev/null
+++ b/gendarme/tools/supported/templates/MethodTest.vstemplate
@@ -0,0 +1,27 @@
+<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
+  <TemplateData>
+    <DefaultName>Method Rule Test.cs</DefaultName>
+    <Name>Method Rule Test</Name>
+    <Description>A unit test for a gendarme method rule.</Description>
+    <ProjectType>CSharp</ProjectType>
+    <SortOrder>10</SortOrder>
+    <Icon>__TemplateIcon.ico</Icon>
+  </TemplateData>
+  <TemplateContent>
+    <References>
+      <Reference>
+        <Assembly>Mono.Cecil</Assembly>
+      </Reference>
+      <Reference>
+        <Assembly>Gendarme.Framework</Assembly>
+      </Reference>
+      <Reference>
+        <Assembly>Test.Rules</Assembly>
+      </Reference>
+      <Reference>
+        <Assembly>System.Core</Assembly>
+      </Reference>
+    </References>
+    <ProjectItem SubType="Code" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">MethodTest.cs</ProjectItem>
+  </TemplateContent>
+</VSTemplate>
\ No newline at end of file
diff --git a/gendarme/tools/supported/templates/README b/gendarme/tools/supported/templates/README
new file mode 100644
index 0000000..13a814b
--- /dev/null
+++ b/gendarme/tools/supported/templates/README
@@ -0,0 +1,8 @@
+Here are uncompressed C# templates for Gendarme rules, tests and projects.
+
+To build the compressed templates required by VS.NET (2008/2010) just issue a:
+
+% make vsnet
+
+and read the README.vsnet file (also part of the archive).
+
diff --git a/gendarme/tools/supported/templates/README.vsnet b/gendarme/tools/supported/templates/README.vsnet
new file mode 100644
index 0000000..9ffcf5e
--- /dev/null
+++ b/gendarme/tools/supported/templates/README.vsnet
@@ -0,0 +1,12 @@
+Gendarme Item/Project Templates for Visual Studio
+
+To Install:
+- Extract this file to your My Documents\Visual Studio 20x folder.
+- Optionally, open the .vstemplate file in each item template.
+  In the <TemplateContent> section, add the following:
+    <CustomParameters>
+        <CustomParameter Name="$name$" Value="(your name)"/>
+        <CustomParameter Name="$email$" Value="(your email)"/>
+    </CustomParameters>
+  This will allow your name and e-mail address to be automatically
+  entered into rules and tests you create.
\ No newline at end of file
diff --git a/gendarme/tools/unsupported/typeref/typeref.csproj b/gendarme/tools/supported/templates/Templates.RuleProject.csproj
similarity index 63%
copy from gendarme/tools/unsupported/typeref/typeref.csproj
copy to gendarme/tools/supported/templates/Templates.RuleProject.csproj
index 25854ee..4208f3e 100644
--- a/gendarme/tools/unsupported/typeref/typeref.csproj
+++ b/gendarme/tools/supported/templates/Templates.RuleProject.csproj
@@ -1,19 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
     <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{2262381F-297D-4AC7-8509-91DBF2429EB9}</ProjectGuid>
+    <ProjectGuid>{BDADA65A-2C52-42C3-A7E4-A824FCDF4C9D}</ProjectGuid>
     <OutputType>Exe</OutputType>
     <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>typeref</RootNamespace>
-    <AssemblyName>typeref</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <RootNamespace>$safeprojectname$</RootNamespace>
+    <AssemblyName>$safeprojectname$</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
     <FileAlignment>512</FileAlignment>
   </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
     <DebugSymbols>true</DebugSymbols>
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
@@ -22,7 +24,8 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
     <OutputPath>bin\Release\</OutputPath>
@@ -32,31 +35,23 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="..\..\..\AssemblyStaticInfo.cs">
-      <Link>AssemblyStaticInfo.cs</Link>
-    </Compile>
-    <Compile Include="typeref.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\..\..\..\cecil\Mono.Cecil.csproj">
+    <ProjectReference Include="..\..\..\cecil\Mono.Cecil.csproj">
       <Project>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</Project>
       <Name>Mono.Cecil</Name>
     </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <Folder Include="Properties\" />
+    <ProjectReference Include="..\framework\Gendarme.Framework.csproj">
+      <Project>{CD6818D5-B398-486C-B180-92A07B143AFD}</Project>
+      <Name>Gendarme.Framework</Name>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
   -->
 </Project>
\ No newline at end of file
diff --git a/gendarme/tools/supported/templates/Templates.RuleProject.vstemplate b/gendarme/tools/supported/templates/Templates.RuleProject.vstemplate
new file mode 100644
index 0000000..41afb51
--- /dev/null
+++ b/gendarme/tools/supported/templates/Templates.RuleProject.vstemplate
@@ -0,0 +1,19 @@
+<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
+  <TemplateData>
+    <Name>Rule Assembly</Name>
+    <Description>An assembly containing gendarme rules.</Description>
+    <ProjectType>CSharp</ProjectType>
+    <ProjectSubType>
+    </ProjectSubType>
+    <SortOrder>1000</SortOrder>
+    <CreateNewFolder>true</CreateNewFolder>
+    <DefaultName>Rule Assembly</DefaultName>
+    <ProvideDefaultName>true</ProvideDefaultName>
+    <LocationField>Enabled</LocationField>
+    <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
+    <Icon>__TemplateIcon.ico</Icon>
+  </TemplateData>
+  <TemplateContent>
+    <Project TargetFileName="Templates.RuleProject.csproj" File="Templates.RuleProject.csproj" ReplaceParameters="true" />
+  </TemplateContent>
+</VSTemplate>
\ No newline at end of file
diff --git a/gendarme/tools/unsupported/typeref/typeref.csproj b/gendarme/tools/supported/templates/Templates.TestProject.csproj
similarity index 56%
copy from gendarme/tools/unsupported/typeref/typeref.csproj
copy to gendarme/tools/supported/templates/Templates.TestProject.csproj
index 25854ee..6dd3298 100644
--- a/gendarme/tools/unsupported/typeref/typeref.csproj
+++ b/gendarme/tools/supported/templates/Templates.TestProject.csproj
@@ -1,19 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
     <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{2262381F-297D-4AC7-8509-91DBF2429EB9}</ProjectGuid>
+    <ProjectGuid>{0B35C07C-19E8-40D0-8634-FE3929DBB8C7}</ProjectGuid>
     <OutputType>Exe</OutputType>
     <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>typeref</RootNamespace>
-    <AssemblyName>typeref</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <RootNamespace>$safeprojectname$</RootNamespace>
+    <AssemblyName>$safeprojectname$</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
     <FileAlignment>512</FileAlignment>
   </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
     <DebugSymbols>true</DebugSymbols>
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
@@ -22,7 +24,8 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
     <OutputPath>bin\Release\</OutputPath>
@@ -31,32 +34,29 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\..\..\AssemblyStaticInfo.cs">
-      <Link>AssemblyStaticInfo.cs</Link>
-    </Compile>
-    <Compile Include="typeref.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\..\..\..\cecil\Mono.Cecil.csproj">
+    <ProjectReference Include="..\..\..\cecil\Mono.Cecil.csproj">
       <Project>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</Project>
       <Name>Mono.Cecil</Name>
     </ProjectReference>
+    <ProjectReference Include="..\framework\Gendarme.Framework.csproj">
+      <Project>{CD6818D5-B398-486C-B180-92A07B143AFD}</Project>
+      <Name>Gendarme.Framework</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\rules\Test.Rules\Test.Rules.csproj">
+      <Project>{069148AF-86AB-4EE3-BFB9-429AE722461F}</Project>
+      <Name>Test.Rules</Name>
+    </ProjectReference>
   </ItemGroup>
   <ItemGroup>
-    <Folder Include="Properties\" />
+    <Reference Include="nunit.framework, Version=2.5.3.9345, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL" />
+    <Reference Include="System" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
   -->
 </Project>
\ No newline at end of file
diff --git a/gendarme/tools/supported/templates/Templates.TestProject.vstemplate b/gendarme/tools/supported/templates/Templates.TestProject.vstemplate
new file mode 100644
index 0000000..2d87449
--- /dev/null
+++ b/gendarme/tools/supported/templates/Templates.TestProject.vstemplate
@@ -0,0 +1,19 @@
+<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
+  <TemplateData>
+    <Name>Rule Test Assembly</Name>
+    <Description>An assembly of unit tests for gendarme rules.</Description>
+    <ProjectType>CSharp</ProjectType>
+    <ProjectSubType>
+    </ProjectSubType>
+    <SortOrder>1000</SortOrder>
+    <CreateNewFolder>true</CreateNewFolder>
+    <DefaultName>Rule Test Assembly</DefaultName>
+    <ProvideDefaultName>true</ProvideDefaultName>
+    <LocationField>Enabled</LocationField>
+    <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
+    <Icon>__TemplateIcon.ico</Icon>
+  </TemplateData>
+  <TemplateContent>
+    <Project TargetFileName="Templates.TestProject.csproj" File="Templates.TestProject.csproj" ReplaceParameters="true" />
+  </TemplateContent>
+</VSTemplate>
\ No newline at end of file
diff --git a/gendarme/rules/Gendarme.Rules.Design.Generic/AvoidExcessiveParametersOnGenericTypesRule.cs b/gendarme/tools/supported/templates/TypeRule.cs
similarity index 62%
copy from gendarme/rules/Gendarme.Rules.Design.Generic/AvoidExcessiveParametersOnGenericTypesRule.cs
copy to gendarme/tools/supported/templates/TypeRule.cs
index e5a8353..fce1256 100644
--- a/gendarme/rules/Gendarme.Rules.Design.Generic/AvoidExcessiveParametersOnGenericTypesRule.cs
+++ b/gendarme/tools/supported/templates/TypeRule.cs
@@ -1,10 +1,10 @@
 // 
-// Gendarme.Rules.Design.Generic.AvoidExcessiveParametersOnGenericTypesRule
+// $rootnamespace$.$safeitemname$
 //
 // Authors:
-//	Nicholas Rioux
+//	$name$ <$email$>
 //
-// Copyright (C) 2010 Nicholas Rioux
+// Copyright (C) $year$ $name$
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
@@ -34,39 +34,32 @@ using Gendarme.Framework.Engines;
 using Gendarme.Framework.Helpers;
 using Gendarme.Framework.Rocks;
 
-namespace Gendarme.Rules.Design.Generic {
+namespace $rootnamespace$ {
 
 	/// <summary>
-	/// A type should not have more than two generic parameters.
+	/// TODO: Add a summary of the rule.
 	/// </summary>
 	/// <example>
 	/// Bad example:
 	/// <code>
-	/// public class BadClass<A, B, C> {
-	/// }
+	/// TODO: Add an example where the rule would fail.
 	/// </code>
 	/// </example>
 	/// <example>
 	/// Good example:
 	/// <code>
-	/// public class GoodClass<A, B> {
-	/// }
+	/// TODO: Show how to fix the bad example.
 	/// </code>
 	/// </example>
 
-	[Problem ("A type has more than two generic parameters.")]
-	[Solution ("Redesign the type so it doesn't take more than two generic parameters.")]
-	[FxCopCompatibility ("Microsoft.Design", "CA1005:AvoidExcessiveParametersOnGenericTypes")]
-	public class AvoidExcessiveParametersOnGenericTypesRule : Rule, ITypeRule {
+	// TODO: Describe the problem and solution
+	[Problem ("")]
+	[Solution ("")]
+	public class $safeitemname$ : Rule, ITypeRule {
 		public RuleResult CheckType (TypeDefinition type)
 		{
-			if (!type.IsClass || !type.HasGenericParameters || !type.IsVisible ())
-				return RuleResult.DoesNotApply;
-
-			if (type.GenericParameters.Count > 2)
-				Runner.Report (type, Severity.Medium, Confidence.Total);
-
-			return Runner.CurrentRuleResult;
+			// TODO: Write the rule.
+			return RuleResult.Success;
 		}
 	}
 }
diff --git a/gendarme/tools/supported/templates/TypeRule.vstemplate b/gendarme/tools/supported/templates/TypeRule.vstemplate
new file mode 100644
index 0000000..3a0e9c1
--- /dev/null
+++ b/gendarme/tools/supported/templates/TypeRule.vstemplate
@@ -0,0 +1,24 @@
+<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
+  <TemplateData>
+    <DefaultName>Type Rule.cs</DefaultName>
+    <Name>Type Rule</Name>
+    <Description>A gendarme rule that checks a type.</Description>
+    <ProjectType>CSharp</ProjectType>
+    <SortOrder>10</SortOrder>
+    <Icon>__TemplateIcon.ico</Icon>
+  </TemplateData>
+  <TemplateContent>
+    <References>
+      <Reference>
+        <Assembly>Mono.Cecil</Assembly>
+      </Reference>
+      <Reference>
+        <Assembly>Gendarme.Framework</Assembly>
+      </Reference>
+      <Reference>
+        <Assembly>System.Core</Assembly>
+      </Reference>
+    </References>
+    <ProjectItem SubType="Code" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">TypeRule.cs</ProjectItem>
+  </TemplateContent>
+</VSTemplate>
\ No newline at end of file
diff --git a/gendarme/framework/Test/Gendarme.Framework.Rocks/AssemblyRocksTest.cs b/gendarme/tools/supported/templates/TypeTest.cs
similarity index 58%
copy from gendarme/framework/Test/Gendarme.Framework.Rocks/AssemblyRocksTest.cs
copy to gendarme/tools/supported/templates/TypeTest.cs
index c4bbafd..92af871 100644
--- a/gendarme/framework/Test/Gendarme.Framework.Rocks/AssemblyRocksTest.cs
+++ b/gendarme/tools/supported/templates/TypeTest.cs
@@ -1,10 +1,10 @@
 // 
-// Unit tests for AssemblyRocks
+// $rootnamespace$.$safeitemname$
 //
 // Authors:
-//	Sebastien Pouliot  <sebastien at ximian.com>
+//	$name$ <$email$>
 //
-// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
+// Copyright (C) $year$ $name$
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
@@ -27,38 +27,38 @@
 using System;
 using System.Reflection;
 
-using Gendarme.Framework;
-using Gendarme.Framework.Rocks;
-
 using Mono.Cecil;
+// TODO: Add using for the project of the rule being tested.
+// using Gendarme.Rules. ;
+
 using NUnit.Framework;
+using Test.Rules.Fixtures;
+using Test.Rules.Helpers;
+using Test.Rules.Definitions;
 
-namespace Test.Framework.Rocks {
+namespace $rootnamespace$ {
 
 	[TestFixture]
-	public class AssemblyRocksTest {
-
-		private AssemblyDefinition assembly;
-
-		[TestFixtureSetUp]
-		public void FixtureSetUp ()
+	public class $safeitemname$ : TypeRuleTestFixture</* TODO: Add rule's type */> {
+		[Test]
+		public void DoesNotApply ()
 		{
-			string unit = Assembly.GetExecutingAssembly ().Location;
-			assembly = AssemblyDefinition.ReadAssembly (unit);
+			// TODO: Write tests that don't apply.
+			// AssertRuleDoesNotApply<type> ();
 		}
 
 		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void HasAttribute_Null ()
+		public void Good ()
 		{
-			assembly.HasAttribute (null);
+			// TODO: Write tests that should succeed.
+			// AssertRuleSuccess<type> ();
 		}
 
 		[Test]
-		public void HasAttribute ()
+		public void Bad ()
 		{
-			Assert.IsTrue (assembly.HasAttribute ("System.Runtime.CompilerServices.RuntimeCompatibilityAttribute"), "System.Runtime.CompilerServices.RuntimeCompatibilityAttribute");
-			Assert.IsFalse (assembly.HasAttribute ("NUnit.Framework.TestFixtureAttribute"), "TestFixtureAttribute");
+			// TODO: Write tests that should fail.
+			// AssertRuleFailure<type> ();
 		}
 	}
 }
diff --git a/gendarme/tools/supported/templates/TypeTest.vstemplate b/gendarme/tools/supported/templates/TypeTest.vstemplate
new file mode 100644
index 0000000..2e0c866
--- /dev/null
+++ b/gendarme/tools/supported/templates/TypeTest.vstemplate
@@ -0,0 +1,27 @@
+<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
+  <TemplateData>
+    <DefaultName>Type Rule Test.cs</DefaultName>
+    <Name>Type Rule Test</Name>
+    <Description>A unit test for a gendarme type rule.</Description>
+    <ProjectType>CSharp</ProjectType>
+    <SortOrder>10</SortOrder>
+    <Icon>__TemplateIcon.ico</Icon>
+  </TemplateData>
+  <TemplateContent>
+    <References>
+      <Reference>
+        <Assembly>Mono.Cecil</Assembly>
+      </Reference>
+      <Reference>
+        <Assembly>Gendarme.Framework</Assembly>
+      </Reference>
+      <Reference>
+        <Assembly>Test.Rules</Assembly>
+      </Reference>
+      <Reference>
+        <Assembly>System.Core</Assembly>
+      </Reference>
+    </References>
+    <ProjectItem SubType="Code" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">TypeTest.cs</ProjectItem>
+  </TemplateContent>
+</VSTemplate>
\ No newline at end of file
diff --git a/gendarme/tools/unsupported/Makefile.in b/gendarme/tools/unsupported/Makefile.in
index 3e81748..1b069aa 100644
--- a/gendarme/tools/unsupported/Makefile.in
+++ b/gendarme/tools/unsupported/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,8 +57,9 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -49,12 +69,45 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
 AMTAR = @AMTAR@
@@ -115,6 +168,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -128,9 +182,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -208,14 +265,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/tools/unsupported/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/tools/unsupported/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/tools/unsupported/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/tools/unsupported/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -233,6 +290,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -241,7 +299,7 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -258,7 +316,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -266,7 +324,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -292,16 +350,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -309,14 +367,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -328,7 +386,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -337,29 +395,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -380,29 +443,41 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -422,16 +497,22 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -450,6 +531,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -458,18 +541,28 @@ install-data-am:
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -490,8 +583,8 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic ctags \
@@ -506,6 +599,7 @@ uninstall-am:
 	mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
 	tags-recursive uninstall uninstall-am
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/tools/unsupported/mapper/FxCopMapBuilder.cs b/gendarme/tools/unsupported/mapper/FxCopMapBuilder.cs
index 7d2eee2..c62919f 100644
--- a/gendarme/tools/unsupported/mapper/FxCopMapBuilder.cs
+++ b/gendarme/tools/unsupported/mapper/FxCopMapBuilder.cs
@@ -222,7 +222,8 @@ namespace FxCopMapBuilder {
 					idName [0], idName [1], rule.Attribute ("category").Value);
 			}
 			if (rule.Attribute ("type").Value == "gendarme") {
-				return String.Format ("[[{0}]]", rule.Attribute ("id").Value);
+				return String.Format ("[[{1}|{0}.{1}{2}]]", rule.Attribute ("category").Value, 
+					rule.Attribute ("id").Value, "(2.10)");
 			}
 			return String.Empty;
 		}
diff --git a/gendarme/tools/unsupported/mapper/Makefile.am b/gendarme/tools/unsupported/mapper/Makefile.am
index a283bee..ae79ba4 100644
--- a/gendarme/tools/unsupported/mapper/Makefile.am
+++ b/gendarme/tools/unsupported/mapper/Makefile.am
@@ -7,7 +7,7 @@ mapper_sources =  \
 	FxCopRule.cs
 
 mapper.exe: $(mapper_sources)
-	$(GMCS) -debug $^ -out:$@ -r:System.Xml.Linq.dll -r:$(CECIL_ASM)
+	$(MCS) -debug $^ -out:$@ -r:System.Xml.Linq.dll -r:$(CECIL_ASM)
 
 clean:
 	rm -f mapper.exe*
diff --git a/gendarme/tools/unsupported/mapper/Makefile.in b/gendarme/tools/unsupported/mapper/Makefile.in
index af1ceac..1e3fe4b 100644
--- a/gendarme/tools/unsupported/mapper/Makefile.in
+++ b/gendarme/tools/unsupported/mapper/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -202,14 +231,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/tools/unsupported/mapper/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/tools/unsupported/mapper/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/tools/unsupported/mapper/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/tools/unsupported/mapper/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -227,6 +256,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -250,13 +280,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -274,16 +308,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -300,6 +340,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -308,18 +350,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -354,12 +406,13 @@ uninstall-am:
 
 
 mapper.exe: $(mapper_sources)
-	$(GMCS) -debug $^ -out:$@ -r:System.Xml.Linq.dll -r:$(CECIL_ASM)
+	$(MCS) -debug $^ -out:$@ -r:System.Xml.Linq.dll -r:$(CECIL_ASM)
 
 clean:
 	rm -f mapper.exe*
 
 all: mapper.exe
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/tools/unsupported/mapper/fxcop.missing b/gendarme/tools/unsupported/mapper/fxcop.missing
index 556c2fc..919df45 100644
--- a/gendarme/tools/unsupported/mapper/fxcop.missing
+++ b/gendarme/tools/unsupported/mapper/fxcop.missing
@@ -3,7 +3,6 @@ CA1025	Replace repetitive arguments with params array
 CA1026	Default parameters should not be used                                                        http://msdn.microsoft.com/en-us/library/ms182135.aspx
 CA1033	Interface methods should be callable by child types                                          http://msdn.microsoft.com/en-us/library/ms182153.aspx
 CA1046	Do not overload operator equals on reference types                                           http://msdn.microsoft.com/en-us/library/ms182145.aspx
-CA1052	Static holder types should be sealed                                                         http://msdn.microsoft.com/en-us/library/ms182168.aspx
 CA1058	Types should not extend certain base types                                                   http://msdn.microsoft.com/en-us/library/ms182171.aspx
 CA1061	Do not hide base class methods                                                               http://msdn.microsoft.com/en-us/library/ms182143.aspx
 CA1063	Implement IDisposable correctly                                                              http://msdn.microsoft.com/en-us/library/ms244737.aspx
@@ -14,10 +13,7 @@ CA1300	Specify MessageBoxOptions
 CA1301	Avoid duplicate accelerators                                                                 http://msdn.microsoft.com/en-us/library/ms182185.aspx
 CA1302	Do not hardcode locale specific strings                                                      http://msdn.microsoft.com/en-us/library/ms182186.aspx
 CA1303	Do not pass literals as localized parameters                                                 http://msdn.microsoft.com/en-us/library/ms182187.aspx
-CA1304	Specify CultureInfo                                                                          http://msdn.microsoft.com/en-us/library/ms182189.aspx
-CA1305	Specify IFormatProvider                                                                      http://msdn.microsoft.com/en-us/library/ms182190.aspx
 CA1306	Set locale for data types                                                                    http://msdn.microsoft.com/en-us/library/ms182188.aspx
-CA1307	Specify StringComparison                                                                     http://msdn.microsoft.com/en-us/library/bb386080.aspx
 CA1308	Normalize strings to uppercase                                                               http://msdn.microsoft.com/en-us/library/bb386042.aspx
 CA1309	Use ordinal StringComparison                                                                 http://msdn.microsoft.com/en-us/library/bb385972.aspx
 
@@ -40,7 +36,6 @@ CA1717	Only FlagsAttribute enums should have plural names
 CA1719	Parameter names should not match member names                                                http://msdn.microsoft.com/en-us/library/ms182252.aspx
 CA1720	Identifiers should not contain type names                                                    http://msdn.microsoft.com/en-us/library/bb531486.aspx
 CA1721	Property names should not match get methods                                                  http://msdn.microsoft.com/en-us/library/ms182253.aspx
-CA1724	Type Names Should Not Match Namespaces                                                       http://msdn.microsoft.com/en-us/library/ms182257.aspx
 
 Microsoft.Performance
 CA1810	Initialize reference type static fields inline                                               http://msdn.microsoft.com/en-us/library/ms182275.aspx
@@ -97,9 +92,6 @@ CA2207	Initialize value type static fields inline
 CA2212	Do not mark serviced components with WebMethod                                               http://msdn.microsoft.com/en-us/library/ms182336.aspx
 CA2215	Dispose methods should call base class dispose                                               http://msdn.microsoft.com/en-us/library/ms182330.aspx
 CA2217	Do not mark enums with FlagsAttribute                                                        http://msdn.microsoft.com/en-us/library/ms182335.aspx
-CA2219	Do not raise exceptions in exception clauses                                                 http://msdn.microsoft.com/en-us/library/bb386041.aspx
-CA2222	Do not decrease inherited member visibility                                                  http://msdn.microsoft.com/en-us/library/ms182332.aspx
 CA2223	Members should differ by more than return type                                               http://msdn.microsoft.com/en-us/library/ms182352.aspx
-CA2227	Collection properties should be read only                                                    http://msdn.microsoft.com/en-us/library/ms182327.aspx
 CA2228	Do not ship unreleased resource formats                                                      http://msdn.microsoft.com/en-us/library/ms182339.aspx
 CA2233	Operations should not overflow                                                               http://msdn.microsoft.com/en-us/library/ms182354.aspx
diff --git a/gendarme/tools/unsupported/typeref/Makefile.am b/gendarme/tools/unsupported/typeref/Makefile.am
index 436189e..e1ba4d3 100644
--- a/gendarme/tools/unsupported/typeref/Makefile.am
+++ b/gendarme/tools/unsupported/typeref/Makefile.am
@@ -6,7 +6,7 @@ typeref_sources =  \
 	typeref.cs
 
 typeref.exe:  $(typeref_sources)
-	$(GMCS) -debug $^ -out:$@ -r:$(CECIL_ASM)
+	$(MCS) -debug $^ -out:$@ -r:$(CECIL_ASM)
 
 clean:
 	rm -f typeref.exe*
diff --git a/gendarme/tools/unsupported/typeref/Makefile.in b/gendarme/tools/unsupported/typeref/Makefile.in
index a641cc1..992e22f 100644
--- a/gendarme/tools/unsupported/typeref/Makefile.in
+++ b/gendarme/tools/unsupported/typeref/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -201,14 +230,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/tools/unsupported/typeref/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/tools/unsupported/typeref/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/tools/unsupported/typeref/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/tools/unsupported/typeref/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -226,6 +255,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -249,13 +279,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -273,16 +307,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -299,6 +339,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -307,18 +349,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -353,12 +405,13 @@ uninstall-am:
 
 
 typeref.exe:  $(typeref_sources)
-	$(GMCS) -debug $^ -out:$@ -r:$(CECIL_ASM)
+	$(MCS) -debug $^ -out:$@ -r:$(CECIL_ASM)
 
 clean:
 	rm -f typeref.exe*
 
 all: typeref.exe
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/tools/unsupported/typeref/typeref.csproj b/gendarme/tools/unsupported/typeref/typeref.csproj
index 25854ee..09d805d 100644
--- a/gendarme/tools/unsupported/typeref/typeref.csproj
+++ b/gendarme/tools/unsupported/typeref/typeref.csproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,28 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>typeref</RootNamespace>
     <AssemblyName>typeref</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -21,6 +41,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -29,6 +50,7 @@
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -51,6 +73,23 @@
   <ItemGroup>
     <Folder Include="Properties\" />
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/gendarme/tools/unsupported/xmldoc2wiki/Makefile.am b/gendarme/tools/unsupported/xmldoc2wiki/Makefile.am
index ff0167b..55fb249 100644
--- a/gendarme/tools/unsupported/xmldoc2wiki/Makefile.am
+++ b/gendarme/tools/unsupported/xmldoc2wiki/Makefile.am
@@ -6,7 +6,7 @@ xmldoc2wiki_sources =  \
 	xmldoc2wiki.cs
 
 xmldoc2wiki.exe: $(xmldoc2wiki_sources)
-	$(GMCS) -debug $^ -out:$@ -r:System.Xml.Linq.dll
+	$(MCS) -debug $^ -out:$@ -r:System.Xml.Linq.dll
 
 clean:
 	rm -f xmldoc2wiki.exe*
diff --git a/gendarme/tools/unsupported/xmldoc2wiki/Makefile.in b/gendarme/tools/unsupported/xmldoc2wiki/Makefile.in
index 0a1ba4b..52bcb8e 100644
--- a/gendarme/tools/unsupported/xmldoc2wiki/Makefile.in
+++ b/gendarme/tools/unsupported/xmldoc2wiki/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -39,10 +58,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -104,6 +129,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -117,9 +143,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -202,14 +231,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/tools/unsupported/xmldoc2wiki/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/tools/unsupported/xmldoc2wiki/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/tools/unsupported/xmldoc2wiki/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/tools/unsupported/xmldoc2wiki/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -227,6 +256,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -250,13 +280,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -274,16 +308,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -300,6 +340,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -308,18 +350,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -354,12 +406,13 @@ uninstall-am:
 
 
 xmldoc2wiki.exe: $(xmldoc2wiki_sources)
-	$(GMCS) -debug $^ -out:$@ -r:System.Xml.Linq.dll
+	$(MCS) -debug $^ -out:$@ -r:System.Xml.Linq.dll
 
 clean:
 	rm -f xmldoc2wiki.exe*
 
 all: xmldoc2wiki.exe
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/tools/unsupported/xmldoc2wiki/README b/gendarme/tools/unsupported/xmldoc2wiki/README
index 764df91..ce17af9 100644
--- a/gendarme/tools/unsupported/xmldoc2wiki/README
+++ b/gendarme/tools/unsupported/xmldoc2wiki/README
@@ -11,5 +11,16 @@ Examples:
   xmldoc2wiki bin/*.xml 2-8-doc
 
 Local wiki access:
-  You can access the wiki locally by using github's gollum: https://github.com/github/gollum#readme
-  The installation is pretty simple, don't forget to install rdiscount gem that provides Markdown support.
+
+  a) Install gollum (https://github.com/github/gollum#readme). This requires Ruby.
+
+	% gem install gollum
+
+  b) Install rdiscount (http://daringfireball.net/projects/markdown/) for Markdown support
+
+	% gem install rdiscount
+
+  c) Install Pygments (http://pygments.org/) for syntax highlightning. This requires Python.
+
+	% easy_install Pygments
+
diff --git a/gendarme/tools/unsupported/xmldoc2wiki/xmldoc2wiki.cs b/gendarme/tools/unsupported/xmldoc2wiki/xmldoc2wiki.cs
index 4fbca7f..5fbc2dd 100644
--- a/gendarme/tools/unsupported/xmldoc2wiki/xmldoc2wiki.cs
+++ b/gendarme/tools/unsupported/xmldoc2wiki/xmldoc2wiki.cs
@@ -1,3 +1,31 @@
+// 
+// Gendarme's xmldoc2wiki tool
+//
+// Authors:
+//	Sebastien Pouliot <sebastien at ximian.com>
+//	Yuri Stuken <stuken.yuri at gmail.com>
+//
+// Copyright (C) 2010-2011 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2010 Yuri Stuken
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
 using System;
 using System.IO;
 using System.Collections.Generic;
@@ -11,6 +39,7 @@ static class Program {
 	static HashSet<string> assembliesIndex = new HashSet<string> ();
 
 	static string outputdir;
+	static string version = "git";
 
 	static string CleanUp (this string s)
 	{
@@ -18,20 +47,6 @@ static class Program {
 		return Regex.Replace (s, @"([\`\*])", @"\$1");
 	}
 
-	static void Header (TextWriter tw)
-	{
-		// tw.WriteLine ("# Rules");
-		// tw.WriteLine ();
-	}
-
-	static void Footer (TextWriter tw)
-	{
-		tw.WriteLine (@"## Feedback
-
-Please report any documentation errors, typos or suggestions to the 
-[[Gendarme Google Group|http://groups.google.com/group/gendarme]]. Thanks!");
-	}
-
 	static void AppendIndentedLine (StringBuilder sb, string line, int indentation)
 	{
 		for (int i = 0; i < indentation; i++)
@@ -168,6 +183,7 @@ Please report any documentation errors, typos or suggestions to the
 				ProcessText (tw, description.Nodes ());
 		}
 		tw.AppendLine ();
+		tw.AppendLine (); // make sure the following text is not part of the last item on the list
 	}
 
 	static void ProcessRules (IEnumerable<XElement> rules, string assembly)
@@ -207,83 +223,104 @@ Please report any documentation errors, typos or suggestions to the
 
 			rulesIndex.Add (name);
 
-			TextWriter writer = File.CreateText (Path.Combine(Path.Combine(outputdir, assembly), Path.ChangeExtension (name, "md")));
-			Header (writer);
-
-			rsb.AppendFormat ("# {0}", name);
-			rsb.AppendFormat ("{1}**{0}**{1}{1}", assembly, Environment.NewLine);
-			rsb.AppendLine ("## Description");
-
-			//			tw.WriteLine (ProcessSummary (item));
-			ProcessText (rsb, item.Nodes ());
-			rsb.AppendLine ();
-			rsb.AppendLine ();
-
-			var examples = member.Elements ("example");
-			if (examples != null)
-				rsb.AppendLine ("## Examples");
-			foreach (XNode example in examples.Nodes ()) {
-				XText node = (example as XText);
-				if (node != null) {
-					string text = example.ToString ().CleanUp ().Replace ("Bad", "**Bad**");
-					text = text.Replace ("Good", "**Good**");
-					rsb.AppendFormat ("{0}{1}{1}", text.Trim (), Environment.NewLine);
-					continue;
-				}
+			string rule_file = String.Format ("{0}{1}{2}{1}{3}.{4}({2}).md", 
+				outputdir, Path.DirectorySeparatorChar, version, assembly, name);
+			using (TextWriter writer = File.CreateText (rule_file)) {
+				rsb.AppendFormat ("# {0}{1}{1}", name, Environment.NewLine);
+				rsb.AppendFormat ("Assembly: **[[{0}|{0}({1})]]**<br/>", assembly, version);
+				rsb.AppendFormat ("Version: **{0}**{1}{1}", version, Environment.NewLine);
+				rsb.AppendLine ("## Description");
+
+				//			tw.WriteLine (ProcessSummary (item));
+				ProcessText (rsb, item.Nodes ());
+				rsb.AppendLine ();
+				rsb.AppendLine ();
+
+				var examples = member.Elements ("example");
+				if (examples != null)
+					rsb.AppendLine ("## Examples");
+				foreach (XNode example in examples.Nodes ()) {
+					XText node = (example as XText);
+					if (node != null) {
+						string text = example.ToString ().CleanUp ().Replace ("Bad", "**Bad**");
+						text = text.Replace ("Good", "**Good**");
+						rsb.AppendFormat ("{0}{1}{1}", text.Trim (), Environment.NewLine);
+						continue;
+					}
+
+					XElement code = (example as XElement);
+					if (code == null)
+						continue;
 
-				XElement code = (example as XElement);
-				if (code == null)
-					continue;
-
-				switch (code.Name.LocalName) {
-				case "code":
-					rsb.AppendFormat ("```csharp{1}{0}{1}```{1}{1}", ProcessCode (code.Value),
-						Environment.NewLine);
-					break;
-				case "c":
-					rsb.AppendFormat (" {0}{1}{1}", code.Value, Environment.NewLine);
-					break;
+					switch (code.Name.LocalName) {
+					case "code":
+						rsb.AppendFormat ("```csharp{1}{0}{1}```{1}{1}", ProcessCode (code.Value),
+							Environment.NewLine);
+						break;
+					case "c":
+						rsb.AppendFormat (" {0}{1}{1}", code.Value, Environment.NewLine);
+						break;
+					}
 				}
-			}
 
-			XElement container = member.Element ("remarks");
-			if (container != null) {
-				IEnumerable<XNode> remarks = container.Nodes ();
-				if (remarks.Count () > 0) {
-					rsb.AppendFormat ("## Notes{0}{0}", Environment.NewLine);
-					rsb.Append ("* ");
+				XElement container = member.Element ("remarks");
+				if (container != null) {
+					IEnumerable<XNode> remarks = container.Nodes ();
+					if (remarks.Count () > 0) {
+						rsb.AppendFormat ("## Notes{0}{0}", Environment.NewLine);
+						rsb.Append ("* ");
 
-					ProcessText (rsb, remarks);
+						ProcessText (rsb, remarks);
+						rsb.AppendLine ();
+					}
+				}
+
+				StringBuilder psb;
+				if (properties.TryGetValue (name, out psb)) {
+					rsb.AppendFormat ("## Configuration{0}{0}", Environment.NewLine);
+					rsb.AppendFormat ("Some elements of this rule can be customized to better fit your needs.{0}{0}", Environment.NewLine);
+					rsb.Append (psb);
 					rsb.AppendLine ();
 				}
-			}
 
-			StringBuilder psb;
-			if (properties.TryGetValue (name, out psb)) {
-				rsb.AppendFormat ("## Configuration{0}{0}", Environment.NewLine);
-				rsb.AppendFormat ("Some elements of this rule can be customized to better fit your needs.{0}{0}", Environment.NewLine);
-				rsb.Append (psb);
-				rsb.AppendLine ();
-			}
+				writer.WriteLine (rsb);
 
-			writer.WriteLine (rsb);
+				if (version == "git") {
+					writer.WriteLine ();
+					writer.WriteLine (@"## Source code
 
-			Footer (writer);
-			writer.Close ();
+You can browse the latest [[source code|https://github.com/mono/mono-tools/tree/master/gendarme/rules/{0}/{1}.cs]] of this rule on github.com", assembly, name);
+				}
+			}
 		}
 
 		var rulesList =
 			from rule in rulesIndex
 			orderby rule
 			select rule;
-		TextWriter indexWriter = File.CreateText (Path.Combine(outputdir, Path.Combine(assembly, assembly + ".md")));
 
-		foreach (var rule in rulesList) {
-			indexWriter.WriteLine ("[[{0}]]  ", rule);
-		}
+		string assembly_index = String.Format ("{0}{1}{2}{1}{3}({2}).md", 
+			outputdir, Path.DirectorySeparatorChar, version, assembly);
+
+		using (TextWriter writer = File.CreateText (assembly_index)) {
+			writer.WriteLine ("# {0} Rules", assembly);
+			writer.WriteLine ();
+			writer.WriteLine ("The following ({0}) rules are available in version [[{1}|Gendarme.Rules({1})]] of {2}:", 
+				rulesList.Count (), version, assembly);
+			writer.WriteLine ();
+			foreach (var rule in rulesList) {
+				writer.WriteLine ("* [[{0}|{1}.{0}({2})]]  ", rule, assembly, version);
+			}
+
+			if (version == "git") {
+				writer.WriteLine ();
+				writer.WriteLine (@"## Source code
 
-		indexWriter.Close ();
+You can browse the latest [[source code|https://github.com/mono/mono-tools/tree/master/gendarme/rules/{0}]] of this assembly on github.com", assembly);
+			}
 
+			writer.WriteLine ();
+		}
 	}
 
 	static void ProcessFile (string filename)
@@ -294,15 +331,14 @@ Please report any documentation errors, typos or suggestions to the
 			orderby (string)member.Attribute ("name") ascending
 			select member;
 
-		string assembly =
+		string assembly = Path.GetFileName (
 			(from a in doc.Descendants ("assembly")
-			 select a.Element ("name").Value).FirstOrDefault();
-		
-		if (assembly == null || !assembly.StartsWith("Gendarme"))
+			 select a.Element ("name").Value).FirstOrDefault ());
+
+		if (assembly == null || !assembly.StartsWith ("Gendarme"))
 			return;
 
 		assembliesIndex.Add (assembly);
-		Directory.CreateDirectory (Path.Combine(outputdir, assembly));
 		ProcessRules (members, assembly); 
 	}
 
@@ -310,40 +346,99 @@ Please report any documentation errors, typos or suggestions to the
 	{
 		string [] files;
 		if (args.Length < 1) {
-			Console.WriteLine ("Usage: xmldoc2wiki filepattern [outputdir]");
+			Console.WriteLine ("Usage: xmldoc2wiki filepattern [--out outputdir] [--version version]");
 			return;
 		}
 
-		int index = args [0].LastIndexOfAny (new char [] { '/', '\\' });
-		string dir, pattern;
-		if (index >= 0) {
-			dir = args [0].Substring (0, index);
-			pattern = args [0].Substring (args [0].LastIndexOfAny (new char [] { '/', '\\' }) + 1);
-		} else {
-			dir = ".";
-			pattern = args [0];
+		outputdir = ".";
+		version = "git";
+
+		List<string> filenames = new List<string> ();
+		for (int i = 0; i < args.Length; i++) {
+			string arg = args [i];
+			switch (arg) {
+			case "--version":
+				version = args [++i];
+				break;
+			case "--out":
+				outputdir = args [++i];
+				break;
+			default:
+				int index = arg.LastIndexOfAny (new char [] { '/', '\\' });
+				string dir, pattern;
+				if (index >= 0) {
+					dir = arg.Substring (0, index);
+					pattern = arg.Substring (index + 1);
+				} else {
+					dir = ".";
+					pattern = arg;
+				}
+
+				files = Directory.GetFiles (dir, pattern);
+				foreach (string file in files) {
+					filenames.Add (file);
+				}
+				break;
+			}
 		}
 
-		files = Directory.GetFiles (dir, pattern);
-		if (args.Length >= 2)
-			outputdir = args [1];
-		else
-			outputdir = ".";
+		string subdir = Path.Combine (outputdir, version);
+		if (!Directory.Exists (subdir))
+			Directory.CreateDirectory (subdir);
 
-		foreach (string file in files) {
+		foreach (string file in filenames) {
+			Console.WriteLine ("processing {0}", file);
 			ProcessFile (file);
 		}
 
-		TextWriter writer = File.CreateText (Path.Combine(outputdir, "index.md"));
+		CreateVersionIndex ();
+		CreateFooterFile ();
+	}
+
+	static void CreateVersionIndex ()
+	{
+		string rules_index = String.Format ("{0}{1}{2}{1}Gendarme.Rules({2}).md", 
+			outputdir, Path.DirectorySeparatorChar, version);
+
+		using (TextWriter writer = File.CreateText (rules_index)) {
+			writer.WriteLine ("# Gendarme Rules Documentation Index");
+			writer.WriteLine ();
+
+			var assemblies =
+				from assembly in assembliesIndex
+				orderby assembly
+				select assembly;
+
+			writer.WriteLine ("The following ({0}) assemblies are available in version {1}:", 
+				assemblies.Count (), version);
+			writer.WriteLine ();
+
+			foreach (var assembly in assemblies) {
+				writer.WriteLine ("* [[{0}|{0}({1})]]  ", assembly, version);
+			}
+
+			if (version == "git") {
+				writer.WriteLine ();
+				writer.WriteLine (@"## Source code
 
-		var assemblies =
-			from assembly in assembliesIndex
-			orderby assembly
-			select assembly;
+* Latest [[source code|https://github.com/mono/mono-tools/tree/master/gendarme/rules/]] for Gendarme's rules is available on github.com
+* Documentation is produced using gendarme's `xmldoc2wiki` (unsupported) tool which [[source code|https://github.com/mono/mono-tools/tree/master/gendarme/tools/unsupported/xmldoc2wiki]] is also available on github.com");
+			}
 
-		foreach (var assembly in assemblies) {
-			writer.WriteLine ("[[{0}]]  ", assembly);
+			writer.WriteLine ();
 		}
-		writer.Close ();
 	}
-}
\ No newline at end of file
+
+	static void CreateFooterFile ()
+	{
+		string footer = String.Format ("{0}{1}{2}{1}_Footer.md", outputdir, Path.DirectorySeparatorChar, version);
+
+		using (TextWriter writer = File.CreateText (footer)) {
+			writer.WriteLine (@"## Feedback
+
+Note that this page was autogenerated ({0}) based on the `xmldoc` comments inside the rules source code and cannot be edited from this wiki.
+Please report any documentation errors, typos or suggestions to the 
+[[Gendarme Google Group|http://groups.google.com/group/gendarme]]. Thanks!", DateTime.Now);
+ 		}
+	}
+}
diff --git a/gendarme/tools/unsupported/xmldoc2wiki/xmldoc2wiki.csproj b/gendarme/tools/unsupported/xmldoc2wiki/xmldoc2wiki.csproj
index db2fbf3..ee295fe 100644
--- a/gendarme/tools/unsupported/xmldoc2wiki/xmldoc2wiki.csproj
+++ b/gendarme/tools/unsupported/xmldoc2wiki/xmldoc2wiki.csproj
@@ -1,60 +1,99 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{AF174688-A979-4B3C-BE21-1C1BE8A0358E}</ProjectGuid>
-    <OutputType>Exe</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>xmldoc2wiki</RootNamespace>
-    <AssemblyName>xmldoc2wiki</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Xml.Linq">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\..\..\AssemblyStaticInfo.cs">
-      <Link>AssemblyStaticInfo.cs</Link>
-    </Compile>
-    <Compile Include="xmldoc2wiki.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <Folder Include="Properties\" />
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{AF174688-A979-4B3C-BE21-1C1BE8A0358E}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>xmldoc2wiki</RootNamespace>
+    <AssemblyName>xmldoc2wiki</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\..\AssemblyStaticInfo.cs">
+      <Link>AssemblyStaticInfo.cs</Link>
+    </Compile>
+    <Compile Include="xmldoc2wiki.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Properties\" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
   </Target>
   <Target Name="AfterBuild">
   </Target>
-  -->
+  -->
 </Project>
\ No newline at end of file
diff --git a/gendarme/wix/Makefile.in b/gendarme/wix/Makefile.in
index 7a4a77e..b3a88bb 100644
--- a/gendarme/wix/Makefile.in
+++ b/gendarme/wix/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,9 +15,27 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -38,10 +57,16 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_FLAGS = @ACLOCAL_FLAGS@
@@ -103,6 +128,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -116,9 +142,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -201,14 +230,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gendarme/wix/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gendarme/wix/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gendarme/wix/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gendarme/wix/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -226,6 +255,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -249,13 +279,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -273,16 +307,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -301,6 +341,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -309,18 +351,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -355,6 +407,7 @@ uninstall-am:
 
 
 # Windows only - build nothing on Linux
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gendarme/wix/Product.wxs b/gendarme/wix/Product.wxs
index cce4d8d..cd04e05 100644
--- a/gendarme/wix/Product.wxs
+++ b/gendarme/wix/Product.wxs
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?define ProductShortName = "Gendarme" ?>
-<?define ProductVersion = "2.10.0" ?>
-<?define ProductVersionText = "2.10" ?>
+<?define ProductVersion = "2.11.0" ?>
+<?define ProductVersionText = "2.11" ?>
 <?define Manufacturer = "Novell" ?>
 <?define UpgradeCode = "D7C83968-DEF2-4614-81F2-A3EEFC9BC6B3" ?>
 
@@ -92,10 +92,10 @@
       <RemoveExistingProducts After="InstallValidate" />
     </InstallExecuteSequence>
 
-    <!-- Ensure .Net Framework 3.5 is installed -->
-    <PropertyRef Id="NETFRAMEWORK35" />
-    <Condition Message="This setup requires the .NET Framework 3.5 to be installed.">
-      <![CDATA[Installed OR NETFRAMEWORK35]]>
+    <!-- Ensure .Net Framework 4.0 is installed -->
+    <PropertyRef Id="NETFRAMEWORK40FULL" />
+    <Condition Message="This setup requires the .NET Framework 4.0 (full) to be installed.">
+      <![CDATA[Installed OR NETFRAMEWORK40FULL]]>
     </Condition>
 
     <!-- This enables the license screen and where to install screen -->
diff --git a/gendarme/wix/license.rtf b/gendarme/wix/license.rtf
index 8bd49b0..45c52b3 100644
--- a/gendarme/wix/license.rtf
+++ b/gendarme/wix/license.rtf
@@ -1,5 +1,5 @@
 {\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}}
-{\*\generator Msftedit 5.41.21.2508;}\viewkind4\uc1\pard\f0\fs20 Copyright (c) 2005-2010 Novell, Inc and the individuals listed on the ChangeLog entries.\par
+{\*\generator Msftedit 5.41.21.2508;}\viewkind4\uc1\pard\f0\fs20 Copyright (c) 2005-2011 Novell, Inc and the individuals listed on the ChangeLog entries.\par
 \par
 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\par
 \par
@@ -7,4 +7,4 @@ The above copyright notice and this permission notice shall be included in all c
 \par
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\par
 }
- 
\ No newline at end of file
+ 
diff --git a/gendarme/wix/wix.wixproj b/gendarme/wix/wix.wixproj
index 57cf6cb..d14ae75 100644
--- a/gendarme/wix/wix.wixproj
+++ b/gendarme/wix/wix.wixproj
@@ -1,4 +1,5 @@
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
@@ -7,7 +8,7 @@
     <SchemaVersion>2.0</SchemaVersion>
     <OutputName>gendarme</OutputName>
     <OutputType>Package</OutputType>
-    <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.0\Wix.targets</WixTargetsPath>
+    <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <OutputPath>bin\$(Configuration)\</OutputPath>
@@ -27,9 +28,11 @@
   <ItemGroup>
     <WixExtension Include="WixNetFxExtension">
       <HintPath>$(WixExtDir)\WixNetFxExtension.dll</HintPath>
+      <Name>WixNetFxExtension</Name>
     </WixExtension>
     <WixExtension Include="WixUIExtension">
       <HintPath>$(WixExtDir)\WixUIExtension.dll</HintPath>
+      <Name>WixUIExtension</Name>
     </WixExtension>
   </ItemGroup>
   <ItemGroup>
diff --git a/gsharp/Main.cs b/gsharp/Main.cs
index 84899b8..52ed96a 100644
--- a/gsharp/Main.cs
+++ b/gsharp/Main.cs
@@ -19,6 +19,7 @@ namespace Mono.CSharp.Gui
 		public static bool Attached;
 		public static bool HostHasGtkRunning;
 		public static bool Debug;
+		static Evaluator evaluator;
 		
 		public static void ShowHelp (OptionSet p)
 		{
@@ -59,10 +60,10 @@ namespace Mono.CSharp.Gui
 			else
 				Start ("C# InteractiveBase Shell", extra);
 		}
-
+		
 		static void AssemblyLoaded (object sender, AssemblyLoadEventArgs e)
 		{
-			Evaluator.ReferenceAssembly (e.LoadedAssembly);
+			evaluator.ReferenceAssembly (e.LoadedAssembly);
 		}
 
 		internal static object RenderBitmaps (object o)
@@ -92,7 +93,7 @@ namespace Mono.CSharp.Gui
 			InteractiveGraphicsBase.Attached = true;
 			Gtk.Application.Invoke (delegate {
 				try {
-					Evaluator.Init (new string [0]);
+					evaluator = new Evaluator (new CompilerContext (new CompilerSettings (), new ConsoleReportPrinter ()));
 				} catch {
 					return;
 				}
@@ -103,7 +104,7 @@ namespace Mono.CSharp.Gui
 					
 					// Add all currently loaded assemblies
 					foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies ())
-						Evaluator.ReferenceAssembly (a);
+						evaluator.ReferenceAssembly (a);
 					
 					Start (String.Format ("Attached C# Interactive Shell at Process {0}", Process.GetCurrentProcess ().Id), null);
 				} finally {
@@ -129,7 +130,6 @@ namespace Mono.CSharp.Gui
 			if (files != null)
 				m.LoadFiles (files, false);
 			m.ShowAll ();
-			Evaluator.DescribeTypeExpressions = true;
 
 			if (!HostHasGtkRunning){
 				try {
@@ -146,4 +146,4 @@ namespace Mono.CSharp.Gui
 			}
 		}
 	}
-}
\ No newline at end of file
+}
diff --git a/gsharp/MainWindow.cs b/gsharp/MainWindow.cs
index 34c24e4..f5da16a 100644
--- a/gsharp/MainWindow.cs
+++ b/gsharp/MainWindow.cs
@@ -80,7 +80,7 @@ namespace Mono.CSharp.Gui
 			}
 				
 			foreach (string file in libraries){
-				Evaluator.LoadAssembly (file);
+				Shell.Evaluator.LoadAssembly (file);
 			}
 			
 			foreach (string file in sources){
@@ -101,7 +101,7 @@ namespace Mono.CSharp.Gui
 			object result;
 
 			try {
-				input = Evaluator.Evaluate (input, out result, out result_set);
+				input = Shell.Evaluator.Evaluate (input, out result, out result_set);
 			} catch (Exception e){
 				Console.WriteLine (e);
 				return null;
diff --git a/gsharp/Makefile.in b/gsharp/Makefile.in
index 30f516f..9e107c3 100644
--- a/gsharp/Makefile.in
+++ b/gsharp/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,22 +60,46 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES = gsharp gsharp.exe.config
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(desktopdir)" \
-	"$(DESTDIR)$(gsharpdir)"
-binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
-SCRIPTS = $(bin_SCRIPTS)
-SOURCES =
-DIST_SOURCES =
+CONFIG_CLEAN_VPATH_FILES =
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-desktopDATA_INSTALL = $(INSTALL_DATA)
-gsharpDATA_INSTALL = $(INSTALL_DATA)
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(desktopdir)" \
+	"$(DESTDIR)$(gsharpdir)"
+SCRIPTS = $(bin_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(desktop_DATA) $(gsharp_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
@@ -119,6 +162,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -132,9 +176,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -239,14 +286,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gsharp/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gsharp/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gsharp/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gsharp/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -264,63 +311,88 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 gsharp: $(top_builddir)/config.status $(srcdir)/gsharp.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 gsharp.exe.config: $(top_builddir)/config.status $(srcdir)/gsharp.exe.config.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-binSCRIPTS: $(bin_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-	    $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-binSCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
-	done
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
 install-desktopDATA: $(desktop_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(desktopdir)" || $(MKDIR_P) "$(DESTDIR)$(desktopdir)"
-	@list='$(desktop_DATA)'; for p in $$list; do \
+	@list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(desktopdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(desktopdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(desktopDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(desktopdir)/$$f'"; \
-	  $(desktopDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(desktopdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(desktopdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(desktopdir)" || exit $$?; \
 	done
 
 uninstall-desktopDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(desktop_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(desktopdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(desktopdir)/$$f"; \
-	done
+	@list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(desktopdir)'; $(am__uninstall_files_from_dir)
 install-gsharpDATA: $(gsharp_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(gsharpdir)" || $(MKDIR_P) "$(DESTDIR)$(gsharpdir)"
-	@list='$(gsharp_DATA)'; for p in $$list; do \
+	@list='$(gsharp_DATA)'; test -n "$(gsharpdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(gsharpdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(gsharpdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(gsharpDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(gsharpdir)/$$f'"; \
-	  $(gsharpDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(gsharpdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(gsharpdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(gsharpdir)" || exit $$?; \
 	done
 
 uninstall-gsharpDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(gsharp_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(gsharpdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(gsharpdir)/$$f"; \
-	done
+	@list='$(gsharp_DATA)'; test -n "$(gsharpdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(gsharpdir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -344,13 +416,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -371,10 +447,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -382,6 +463,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -400,6 +482,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -408,18 +492,28 @@ install-data-am: install-desktopDATA install-gsharpDATA
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am: install-binSCRIPTS
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -462,6 +556,7 @@ gsharp.exe: $(gsharp_sources)
 
 $(desktop_DATA): $(desktop_DATA).in
 	sed -e "s|\@bindir\@|$(bindir)|" $< > $@
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gsharp/Shell.cs b/gsharp/Shell.cs
index 05d5695..5f41ea5 100644
--- a/gsharp/Shell.cs
+++ b/gsharp/Shell.cs
@@ -50,7 +50,9 @@ namespace Mono.CSharp.Gui
 	public class Shell : TextView
 	{        
 		TextMark end_of_last_processing;
-		string expr = null;
+		string expr;
+		Evaluator evaluator;
+		CompilerContext context;
 
 		List<string> history = new List<string> ();
 		int history_cursor;
@@ -72,10 +74,14 @@ namespace Mono.CSharp.Gui
 			Buffer.InsertWithTagsByName (ref end, "Mono C# Shell, type 'help;' for help\n\nEnter statements or expressions below.\n", "Comment");
 			ShowPrompt (false);
 			
-			Evaluator.Init (new string [0]);
-			Evaluator.SetInteractiveBaseClass (typeof (InteractiveGraphicsBase));
-			Evaluator.Run ("LoadAssembly (\"System.Drawing\");");
-			Evaluator.Run ("using System; using System.Linq; using System.Collections; using System.Collections.Generic; using System.Drawing;");
+			
+			context = new CompilerContext (new CompilerSettings (), new ConsoleReportPrinter ());
+			evaluator = new Evaluator (context);
+			evaluator.DescribeTypeExpressions = true;
+			
+			evaluator.InteractiveBaseClass = typeof (InteractiveGraphicsBase);
+			evaluator.Run ("LoadAssembly (\"System.Drawing\");");
+			evaluator.Run ("using System; using System.Linq; using System.Collections; using System.Collections.Generic; using System.Drawing;");
 
 			if (!MainClass.Debug){
 				GuiStream error_stream = new GuiStream ("Error", (x, y) => Output (x, y));
@@ -139,16 +145,18 @@ namespace Mono.CSharp.Gui
 			object result;
 			bool result_set;
 			StringWriter errorwriter = new StringWriter ();
-
-			Evaluator.MessageOutput = errorwriter;
+			
+			var old_printer = context.Report.SetPrinter (new StreamReportPrinter (errorwriter));
 			
 			try {
-				res = Evaluator.Evaluate (s, out result, out result_set);
+				res = evaluator.Evaluate (s, out result, out result_set);
 			} catch (Exception e){
 				expr = null;
 				ShowError (e.ToString ());
 				ShowPrompt (true, false);
 				return true;
+			} finally {
+				context.Report.SetPrinter (old_printer);
 			}
 
 			// Partial input
@@ -262,7 +270,7 @@ namespace Mono.CSharp.Gui
 			case Gdk.Key.Tab:
 				string saved_text = InputLine;
 				string prefix;
-				string [] completions = Evaluator.GetCompletions (LineUntilCursor, out prefix);
+				string [] completions = evaluator.GetCompletions (LineUntilCursor, out prefix);
 				if (completions == null)
 					return true;
 
@@ -405,6 +413,12 @@ namespace Mono.CSharp.Gui
 		TextIter Cursor {
 			get { return Buffer.GetIterAtMark(Buffer.InsertMark); }
 		}
+		
+		public Evaluator Evaluator {
+			get {
+				return evaluator;
+			}
+		}		
 
 		string InputLine {
 			get { return Buffer.GetText(InputLineBegin, InputLineEnd, false); }
diff --git a/gsharp/gtk-gui/Mono.CSharp.Gui.DescribeType.cs b/gsharp/gtk-gui/Mono.CSharp.Gui.DescribeType.cs
index 21e9c5b..7e04ad0 100644
--- a/gsharp/gtk-gui/Mono.CSharp.Gui.DescribeType.cs
+++ b/gsharp/gtk-gui/Mono.CSharp.Gui.DescribeType.cs
@@ -1,105 +1,93 @@
-// ------------------------------------------------------------------------------
-//  <autogenerated>
-//      This code was generated by a tool.
-//      
-// 
-//      Changes to this file may cause incorrect behavior and will be lost if 
-//      the code is regenerated.
-//  </autogenerated>
-// ------------------------------------------------------------------------------
 
-namespace Mono.CSharp.Gui {
-    
-    
-    public partial class DescribeType {
-        
-        private Gtk.HBox hbox1;
-        
-        private Gtk.Label label1;
-        
-        private Gtk.Entry entry1;
-        
-        private Gtk.Button buttonCancel;
-        
-        private Gtk.Button buttonOk;
-        
-        protected virtual void Build() {
-            Stetic.Gui.Initialize(this);
-            // Widget Mono.CSharp.Gui.DescribeType
-            this.Name = "Mono.CSharp.Gui.DescribeType";
-            this.WindowPosition = ((Gtk.WindowPosition)(4));
-            // Internal child Mono.CSharp.Gui.DescribeType.VBox
-            Gtk.VBox w1 = this.VBox;
-            w1.Name = "dialog1_VBox";
-            w1.BorderWidth = ((uint)(2));
-            // Container child dialog1_VBox.Gtk.Box+BoxChild
-            this.hbox1 = new Gtk.HBox();
-            this.hbox1.Name = "hbox1";
-            this.hbox1.Spacing = 6;
-            // Container child hbox1.Gtk.Box+BoxChild
-            this.label1 = new Gtk.Label();
-            this.label1.Name = "label1";
-            this.label1.Xpad = 5;
-            this.label1.Ypad = 15;
-            this.label1.LabelProp = Mono.Unix.Catalog.GetString("Type name:");
-            this.hbox1.Add(this.label1);
-            Gtk.Box.BoxChild w2 = ((Gtk.Box.BoxChild)(this.hbox1[this.label1]));
-            w2.Position = 0;
-            w2.Expand = false;
-            w2.Fill = false;
-            // Container child hbox1.Gtk.Box+BoxChild
-            this.entry1 = new Gtk.Entry();
-            this.entry1.CanDefault = true;
-            this.entry1.CanFocus = true;
-            this.entry1.Name = "entry1";
-            this.entry1.IsEditable = true;
-            this.entry1.InvisibleChar = '●';
-            this.hbox1.Add(this.entry1);
-            Gtk.Box.BoxChild w3 = ((Gtk.Box.BoxChild)(this.hbox1[this.entry1]));
-            w3.Position = 1;
-            w1.Add(this.hbox1);
-            Gtk.Box.BoxChild w4 = ((Gtk.Box.BoxChild)(w1[this.hbox1]));
-            w4.Position = 0;
-            w4.Expand = false;
-            w4.Fill = false;
-            // Internal child Mono.CSharp.Gui.DescribeType.ActionArea
-            Gtk.HButtonBox w5 = this.ActionArea;
-            w5.Name = "dialog1_ActionArea";
-            w5.Spacing = 6;
-            w5.BorderWidth = ((uint)(5));
-            w5.LayoutStyle = ((Gtk.ButtonBoxStyle)(4));
-            // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
-            this.buttonCancel = new Gtk.Button();
-            this.buttonCancel.CanDefault = true;
-            this.buttonCancel.CanFocus = true;
-            this.buttonCancel.Name = "buttonCancel";
-            this.buttonCancel.UseStock = true;
-            this.buttonCancel.UseUnderline = true;
-            this.buttonCancel.Label = "gtk-cancel";
-            this.AddActionWidget(this.buttonCancel, -6);
-            Gtk.ButtonBox.ButtonBoxChild w6 = ((Gtk.ButtonBox.ButtonBoxChild)(w5[this.buttonCancel]));
-            w6.Expand = false;
-            w6.Fill = false;
-            // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
-            this.buttonOk = new Gtk.Button();
-            this.buttonOk.CanDefault = true;
-            this.buttonOk.CanFocus = true;
-            this.buttonOk.Name = "buttonOk";
-            this.buttonOk.UseStock = true;
-            this.buttonOk.UseUnderline = true;
-            this.buttonOk.Label = "gtk-ok";
-            this.AddActionWidget(this.buttonOk, -5);
-            Gtk.ButtonBox.ButtonBoxChild w7 = ((Gtk.ButtonBox.ButtonBoxChild)(w5[this.buttonOk]));
-            w7.Position = 1;
-            w7.Expand = false;
-            w7.Fill = false;
-            if ((this.Child != null)) {
-                this.Child.ShowAll();
-            }
-            this.DefaultWidth = 284;
-            this.DefaultHeight = 133;
-            this.Show();
-            this.entry1.Activated += new System.EventHandler(this.OnEntry1Activated);
-        }
-    }
+// This file has been generated by the GUI designer. Do not modify.
+namespace Mono.CSharp.Gui
+{
+	public partial class DescribeType
+	{
+		private global::Gtk.HBox hbox1;
+		private global::Gtk.Label label1;
+		private global::Gtk.Entry entry1;
+		private global::Gtk.Button buttonCancel;
+		private global::Gtk.Button buttonOk;
+
+		protected virtual void Build ()
+		{
+			global::Stetic.Gui.Initialize (this);
+			// Widget Mono.CSharp.Gui.DescribeType
+			this.Name = "Mono.CSharp.Gui.DescribeType";
+			this.WindowPosition = ((global::Gtk.WindowPosition)(4));
+			// Internal child Mono.CSharp.Gui.DescribeType.VBox
+			global::Gtk.VBox w1 = this.VBox;
+			w1.Name = "dialog1_VBox";
+			w1.BorderWidth = ((uint)(2));
+			// Container child dialog1_VBox.Gtk.Box+BoxChild
+			this.hbox1 = new global::Gtk.HBox ();
+			this.hbox1.Name = "hbox1";
+			this.hbox1.Spacing = 6;
+			// Container child hbox1.Gtk.Box+BoxChild
+			this.label1 = new global::Gtk.Label ();
+			this.label1.Name = "label1";
+			this.label1.Xpad = 5;
+			this.label1.Ypad = 15;
+			this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("Type name:");
+			this.hbox1.Add (this.label1);
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.label1]));
+			w2.Position = 0;
+			w2.Expand = false;
+			w2.Fill = false;
+			// Container child hbox1.Gtk.Box+BoxChild
+			this.entry1 = new global::Gtk.Entry ();
+			this.entry1.CanDefault = true;
+			this.entry1.CanFocus = true;
+			this.entry1.Name = "entry1";
+			this.entry1.IsEditable = true;
+			this.entry1.InvisibleChar = '●';
+			this.hbox1.Add (this.entry1);
+			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.entry1]));
+			w3.Position = 1;
+			w1.Add (this.hbox1);
+			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(w1 [this.hbox1]));
+			w4.Position = 0;
+			w4.Expand = false;
+			w4.Fill = false;
+			// Internal child Mono.CSharp.Gui.DescribeType.ActionArea
+			global::Gtk.HButtonBox w5 = this.ActionArea;
+			w5.Name = "dialog1_ActionArea";
+			w5.Spacing = 6;
+			w5.BorderWidth = ((uint)(5));
+			w5.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(4));
+			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
+			this.buttonCancel = new global::Gtk.Button ();
+			this.buttonCancel.CanDefault = true;
+			this.buttonCancel.CanFocus = true;
+			this.buttonCancel.Name = "buttonCancel";
+			this.buttonCancel.UseStock = true;
+			this.buttonCancel.UseUnderline = true;
+			this.buttonCancel.Label = "gtk-cancel";
+			this.AddActionWidget (this.buttonCancel, -6);
+			global::Gtk.ButtonBox.ButtonBoxChild w6 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w5 [this.buttonCancel]));
+			w6.Expand = false;
+			w6.Fill = false;
+			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
+			this.buttonOk = new global::Gtk.Button ();
+			this.buttonOk.CanDefault = true;
+			this.buttonOk.CanFocus = true;
+			this.buttonOk.Name = "buttonOk";
+			this.buttonOk.UseStock = true;
+			this.buttonOk.UseUnderline = true;
+			this.buttonOk.Label = "gtk-ok";
+			this.AddActionWidget (this.buttonOk, -5);
+			global::Gtk.ButtonBox.ButtonBoxChild w7 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w5 [this.buttonOk]));
+			w7.Position = 1;
+			w7.Expand = false;
+			w7.Fill = false;
+			if ((this.Child != null)) {
+				this.Child.ShowAll ();
+			}
+			this.DefaultWidth = 284;
+			this.DefaultHeight = 133;
+			this.Show ();
+			this.entry1.Activated += new global::System.EventHandler (this.OnEntry1Activated);
+		}
+	}
 }
diff --git a/gsharp/gtk-gui/Mono.CSharp.Gui.MainWindow.cs b/gsharp/gtk-gui/Mono.CSharp.Gui.MainWindow.cs
index 7fb30cf..ad540d7 100644
--- a/gsharp/gtk-gui/Mono.CSharp.Gui.MainWindow.cs
+++ b/gsharp/gtk-gui/Mono.CSharp.Gui.MainWindow.cs
@@ -1,226 +1,193 @@
-// ------------------------------------------------------------------------------
-//  <autogenerated>
-//      This code was generated by a tool.
-//      
-// 
-//      Changes to this file may cause incorrect behavior and will be lost if 
-//      the code is regenerated.
-//  </autogenerated>
-// ------------------------------------------------------------------------------
 
-namespace Mono.CSharp.Gui {
-    
-    
-    public partial class MainWindow {
-        
-        private Gtk.UIManager UIManager;
-        
-        private Gtk.Action FileAction;
-        
-        private Gtk.Action QuitAction;
-        
-        private Gtk.Action AttachToProcessAction;
-        
-        private Gtk.Action HelpAction;
-        
-        private Gtk.Action AboutAction;
-        
-        private Gtk.Action ViewAction;
-        
-        private Gtk.ToggleAction gtkpane;
-        
-        private Gtk.Action ToolsAction;
-        
-        private Gtk.Action DescribeTypeAction;
-        
-        private Gtk.VBox vbox1;
-        
-        private Gtk.MenuBar menubar1;
-        
-        private Gtk.Notebook notebook1;
-        
-        private Gtk.HPaned hpaned;
-        
-        private Gtk.EventBox paned_container;
-        
-        private Gtk.VBox vbox2;
-        
-        private Gtk.Expander expander1;
-        
-        private Gtk.Label label4;
-        
-        private Gtk.Label GtkLabel4;
-        
-        private Gtk.EventBox eventbox;
-        
-        private Gtk.Label label1;
-        
-        private Gtk.EventBox standalone_container;
-        
-        private Gtk.Notebook shellnotebook;
-        
-        private Gtk.ScrolledWindow sw;
-        
-        private Gtk.Label label3;
-        
-        private Gtk.Label label2;
-        
-        protected virtual void Build() {
-            Stetic.Gui.Initialize(this);
-            // Widget Mono.CSharp.Gui.MainWindow
-            this.UIManager = new Gtk.UIManager();
-            Gtk.ActionGroup w1 = new Gtk.ActionGroup("Default");
-            this.FileAction = new Gtk.Action("FileAction", Mono.Unix.Catalog.GetString("_File"), null, null);
-            this.FileAction.ShortLabel = Mono.Unix.Catalog.GetString("File");
-            w1.Add(this.FileAction, null);
-            this.QuitAction = new Gtk.Action("QuitAction", Mono.Unix.Catalog.GetString("_Quit"), null, "gtk-quit");
-            this.QuitAction.ShortLabel = Mono.Unix.Catalog.GetString("_Quit");
-            w1.Add(this.QuitAction, null);
-            this.AttachToProcessAction = new Gtk.Action("AttachToProcessAction", Mono.Unix.Catalog.GetString("Attach to Process"), null, null);
-            this.AttachToProcessAction.ShortLabel = Mono.Unix.Catalog.GetString("Attach to Process");
-            w1.Add(this.AttachToProcessAction, null);
-            this.HelpAction = new Gtk.Action("HelpAction", Mono.Unix.Catalog.GetString("Help"), null, null);
-            this.HelpAction.ShortLabel = Mono.Unix.Catalog.GetString("Help");
-            w1.Add(this.HelpAction, null);
-            this.AboutAction = new Gtk.Action("AboutAction", Mono.Unix.Catalog.GetString("About"), null, null);
-            this.AboutAction.ShortLabel = Mono.Unix.Catalog.GetString("About");
-            w1.Add(this.AboutAction, null);
-            this.ViewAction = new Gtk.Action("ViewAction", Mono.Unix.Catalog.GetString("View"), null, null);
-            this.ViewAction.ShortLabel = Mono.Unix.Catalog.GetString("View");
-            w1.Add(this.ViewAction, null);
-            this.gtkpane = new Gtk.ToggleAction("gtkpane", Mono.Unix.Catalog.GetString("Gtk Pane"), null, null);
-            this.gtkpane.ShortLabel = Mono.Unix.Catalog.GetString("Gtk Pane");
-            w1.Add(this.gtkpane, null);
-            this.ToolsAction = new Gtk.Action("ToolsAction", Mono.Unix.Catalog.GetString("_Tools"), null, null);
-            this.ToolsAction.ShortLabel = Mono.Unix.Catalog.GetString("_Tools");
-            w1.Add(this.ToolsAction, null);
-            this.DescribeTypeAction = new Gtk.Action("DescribeTypeAction", Mono.Unix.Catalog.GetString("Describe Type"), null, null);
-            this.DescribeTypeAction.ShortLabel = Mono.Unix.Catalog.GetString("Describe Type");
-            w1.Add(this.DescribeTypeAction, null);
-            this.UIManager.InsertActionGroup(w1, 0);
-            this.AddAccelGroup(this.UIManager.AccelGroup);
-            this.Name = "Mono.CSharp.Gui.MainWindow";
-            this.Title = Mono.Unix.Catalog.GetString("MainWindow");
-            this.WindowPosition = ((Gtk.WindowPosition)(4));
-            this.DefaultWidth = 600;
-            this.DefaultHeight = 500;
-            // Container child Mono.CSharp.Gui.MainWindow.Gtk.Container+ContainerChild
-            this.vbox1 = new Gtk.VBox();
-            this.vbox1.Name = "vbox1";
-            this.vbox1.Spacing = 6;
-            // Container child vbox1.Gtk.Box+BoxChild
-            this.UIManager.AddUiFromString("<ui><menubar name='menubar1'><menu name='FileAction' action='FileAction'><menuitem name='AttachToProcessAction' action='AttachToProcessAction'/><separator/><menuitem name='QuitAction' action='QuitAction'/></menu><menu name='ViewAction' action='ViewAction'><menuitem name='gtkpane' action='gtkpane'/></menu><menu name='ToolsAction' action='ToolsAction'><menuitem name='DescribeTypeAction' action='DescribeTypeAction'/></menu><menu name='HelpAction'  [...]
-            this.menubar1 = ((Gtk.MenuBar)(this.UIManager.GetWidget("/menubar1")));
-            this.menubar1.Name = "menubar1";
-            this.vbox1.Add(this.menubar1);
-            Gtk.Box.BoxChild w2 = ((Gtk.Box.BoxChild)(this.vbox1[this.menubar1]));
-            w2.Position = 0;
-            w2.Expand = false;
-            w2.Fill = false;
-            // Container child vbox1.Gtk.Box+BoxChild
-            this.notebook1 = new Gtk.Notebook();
-            this.notebook1.CanFocus = true;
-            this.notebook1.Name = "notebook1";
-            this.notebook1.CurrentPage = 0;
-            this.notebook1.ShowBorder = false;
-            this.notebook1.ShowTabs = false;
-            // Container child notebook1.Gtk.Notebook+NotebookChild
-            this.hpaned = new Gtk.HPaned();
-            this.hpaned.CanFocus = true;
-            this.hpaned.Name = "hpaned";
-            this.hpaned.Position = 472;
-            // Container child hpaned.Gtk.Paned+PanedChild
-            this.paned_container = new Gtk.EventBox();
-            this.paned_container.Name = "paned_container";
-            this.hpaned.Add(this.paned_container);
-            Gtk.Paned.PanedChild w3 = ((Gtk.Paned.PanedChild)(this.hpaned[this.paned_container]));
-            w3.Resize = false;
-            // Container child hpaned.Gtk.Paned+PanedChild
-            this.vbox2 = new Gtk.VBox();
-            this.vbox2.Name = "vbox2";
-            this.vbox2.Spacing = 6;
-            // Container child vbox2.Gtk.Box+BoxChild
-            this.expander1 = new Gtk.Expander(null);
-            this.expander1.CanFocus = true;
-            this.expander1.Name = "expander1";
-            this.expander1.Expanded = true;
-            // Container child expander1.Gtk.Container+ContainerChild
-            this.label4 = new Gtk.Label();
-            this.label4.Name = "label4";
-            this.label4.Xpad = 10;
-            this.label4.Xalign = 0.1F;
-            this.label4.LabelProp = Mono.Unix.Catalog.GetString("Set the contents of this pane by adding Gtk.Widgets children to the <b>PaneContainer</b> property.  The PaneContainer is a Gtk.EventBox.   \n\nTry it like this:\n\nLoadPackage (\"gtk-sharp-2.0\");\nvar l = new Label (\"Hello world\");\nPaneContainer.Add (l);\nl.ShowAll ();");
-            this.label4.UseMarkup = true;
-            this.label4.Wrap = true;
-            this.expander1.Add(this.label4);
-            this.GtkLabel4 = new Gtk.Label();
-            this.GtkLabel4.Name = "GtkLabel4";
-            this.GtkLabel4.LabelProp = Mono.Unix.Catalog.GetString("<b>PaneContent</b>");
-            this.GtkLabel4.UseMarkup = true;
-            this.GtkLabel4.UseUnderline = true;
-            this.expander1.LabelWidget = this.GtkLabel4;
-            this.vbox2.Add(this.expander1);
-            Gtk.Box.BoxChild w5 = ((Gtk.Box.BoxChild)(this.vbox2[this.expander1]));
-            w5.Position = 0;
-            w5.Expand = false;
-            w5.Fill = false;
-            // Container child vbox2.Gtk.Box+BoxChild
-            this.eventbox = new Gtk.EventBox();
-            this.eventbox.Name = "eventbox";
-            this.vbox2.Add(this.eventbox);
-            Gtk.Box.BoxChild w6 = ((Gtk.Box.BoxChild)(this.vbox2[this.eventbox]));
-            w6.Position = 1;
-            this.hpaned.Add(this.vbox2);
-            this.notebook1.Add(this.hpaned);
-            // Notebook tab
-            this.label1 = new Gtk.Label();
-            this.label1.Name = "label1";
-            this.label1.LabelProp = Mono.Unix.Catalog.GetString("page1");
-            this.notebook1.SetTabLabel(this.hpaned, this.label1);
-            this.label1.ShowAll();
-            // Container child notebook1.Gtk.Notebook+NotebookChild
-            this.standalone_container = new Gtk.EventBox();
-            this.standalone_container.Name = "standalone_container";
-            // Container child standalone_container.Gtk.Container+ContainerChild
-            this.shellnotebook = new Gtk.Notebook();
-            this.shellnotebook.CanFocus = true;
-            this.shellnotebook.Name = "shellnotebook";
-            this.shellnotebook.CurrentPage = 0;
-            this.shellnotebook.ShowTabs = false;
-            this.shellnotebook.Scrollable = true;
-            // Container child shellnotebook.Gtk.Notebook+NotebookChild
-            this.sw = new Gtk.ScrolledWindow();
-            this.sw.CanFocus = true;
-            this.sw.Name = "sw";
-            this.sw.ShadowType = ((Gtk.ShadowType)(1));
-            this.shellnotebook.Add(this.sw);
-            // Notebook tab
-            this.label3 = new Gtk.Label();
-            this.label3.Name = "label3";
-            this.label3.LabelProp = Mono.Unix.Catalog.GetString("C#");
-            this.shellnotebook.SetTabLabel(this.sw, this.label3);
-            this.label3.ShowAll();
-            this.standalone_container.Add(this.shellnotebook);
-            this.notebook1.Add(this.standalone_container);
-            Gtk.Notebook.NotebookChild w11 = ((Gtk.Notebook.NotebookChild)(this.notebook1[this.standalone_container]));
-            w11.Position = 1;
-            // Notebook tab
-            this.label2 = new Gtk.Label();
-            this.label2.Name = "label2";
-            this.label2.LabelProp = Mono.Unix.Catalog.GetString("page2");
-            this.notebook1.SetTabLabel(this.standalone_container, this.label2);
-            this.label2.ShowAll();
-            this.vbox1.Add(this.notebook1);
-            Gtk.Box.BoxChild w12 = ((Gtk.Box.BoxChild)(this.vbox1[this.notebook1]));
-            w12.Position = 1;
-            this.Add(this.vbox1);
-            if ((this.Child != null)) {
-                this.Child.ShowAll();
-            }
-            this.Show();
-            this.QuitAction.Activated += new System.EventHandler(this.OnQuitActionActivated);
-            this.AttachToProcessAction.Activated += new System.EventHandler(this.OnAttachToProcessActionActivated);
-            this.DescribeTypeAction.Activated += new System.EventHandler(this.OnDescribeTypeActionActivated);
-        }
-    }
+// This file has been generated by the GUI designer. Do not modify.
+namespace Mono.CSharp.Gui
+{
+	public partial class MainWindow
+	{
+		private global::Gtk.UIManager UIManager;
+		private global::Gtk.Action FileAction;
+		private global::Gtk.Action QuitAction;
+		private global::Gtk.Action AttachToProcessAction;
+		private global::Gtk.Action HelpAction;
+		private global::Gtk.Action AboutAction;
+		private global::Gtk.Action ViewAction;
+		private global::Gtk.ToggleAction gtkpane;
+		private global::Gtk.Action ToolsAction;
+		private global::Gtk.Action DescribeTypeAction;
+		private global::Gtk.VBox vbox1;
+		private global::Gtk.MenuBar menubar1;
+		private global::Gtk.Notebook notebook1;
+		private global::Gtk.HPaned hpaned;
+		private global::Gtk.EventBox paned_container;
+		private global::Gtk.VBox vbox2;
+		private global::Gtk.Expander expander1;
+		private global::Gtk.Label label4;
+		private global::Gtk.Label GtkLabel4;
+		private global::Gtk.EventBox eventbox;
+		private global::Gtk.Label label1;
+		private global::Gtk.EventBox standalone_container;
+		private global::Gtk.Notebook shellnotebook;
+		private global::Gtk.ScrolledWindow sw;
+		private global::Gtk.Label label3;
+		private global::Gtk.Label label2;
+
+		protected virtual void Build ()
+		{
+			global::Stetic.Gui.Initialize (this);
+			// Widget Mono.CSharp.Gui.MainWindow
+			this.UIManager = new global::Gtk.UIManager ();
+			global::Gtk.ActionGroup w1 = new global::Gtk.ActionGroup ("Default");
+			this.FileAction = new global::Gtk.Action ("FileAction", global::Mono.Unix.Catalog.GetString ("_File"), null, null);
+			this.FileAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("File");
+			w1.Add (this.FileAction, null);
+			this.QuitAction = new global::Gtk.Action ("QuitAction", global::Mono.Unix.Catalog.GetString ("_Quit"), null, "gtk-quit");
+			this.QuitAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("_Quit");
+			w1.Add (this.QuitAction, null);
+			this.AttachToProcessAction = new global::Gtk.Action ("AttachToProcessAction", global::Mono.Unix.Catalog.GetString ("Attach to Process"), null, null);
+			this.AttachToProcessAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("Attach to Process");
+			w1.Add (this.AttachToProcessAction, null);
+			this.HelpAction = new global::Gtk.Action ("HelpAction", global::Mono.Unix.Catalog.GetString ("Help"), null, null);
+			this.HelpAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("Help");
+			w1.Add (this.HelpAction, null);
+			this.AboutAction = new global::Gtk.Action ("AboutAction", global::Mono.Unix.Catalog.GetString ("About"), null, null);
+			this.AboutAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("About");
+			w1.Add (this.AboutAction, null);
+			this.ViewAction = new global::Gtk.Action ("ViewAction", global::Mono.Unix.Catalog.GetString ("View"), null, null);
+			this.ViewAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("View");
+			w1.Add (this.ViewAction, null);
+			this.gtkpane = new global::Gtk.ToggleAction ("gtkpane", global::Mono.Unix.Catalog.GetString ("Gtk Pane"), null, null);
+			this.gtkpane.ShortLabel = global::Mono.Unix.Catalog.GetString ("Gtk Pane");
+			w1.Add (this.gtkpane, null);
+			this.ToolsAction = new global::Gtk.Action ("ToolsAction", global::Mono.Unix.Catalog.GetString ("_Tools"), null, null);
+			this.ToolsAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("_Tools");
+			w1.Add (this.ToolsAction, null);
+			this.DescribeTypeAction = new global::Gtk.Action ("DescribeTypeAction", global::Mono.Unix.Catalog.GetString ("Describe Type"), null, null);
+			this.DescribeTypeAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("Describe Type");
+			w1.Add (this.DescribeTypeAction, null);
+			this.UIManager.InsertActionGroup (w1, 0);
+			this.AddAccelGroup (this.UIManager.AccelGroup);
+			this.Name = "Mono.CSharp.Gui.MainWindow";
+			this.Title = global::Mono.Unix.Catalog.GetString ("MainWindow");
+			this.WindowPosition = ((global::Gtk.WindowPosition)(4));
+			this.DefaultWidth = 600;
+			this.DefaultHeight = 500;
+			// Container child Mono.CSharp.Gui.MainWindow.Gtk.Container+ContainerChild
+			this.vbox1 = new global::Gtk.VBox ();
+			this.vbox1.Name = "vbox1";
+			this.vbox1.Spacing = 6;
+			// Container child vbox1.Gtk.Box+BoxChild
+			this.UIManager.AddUiFromString ("<ui><menubar name='menubar1'><menu name='FileAction' action='FileAction'><menuitem name='AttachToProcessAction' action='AttachToProcessAction'/><separator/><menuitem name='QuitAction' action='QuitAction'/></menu><menu name='ViewAction' action='ViewAction'><menuitem name='gtkpane' action='gtkpane'/></menu><menu name='ToolsAction' action='ToolsAction'><menuitem name='DescribeTypeAction' action='DescribeTypeAction'/></menu><menu name='HelpAction' action=' [...]
+			this.menubar1 = ((global::Gtk.MenuBar)(this.UIManager.GetWidget ("/menubar1")));
+			this.menubar1.Name = "menubar1";
+			this.vbox1.Add (this.menubar1);
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.menubar1]));
+			w2.Position = 0;
+			w2.Expand = false;
+			w2.Fill = false;
+			// Container child vbox1.Gtk.Box+BoxChild
+			this.notebook1 = new global::Gtk.Notebook ();
+			this.notebook1.CanFocus = true;
+			this.notebook1.Name = "notebook1";
+			this.notebook1.CurrentPage = 0;
+			this.notebook1.ShowBorder = false;
+			this.notebook1.ShowTabs = false;
+			// Container child notebook1.Gtk.Notebook+NotebookChild
+			this.hpaned = new global::Gtk.HPaned ();
+			this.hpaned.CanFocus = true;
+			this.hpaned.Name = "hpaned";
+			this.hpaned.Position = 472;
+			// Container child hpaned.Gtk.Paned+PanedChild
+			this.paned_container = new global::Gtk.EventBox ();
+			this.paned_container.Name = "paned_container";
+			this.hpaned.Add (this.paned_container);
+			global::Gtk.Paned.PanedChild w3 = ((global::Gtk.Paned.PanedChild)(this.hpaned [this.paned_container]));
+			w3.Resize = false;
+			// Container child hpaned.Gtk.Paned+PanedChild
+			this.vbox2 = new global::Gtk.VBox ();
+			this.vbox2.Name = "vbox2";
+			this.vbox2.Spacing = 6;
+			// Container child vbox2.Gtk.Box+BoxChild
+			this.expander1 = new global::Gtk.Expander (null);
+			this.expander1.CanFocus = true;
+			this.expander1.Name = "expander1";
+			this.expander1.Expanded = true;
+			// Container child expander1.Gtk.Container+ContainerChild
+			this.label4 = new global::Gtk.Label ();
+			this.label4.Name = "label4";
+			this.label4.Xpad = 10;
+			this.label4.Xalign = 0.1F;
+			this.label4.LabelProp = global::Mono.Unix.Catalog.GetString ("Set the contents of this pane by adding Gtk.Widgets children to the <b>PaneContainer</b> property.  The PaneContainer is a Gtk.EventBox.   \n\nTry it like this:\n\nLoadPackage (\"gtk-sharp-2.0\");\nvar l = new Label (\"Hello world\");\nPaneContainer.Add (l);\nl.ShowAll ();");
+			this.label4.UseMarkup = true;
+			this.label4.Wrap = true;
+			this.expander1.Add (this.label4);
+			this.GtkLabel4 = new global::Gtk.Label ();
+			this.GtkLabel4.Name = "GtkLabel4";
+			this.GtkLabel4.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>PaneContent</b>");
+			this.GtkLabel4.UseMarkup = true;
+			this.GtkLabel4.UseUnderline = true;
+			this.expander1.LabelWidget = this.GtkLabel4;
+			this.vbox2.Add (this.expander1);
+			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.expander1]));
+			w5.Position = 0;
+			w5.Expand = false;
+			w5.Fill = false;
+			// Container child vbox2.Gtk.Box+BoxChild
+			this.eventbox = new global::Gtk.EventBox ();
+			this.eventbox.Name = "eventbox";
+			this.vbox2.Add (this.eventbox);
+			global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.eventbox]));
+			w6.Position = 1;
+			this.hpaned.Add (this.vbox2);
+			this.notebook1.Add (this.hpaned);
+			// Notebook tab
+			this.label1 = new global::Gtk.Label ();
+			this.label1.Name = "label1";
+			this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("page1");
+			this.notebook1.SetTabLabel (this.hpaned, this.label1);
+			this.label1.ShowAll ();
+			// Container child notebook1.Gtk.Notebook+NotebookChild
+			this.standalone_container = new global::Gtk.EventBox ();
+			this.standalone_container.Name = "standalone_container";
+			// Container child standalone_container.Gtk.Container+ContainerChild
+			this.shellnotebook = new global::Gtk.Notebook ();
+			this.shellnotebook.CanFocus = true;
+			this.shellnotebook.Name = "shellnotebook";
+			this.shellnotebook.CurrentPage = 0;
+			this.shellnotebook.ShowTabs = false;
+			this.shellnotebook.Scrollable = true;
+			// Container child shellnotebook.Gtk.Notebook+NotebookChild
+			this.sw = new global::Gtk.ScrolledWindow ();
+			this.sw.CanFocus = true;
+			this.sw.Name = "sw";
+			this.sw.ShadowType = ((global::Gtk.ShadowType)(1));
+			this.shellnotebook.Add (this.sw);
+			// Notebook tab
+			this.label3 = new global::Gtk.Label ();
+			this.label3.Name = "label3";
+			this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("C#");
+			this.shellnotebook.SetTabLabel (this.sw, this.label3);
+			this.label3.ShowAll ();
+			this.standalone_container.Add (this.shellnotebook);
+			this.notebook1.Add (this.standalone_container);
+			global::Gtk.Notebook.NotebookChild w11 = ((global::Gtk.Notebook.NotebookChild)(this.notebook1 [this.standalone_container]));
+			w11.Position = 1;
+			// Notebook tab
+			this.label2 = new global::Gtk.Label ();
+			this.label2.Name = "label2";
+			this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("page2");
+			this.notebook1.SetTabLabel (this.standalone_container, this.label2);
+			this.label2.ShowAll ();
+			this.vbox1.Add (this.notebook1);
+			global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.notebook1]));
+			w12.Position = 1;
+			this.Add (this.vbox1);
+			if ((this.Child != null)) {
+				this.Child.ShowAll ();
+			}
+			this.Show ();
+			this.QuitAction.Activated += new global::System.EventHandler (this.OnQuitActionActivated);
+			this.AttachToProcessAction.Activated += new global::System.EventHandler (this.OnAttachToProcessActionActivated);
+			this.DescribeTypeAction.Activated += new global::System.EventHandler (this.OnDescribeTypeActionActivated);
+		}
+	}
 }
diff --git a/gsharp/gtk-gui/Mono.CSharp.Gui.ProcessSelector.cs b/gsharp/gtk-gui/Mono.CSharp.Gui.ProcessSelector.cs
index 3ae7cd7..fed8491 100644
--- a/gsharp/gtk-gui/Mono.CSharp.Gui.ProcessSelector.cs
+++ b/gsharp/gtk-gui/Mono.CSharp.Gui.ProcessSelector.cs
@@ -1,108 +1,94 @@
-// ------------------------------------------------------------------------------
-//  <autogenerated>
-//      This code was generated by a tool.
-//      
-// 
-//      Changes to this file may cause incorrect behavior and will be lost if 
-//      the code is regenerated.
-//  </autogenerated>
-// ------------------------------------------------------------------------------
 
-namespace Mono.CSharp.Gui {
-    
-    
-    public partial class ProcessSelector {
-        
-        private Gtk.Frame frame1;
-        
-        private Gtk.Alignment GtkAlignment;
-        
-        private Gtk.ScrolledWindow GtkScrolledWindow;
-        
-        private Gtk.TreeView treeview;
-        
-        private Gtk.Label GtkLabel;
-        
-        private Gtk.Button buttonCancel;
-        
-        private Gtk.Button buttonOk;
-        
-        protected virtual void Build() {
-            Stetic.Gui.Initialize(this);
-            // Widget Mono.CSharp.Gui.ProcessSelector
-            this.Name = "Mono.CSharp.Gui.ProcessSelector";
-            this.Title = Mono.Unix.Catalog.GetString("Select Mono Process to Attach");
-            this.WindowPosition = ((Gtk.WindowPosition)(4));
-            // Internal child Mono.CSharp.Gui.ProcessSelector.VBox
-            Gtk.VBox w1 = this.VBox;
-            w1.Name = "dialog1_VBox";
-            w1.BorderWidth = ((uint)(2));
-            // Container child dialog1_VBox.Gtk.Box+BoxChild
-            this.frame1 = new Gtk.Frame();
-            this.frame1.Name = "frame1";
-            this.frame1.ShadowType = ((Gtk.ShadowType)(0));
-            this.frame1.BorderWidth = ((uint)(2));
-            // Container child frame1.Gtk.Container+ContainerChild
-            this.GtkAlignment = new Gtk.Alignment(0F, 0F, 1F, 1F);
-            this.GtkAlignment.Name = "GtkAlignment";
-            this.GtkAlignment.LeftPadding = ((uint)(12));
-            // Container child GtkAlignment.Gtk.Container+ContainerChild
-            this.GtkScrolledWindow = new Gtk.ScrolledWindow();
-            this.GtkScrolledWindow.Name = "GtkScrolledWindow";
-            this.GtkScrolledWindow.ShadowType = ((Gtk.ShadowType)(1));
-            // Container child GtkScrolledWindow.Gtk.Container+ContainerChild
-            this.treeview = new Gtk.TreeView();
-            this.treeview.CanFocus = true;
-            this.treeview.Name = "treeview";
-            this.GtkScrolledWindow.Add(this.treeview);
-            this.GtkAlignment.Add(this.GtkScrolledWindow);
-            this.frame1.Add(this.GtkAlignment);
-            this.GtkLabel = new Gtk.Label();
-            this.GtkLabel.Name = "GtkLabel";
-            this.GtkLabel.LabelProp = Mono.Unix.Catalog.GetString("<b>Processes:</b>");
-            this.GtkLabel.UseMarkup = true;
-            this.frame1.LabelWidget = this.GtkLabel;
-            w1.Add(this.frame1);
-            Gtk.Box.BoxChild w5 = ((Gtk.Box.BoxChild)(w1[this.frame1]));
-            w5.Position = 0;
-            w5.Padding = ((uint)(3));
-            // Internal child Mono.CSharp.Gui.ProcessSelector.ActionArea
-            Gtk.HButtonBox w6 = this.ActionArea;
-            w6.Name = "dialog1_ActionArea";
-            w6.Spacing = 6;
-            w6.BorderWidth = ((uint)(5));
-            w6.LayoutStyle = ((Gtk.ButtonBoxStyle)(4));
-            // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
-            this.buttonCancel = new Gtk.Button();
-            this.buttonCancel.CanDefault = true;
-            this.buttonCancel.CanFocus = true;
-            this.buttonCancel.Name = "buttonCancel";
-            this.buttonCancel.UseStock = true;
-            this.buttonCancel.UseUnderline = true;
-            this.buttonCancel.Label = "gtk-cancel";
-            this.AddActionWidget(this.buttonCancel, -6);
-            Gtk.ButtonBox.ButtonBoxChild w7 = ((Gtk.ButtonBox.ButtonBoxChild)(w6[this.buttonCancel]));
-            w7.Expand = false;
-            w7.Fill = false;
-            // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
-            this.buttonOk = new Gtk.Button();
-            this.buttonOk.CanDefault = true;
-            this.buttonOk.CanFocus = true;
-            this.buttonOk.Name = "buttonOk";
-            this.buttonOk.UseUnderline = true;
-            this.buttonOk.Label = Mono.Unix.Catalog.GetString("_Attach");
-            this.AddActionWidget(this.buttonOk, -5);
-            Gtk.ButtonBox.ButtonBoxChild w8 = ((Gtk.ButtonBox.ButtonBoxChild)(w6[this.buttonOk]));
-            w8.Position = 1;
-            w8.Expand = false;
-            w8.Fill = false;
-            if ((this.Child != null)) {
-                this.Child.ShowAll();
-            }
-            this.DefaultWidth = 400;
-            this.DefaultHeight = 300;
-            this.Show();
-            this.Close += new System.EventHandler(this.OnClose);
-        }
-    }
+// This file has been generated by the GUI designer. Do not modify.
+namespace Mono.CSharp.Gui
+{
+	public partial class ProcessSelector
+	{
+		private global::Gtk.Frame frame1;
+		private global::Gtk.Alignment GtkAlignment;
+		private global::Gtk.ScrolledWindow GtkScrolledWindow;
+		private global::Gtk.TreeView treeview;
+		private global::Gtk.Label GtkLabel;
+		private global::Gtk.Button buttonCancel;
+		private global::Gtk.Button buttonOk;
+
+		protected virtual void Build ()
+		{
+			global::Stetic.Gui.Initialize (this);
+			// Widget Mono.CSharp.Gui.ProcessSelector
+			this.Name = "Mono.CSharp.Gui.ProcessSelector";
+			this.Title = global::Mono.Unix.Catalog.GetString ("Select Mono Process to Attach");
+			this.WindowPosition = ((global::Gtk.WindowPosition)(4));
+			// Internal child Mono.CSharp.Gui.ProcessSelector.VBox
+			global::Gtk.VBox w1 = this.VBox;
+			w1.Name = "dialog1_VBox";
+			w1.BorderWidth = ((uint)(2));
+			// Container child dialog1_VBox.Gtk.Box+BoxChild
+			this.frame1 = new global::Gtk.Frame ();
+			this.frame1.Name = "frame1";
+			this.frame1.ShadowType = ((global::Gtk.ShadowType)(0));
+			this.frame1.BorderWidth = ((uint)(2));
+			// Container child frame1.Gtk.Container+ContainerChild
+			this.GtkAlignment = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
+			this.GtkAlignment.Name = "GtkAlignment";
+			this.GtkAlignment.LeftPadding = ((uint)(12));
+			// Container child GtkAlignment.Gtk.Container+ContainerChild
+			this.GtkScrolledWindow = new global::Gtk.ScrolledWindow ();
+			this.GtkScrolledWindow.Name = "GtkScrolledWindow";
+			this.GtkScrolledWindow.ShadowType = ((global::Gtk.ShadowType)(1));
+			// Container child GtkScrolledWindow.Gtk.Container+ContainerChild
+			this.treeview = new global::Gtk.TreeView ();
+			this.treeview.CanFocus = true;
+			this.treeview.Name = "treeview";
+			this.GtkScrolledWindow.Add (this.treeview);
+			this.GtkAlignment.Add (this.GtkScrolledWindow);
+			this.frame1.Add (this.GtkAlignment);
+			this.GtkLabel = new global::Gtk.Label ();
+			this.GtkLabel.Name = "GtkLabel";
+			this.GtkLabel.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Processes:</b>");
+			this.GtkLabel.UseMarkup = true;
+			this.frame1.LabelWidget = this.GtkLabel;
+			w1.Add (this.frame1);
+			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(w1 [this.frame1]));
+			w5.Position = 0;
+			w5.Padding = ((uint)(3));
+			// Internal child Mono.CSharp.Gui.ProcessSelector.ActionArea
+			global::Gtk.HButtonBox w6 = this.ActionArea;
+			w6.Name = "dialog1_ActionArea";
+			w6.Spacing = 6;
+			w6.BorderWidth = ((uint)(5));
+			w6.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(4));
+			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
+			this.buttonCancel = new global::Gtk.Button ();
+			this.buttonCancel.CanDefault = true;
+			this.buttonCancel.CanFocus = true;
+			this.buttonCancel.Name = "buttonCancel";
+			this.buttonCancel.UseStock = true;
+			this.buttonCancel.UseUnderline = true;
+			this.buttonCancel.Label = "gtk-cancel";
+			this.AddActionWidget (this.buttonCancel, -6);
+			global::Gtk.ButtonBox.ButtonBoxChild w7 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w6 [this.buttonCancel]));
+			w7.Expand = false;
+			w7.Fill = false;
+			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
+			this.buttonOk = new global::Gtk.Button ();
+			this.buttonOk.CanDefault = true;
+			this.buttonOk.CanFocus = true;
+			this.buttonOk.Name = "buttonOk";
+			this.buttonOk.UseUnderline = true;
+			this.buttonOk.Label = global::Mono.Unix.Catalog.GetString ("_Attach");
+			this.AddActionWidget (this.buttonOk, -5);
+			global::Gtk.ButtonBox.ButtonBoxChild w8 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w6 [this.buttonOk]));
+			w8.Position = 1;
+			w8.Expand = false;
+			w8.Fill = false;
+			if ((this.Child != null)) {
+				this.Child.ShowAll ();
+			}
+			this.DefaultWidth = 400;
+			this.DefaultHeight = 300;
+			this.Show ();
+			this.Close += new global::System.EventHandler (this.OnClose);
+		}
+	}
 }
diff --git a/gsharp/gtk-gui/generated.cs b/gsharp/gtk-gui/generated.cs
index 8b467a5..9ef3363 100644
--- a/gsharp/gtk-gui/generated.cs
+++ b/gsharp/gtk-gui/generated.cs
@@ -1,35 +1,29 @@
-// ------------------------------------------------------------------------------
-//  <autogenerated>
-//      This code was generated by a tool.
-//      
-// 
-//      Changes to this file may cause incorrect behavior and will be lost if 
-//      the code is regenerated.
-//  </autogenerated>
-// ------------------------------------------------------------------------------
 
-namespace Stetic {
-    
-    
-    internal class Gui {
-        
-        private static bool initialized;
-        
-        internal static void Initialize(Gtk.Widget iconRenderer) {
-            if ((Stetic.Gui.initialized == false)) {
-                Stetic.Gui.initialized = true;
-            }
-        }
-    }
-    
-    internal class ActionGroups {
-        
-        public static Gtk.ActionGroup GetActionGroup(System.Type type) {
-            return Stetic.ActionGroups.GetActionGroup(type.FullName);
-        }
-        
-        public static Gtk.ActionGroup GetActionGroup(string name) {
-            return null;
-        }
-    }
+// This file has been generated by the GUI designer. Do not modify.
+namespace Stetic
+{
+	internal class Gui
+	{
+		private static bool initialized;
+
+		internal static void Initialize (Gtk.Widget iconRenderer)
+		{
+			if ((Stetic.Gui.initialized == false)) {
+				Stetic.Gui.initialized = true;
+			}
+		}
+	}
+
+	internal class ActionGroups
+	{
+		public static Gtk.ActionGroup GetActionGroup (System.Type type)
+		{
+			return Stetic.ActionGroups.GetActionGroup (type.FullName);
+		}
+
+		public static Gtk.ActionGroup GetActionGroup (string name)
+		{
+			return null;
+		}
+	}
 }
diff --git a/gui-compare/CecilMetadata.cs b/gui-compare/CecilMetadata.cs
index 2387b5e..df43b5e 100644
--- a/gui-compare/CecilMetadata.cs
+++ b/gui-compare/CecilMetadata.cs
@@ -923,6 +923,7 @@ namespace GuiCompare {
 		                                               MethodAttributes.Static |
 		                                               MethodAttributes.Abstract |
 		                                               MethodAttributes.HideBySig |
+//		                                               MethodAttributes.HasSecurity |
 		                                               MethodAttributes.SpecialName);
 		public override string GetMemberAccess ()
 		{
@@ -1011,15 +1012,24 @@ namespace GuiCompare {
 			sb.Append ('(');
 			bool first_p = true;
 			foreach (ParameterDefinition p in method_def.Parameters) {
+				TypeReference paramType = p.ParameterType;
 				if (!first_p)
 					sb.Append (", ");
 				first_p = false;
 				if (p.IsIn)
 					sb.Append ("in ");
-				else if (p.IsOut)
+				else if (paramType.IsByReference) {
+					if (beautify) {
+						sb.Append (p.IsOut ? "out " : "ref ");
+						paramType = paramType.GetElementType ();
+					} else if (p.IsOut) {
+						sb.Append ("out ");
+					}
+				} else if (p.IsOut) {
 					sb.Append ("out ");
+				}
 				sb.Append (beautify
-				           ? CecilUtils.PrettyType (p.ParameterType)
+				           ? CecilUtils.PrettyType (paramType)
 				           : CecilUtils.FormatTypeLikeCorCompare (p.ParameterType));
 				if (beautify) {
 					sb.Append (" ");
@@ -1179,55 +1189,213 @@ namespace GuiCompare {
 		public CecilAttribute (CustomAttribute ca)
 			: base (ca.Constructor.DeclaringType.FullName)
 		{
-			var sb = new StringBuilder ("[" + ca.Constructor.DeclaringType.FullName);
-			bool first = true;
-			
-			var cargs = ca.ConstructorArguments;
-			if (cargs != null && cargs.Count > 0) {
-				foreach (var argument in cargs) {
-					if (first) {
-						sb.Append (" (");
-						first = false;
-					} else
-						sb.Append (", ");
+			Dictionary<string, object> attribute_mapping = CreateAttributeMapping (ca);
+
+			foreach (string name in attribute_mapping.Keys) {
+				if (name == "TypeId")
+					continue;
+
+				object o = attribute_mapping[name];
+				Properties.Add (name, o == null ? "null" : o.ToString ());
+			}
+		}
+
+		static Dictionary<string, object> CreateAttributeMapping (CustomAttribute attribute)
+		{
+			var mapping = new Dictionary<string, object> ();
+
+			PopulateMapping (mapping, attribute);
+
+			var constructor = attribute.Constructor.Resolve ();
+			if (constructor == null || constructor.Parameters.Count == 0)
+				return mapping;
+
+			PopulateMapping (mapping, constructor, attribute);
+
+			return mapping;
+		}
+
+		static void PopulateMapping (Dictionary<string, object> mapping, CustomAttribute attribute)
+		{
+			foreach (var named_argument in attribute.Properties) {
+				var name = named_argument.Name;
+				var arg = named_argument.Argument;
+
+				if (arg.Value is CustomAttributeArgument)
+					arg = (CustomAttributeArgument) arg.Value;
+
+				mapping.Add (name, GetArgumentValue (arg.Type, arg.Value));
+			}
+		}
 
-					sb.Append (FormatValue (argument.Value));
+		static Dictionary<FieldReference, int> CreateArgumentFieldMapping (MethodDefinition constructor)
+		{
+			Dictionary<FieldReference, int> field_mapping = new Dictionary<FieldReference, int> ();
+
+			int? argument = null;
+
+			foreach (Instruction instruction in constructor.Body.Instructions) {
+				switch (instruction.OpCode.Code) {
+				case Code.Ldarg_1:
+					argument = 1;
+					break;
+				case Code.Ldarg_2:
+					argument = 2;
+					break;
+				case Code.Ldarg_3:
+					argument = 3;
+					break;
+				case Code.Ldarg:
+				case Code.Ldarg_S:
+					argument = ((ParameterDefinition) instruction.Operand).Index + 1;
+					break;
+
+				case Code.Stfld:
+					FieldReference field = (FieldReference) instruction.Operand;
+					if (field.DeclaringType.FullName != constructor.DeclaringType.FullName)
+						continue;
+
+					if (!argument.HasValue)
+						break;
+
+					if (!field_mapping.ContainsKey (field))
+						field_mapping.Add (field, (int) argument - 1);
+
+					argument = null;
+					break;
 				}
+			}
+
+			return field_mapping;
+		}
+
+		static Dictionary<PropertyDefinition, FieldReference> CreatePropertyFieldMapping (TypeDefinition type)
+		{
+			Dictionary<PropertyDefinition, FieldReference> property_mapping = new Dictionary<PropertyDefinition, FieldReference> ();
+
+			foreach (PropertyDefinition property in type.Properties) {
+				if (property.GetMethod == null)
+					continue;
+				if (!property.GetMethod.HasBody)
+					continue;
+
+				foreach (Instruction instruction in property.GetMethod.Body.Instructions) {
+					if (instruction.OpCode.Code != Code.Ldfld)
+						continue;
+
+					FieldReference field = (FieldReference) instruction.Operand;
+					if (field.DeclaringType.FullName != type.FullName)
+						continue;
+
+					property_mapping.Add (property, field);
+					break;
+				}
+			}
+
+			return property_mapping;
+		}
+
+		static void PopulateMapping (Dictionary<string, object> mapping, MethodDefinition constructor, CustomAttribute attribute)
+		{
+			if (!constructor.HasBody)
+				return;
+
+			if (constructor.DeclaringType.FullName == "System.Runtime.CompilerServices.DecimalConstantAttribute") {
+				var ca = attribute.ConstructorArguments;
+				var dca = constructor.Parameters[2].ParameterType == constructor.Module.TypeSystem.Int32 ?
+					new DecimalConstantAttribute ((byte) ca[0].Value, (byte) ca[1].Value, (int) ca[2].Value, (int) ca[3].Value, (int) ca[4].Value) :
+					new DecimalConstantAttribute ((byte) ca[0].Value, (byte) ca[1].Value, (uint) ca[2].Value, (uint) ca[3].Value, (uint) ca[4].Value);
+
+				mapping.Add ("Value", dca.Value);
+				return;
+			}
+
+			var field_mapping = CreateArgumentFieldMapping (constructor);
+			var property_mapping = CreatePropertyFieldMapping ((TypeDefinition) constructor.DeclaringType);
+
+			foreach (var pair in property_mapping) {
+				int argument;
+				if (!field_mapping.TryGetValue (pair.Value, out argument))
+					continue;
+
+				var ca_arg = attribute.ConstructorArguments[argument];
+				if (ca_arg.Value is CustomAttributeArgument)
+					ca_arg = (CustomAttributeArgument) ca_arg.Value;
 				
+				mapping[pair.Key.Name] = GetArgumentValue (ca_arg.Type, ca_arg.Value);
 			}
+		}
 
-			var properties = ca.Properties;
-			if (properties != null && properties.Count > 0) {
-				foreach (var namedArg in properties) {
-					if (first) {
-						sb.Append (" (");
-						first = false;
-					} else
-						sb.Append (", ");
-					
-					sb.AppendFormat ("{0}={1}", namedArg.Name, FormatValue (namedArg.Argument.Value));
+		static object GetArgumentValue (TypeReference reference, object value)
+		{
+			var type = reference.Resolve ();
+			if (type == null)
+				return value;
+
+			if (type.IsEnum) {
+				if (IsFlaggedEnum (type))
+					return GetFlaggedEnumValue (type, value);
+
+				return GetEnumValue (type, value);
+			}
+
+			return value;
+		}
+
+		static bool IsFlaggedEnum (TypeDefinition type)
+		{
+			if (!type.IsEnum)
+				return false;
+
+			if (type.CustomAttributes.Count == 0)
+				return false;
+
+			foreach (CustomAttribute attribute in type.CustomAttributes)
+				if (attribute.Constructor.DeclaringType.FullName == "System.FlagsAttribute")
+					return true;
+
+			return false;
+		}
+
+		static object GetFlaggedEnumValue (TypeDefinition type, object value)
+		{
+			long flags = Convert.ToInt64 (value);
+			var signature = new StringBuilder ();
+
+			for (int i = type.Fields.Count - 1; i >= 0; i--) {
+				FieldDefinition field = type.Fields[i];
+
+				if (!field.HasConstant)
+					continue;
+
+				long flag = Convert.ToInt64 (field.Constant);
+
+				if (flag == 0)
+					continue;
+
+				if ((flags & flag) == flag) {
+					if (signature.Length != 0)
+						signature.Append (", ");
+
+					signature.Append (field.Name);
+					flags -= flag;
 				}
 			}
-			
-			if (!first)
-				sb.Append (')');
-			sb.Append ("]");
-			
-			ExtraInfo = sb.ToString ();
+
+			return signature.ToString ();
 		}
 
-		string FormatValue (object o)
+		static object GetEnumValue (TypeDefinition type, object value)
 		{
-			if (o == null)
-				return "null";
+			foreach (FieldDefinition field in type.Fields) {
+				if (!field.HasConstant)
+					continue;
 
-			if (o is string)
-				return "\"" + o + "\"";
+				if (Comparer.Default.Compare (field.Constant, value) == 0)
+					return field.Name;
+			}
 
-			if (o is bool)
-				return o.ToString ().ToLowerInvariant ();
-			
-			return o.ToString ();
+			return value;
 		}
 	}
 
diff --git a/gui-compare/CompareContext.cs b/gui-compare/CompareContext.cs
index 8a3b932..b171ef8 100644
--- a/gui-compare/CompareContext.cs
+++ b/gui-compare/CompareContext.cs
@@ -26,6 +26,7 @@
 using System;
 using System.Collections.Generic;
 using System.Threading;
+using System.Linq;
 
 namespace GuiCompare {
 
@@ -153,7 +154,7 @@ namespace GuiCompare {
 		void CompareBaseTypes (ComparisonNode parent, ICompHasBaseType reference_type, ICompHasBaseType target_type)
 		{
 			if (reference_type.GetBaseType() != target_type.GetBaseType()) {
-				parent.AddError (String.Format ("reference has base class of {0}, target has base class of {1}",
+				parent.AddError (String.Format ("Expected base class of {0} but found {1}",
 								reference_type.GetBaseType(),
 								target_type.GetBaseType()));
 			}
@@ -162,7 +163,7 @@ namespace GuiCompare {
 				string ref_mod = (reference_type.IsAbstract && reference_type.IsSealed) ? "static" : "abstract";
 				string tar_mod = (target_type.IsAbstract && target_type.IsSealed) ? "static" : "abstract";
 
-				parent.AddError (String.Format ("reference is {0} {2}, target is {1} {3}",
+				parent.AddError (String.Format ("reference is {0} {2}, is {1} {3}",
 								reference_type.IsAbstract ? null : "not", target_type.IsAbstract ? null : "not",
 								ref_mod, tar_mod));
 			} else if (reference_type.IsSealed != target_type.IsSealed) {
@@ -211,19 +212,15 @@ namespace GuiCompare {
 		{
 			var r = reference.GetTypeParameters ();
 			var t = target.GetTypeParameters ();
-			if (r == null && t == null)
+			if (r == null && t == null || (r == null && t != null) || (r != null && t == null))
 				return;
 
-			if (r.Count != t.Count) {
-				throw new NotImplementedException (string.Format ("Should never happen with valid data ({0} != {1})", r.Count, t.Count));
-			}
-
 			for (int i = 0; i < r.Count; ++i) {
 				var r_i = r [i];
 				var t_i = t [i];
 				
 				if (r_i.GenericAttributes != t_i.GenericAttributes) {
-					parent.AddError (string.Format ("reference type parameter {2} has {0} generic attributes, target type parameter {3} has {1} generic attributes",
+					parent.AddError (string.Format ("Expected type parameter {2} with {0} generic attributes but found type parameter {3} with {1} generic attributes",
 						CompGenericParameter.GetGenericAttributeDesc (r_i.GenericAttributes),
 						CompGenericParameter.GetGenericAttributeDesc (t_i.GenericAttributes),
 						r_i.Name,
@@ -324,13 +321,42 @@ namespace GuiCompare {
 			
 			List<CompNamed> reference_attrs = reference_container.GetAttributes ();
 			List<CompNamed> target_attrs = target_container.GetAttributes ();
-			
-			reference_attrs.Sort (CompNamed.Compare);
-			target_attrs.Sort (CompNamed.Compare);
+
+			Comparison<CompNamed> comp = (x, y) => {
+				var r = CompNamed.Compare (x, y);
+				if (r != 0)
+					return r;
+
+				var xa = ((CompAttribute)x).Properties.Values.ToList ();
+				var ya = ((CompAttribute)y).Properties.Values.ToList ();
+
+				for (int i = 0; i < Math.Min (xa.Count, ya.Count); ++i) {
+					r = xa[i].CompareTo (ya[i]);
+					if (r != 0)
+						return r;
+				}
+
+				return 0;
+			};
+
+			reference_attrs.Sort (comp);
+			target_attrs.Sort (comp);
 			
 			while (m < reference_attrs.Count || a < target_attrs.Count) {
 				if (m == reference_attrs.Count) {
-					AddExtra (parent, target_attrs[a]);
+					
+					switch (target_attrs[a].Name) {
+						case "System.Diagnostics.DebuggerDisplayAttribute":
+						case "System.Runtime.CompilerServices.AsyncStateMachineAttribute":
+						case "System.Runtime.CompilerServices.IteratorStateMachineAttribute":
+						case "System.Diagnostics.DebuggerBrowsableAttribute":
+							// Ignore extra attributes in Mono source code
+						break;
+					default:
+						AddExtra (parent, target_attrs[a]);
+						break;
+					}
+					
 					a++;
 					continue;
 				}
@@ -345,10 +371,9 @@ namespace GuiCompare {
 
 				if (c == 0) {
 					/* the names match, further investigation is required */
-// 					Console.WriteLine ("method {0} is in both, doing more comparisons", reference_list[m].Name);
 					ComparisonNode comparison = target_attrs[a].GetComparisonNode();
 					parent.AddChild (comparison);
-					//CompareParameters (comparison, reference_list[m], target_namespace [target_list[a]]);
+					CompareAttributeArguments (comparison, (CompAttribute)reference_attrs[m], (CompAttribute)target_attrs[a]);
 					m++;
 					a++;
 				}
@@ -364,27 +389,120 @@ namespace GuiCompare {
 				}
 			}
 		}
+
+		void CompareAttributeArguments (ComparisonNode parent, CompAttribute referenceAttribute, CompAttribute actualAttribute)
+		{
+			// Ignore all parameter differences for some attributes
+			switch (referenceAttribute.Name) {
+			case "System.Diagnostics.DebuggerDisplayAttribute":
+			case "System.Diagnostics.DebuggerTypeProxyAttribute":
+			case "System.Runtime.CompilerServices.CompilationRelaxationsAttribute":
+			case "System.Reflection.AssemblyFileVersionAttribute":
+			case "System.Reflection.AssemblyCompanyAttribute":
+			case "System.Reflection.AssemblyCopyrightAttribute":
+			case "System.Reflection.AssemblyProductAttribute":
+			case "System.Reflection.AssemblyTrademarkAttribute":
+			case "System.Reflection.AssemblyInformationalVersionAttribute":
+			case "System.Reflection.AssemblyKeyFileAttribute":
+
+			// Don't care about these for now
+			case "System.ComponentModel.EditorAttribute":
+			case "System.ComponentModel.DesignerAttribute":
+				return;
+			}
+
+			foreach (var entry in referenceAttribute.Properties) {
+				if (!actualAttribute.Properties.ContainsKey (entry.Key)) {
+
+					//
+					// Ignore missing value difference for default values
+					//
+					switch (referenceAttribute.Name) {
+					case "System.AttributeUsageAttribute":
+						// AllowMultiple defaults to false
+						if (entry.Key == "AllowMultiple" && entry.Value == "False")
+							continue;
+						// Inherited defaults to true
+						if (entry.Key == "Inherited" && entry.Value == "True")
+							continue;
+						break;
+					case "System.ObsoleteAttribute":
+						if (entry.Key == "IsError" && entry.Value == "False")
+							continue;
+
+						if (entry.Key == "Message")
+							continue;
+
+						break;
+					}
+
+					parent.AddError (String.Format ("Property `{0}' value is not set. Expected value: {1}", entry.Key, entry.Value));
+					parent.Status = ComparisonStatus.Error;
+					continue;
+				}
+
+				var target_value = actualAttribute.Properties[entry.Key];
+
+				switch (referenceAttribute.Name) {
+				case "System.Runtime.CompilerServices.TypeForwardedFromAttribute":
+					if (entry.Key == "AssemblyFullName")
+						target_value = target_value.Replace ("neutral", "Neutral");
+					break;
+				case "System.Runtime.InteropServices.GuidAttribute":
+					if (entry.Key == "Value")
+						target_value = target_value.ToUpperInvariant ();
+					break;
+				case "System.ObsoleteAttribute":
+					if (entry.Key == "Message")
+						continue;
+
+					break;
+				}
+
+				if (target_value != entry.Value) {
+					parent.AddError (String.Format ("Expected value `{0}' for attribute property `{1}' but found `{2}'", entry.Value, entry.Key, target_value));
+					parent.Status = ComparisonStatus.Error;
+				}
+			}
+
+			
+			if (referenceAttribute.Properties.Count != actualAttribute.Properties.Count) {
+				foreach (var entry in actualAttribute.Properties) {
+					if (!referenceAttribute.Properties.ContainsKey (entry.Key)) {
+						parent.AddError (String.Format ("Property `{0}' should not be set", entry.Key));
+						parent.Status = ComparisonStatus.Error;
+						break;
+					}
+				}
+			}
+			
+
+			return;
+		}
 		
 		void CompareMembers (ComparisonNode parent,
 		                     ICompMemberContainer reference_container, ICompMemberContainer target_container)
 		{
+			bool is_sealed = reference_container.IsSealed;
+			
 			CompareMemberLists (parent,
-			                    reference_container.GetInterfaces(), target_container.GetInterfaces());
+			                    reference_container.GetInterfaces(), target_container.GetInterfaces(), is_sealed);
 			CompareMemberLists (parent,
-			                    reference_container.GetConstructors(), target_container.GetConstructors());
+			                    reference_container.GetConstructors(), target_container.GetConstructors(), is_sealed);
 			CompareMemberLists (parent,
-			                    reference_container.GetMethods(), target_container.GetMethods());
+			                    reference_container.GetMethods(), target_container.GetMethods(), is_sealed);
 			CompareMemberLists (parent,
-			                    reference_container.GetProperties(), target_container.GetProperties());
+			                    reference_container.GetProperties(), target_container.GetProperties(), is_sealed);
 			CompareMemberLists (parent,
-			                    reference_container.GetFields(), target_container.GetFields());
+			                    reference_container.GetFields(), target_container.GetFields(), is_sealed);
 			CompareMemberLists (parent,
-			                    reference_container.GetEvents(), target_container.GetEvents());
+			                    reference_container.GetEvents(), target_container.GetEvents(), is_sealed);
 		}
 
 		void CompareMemberLists (ComparisonNode parent,
 		                         List<CompNamed> reference_list,
-		                         List<CompNamed> target_list)
+		                         List<CompNamed> target_list,
+		                         bool isSealed)
 		{
 			int m = 0, a = 0;
 
@@ -427,9 +545,9 @@ namespace GuiCompare {
 							// Try to give some hints to the developer, best we can do with
 							// strings.
 							string extra_msg = "";
-							if (reference_access.IndexOf ("Public, Final, Virtual, HideBySig") != -1 &&
+							if (reference_access.IndexOf ("Private, Final, Virtual, HideBySig") != -1 &&
 							    target_access.IndexOf ("Public, HideBySig") != -1){
-								extra_msg = "\n\t\t<b>Hint:</b> reference uses an implicit interface implementation, target doesn't";
+								extra_msg = "\n\t\t<b>Hint:</b> reference uses an explicit interface implementation, target doesn't";
 							}
 
 							comparison.AddError (String.Format ("reference access is '<i>{0}</i>', target access is '<i>{1}</i>'{2}",
@@ -447,13 +565,53 @@ namespace GuiCompare {
 
 						CompareTypeParameters (comparison, r_method, t_method);
 						CompareParameters (comparison, r_method, t_method);
+					} else if (reference_list[m] is CompProperty) {
+						var m1 = ((CompProperty) reference_list[m]).GetMethods ();
+						var m2 = ((CompProperty) target_list[a]).GetMethods ();
+						if (m1.Count != m2.Count) {
+							comparison.AddError (String.Format ("Expected {0} accessors but found {1}", m1.Count, m2.Count));
+							comparison.Status = ComparisonStatus.Error;
+						} else {
+							for (int i = 0; i < m1.Count; ++i) {
+								string reference_access = ((CompMember) m1[i]).GetMemberAccess();
+								string target_access = ((CompMember) m2[i]).GetMemberAccess();
+								if (reference_access != target_access) {
+									// Try to give some hints to the developer, best we can do with
+									// strings.
+									string extra_msg = "";
+									if (reference_access.IndexOf ("Private, Final, Virtual, HideBySig") != -1 &&
+										target_access.IndexOf ("Public, HideBySig") != -1){
+										extra_msg = "\n\t\t<b>Hint:</b> reference uses an explicit interface implementation, target doesn't";
+									}
+
+									comparison.AddError (String.Format ("reference access is '<i>{0}</i>', target access is '<i>{1}</i>'{2}",
+																		reference_access, target_access, extra_msg));
+									comparison.Status = ComparisonStatus.Error;
+									break;
+								}
+							}
+							
+							if (m1[0].Name[0] == m2[0].Name[0]) {
+								CompareAttributes (comparison, (ICompAttributeContainer)m1[0], (ICompAttributeContainer)m2[0]);
+								if (m1.Count > 1)
+									CompareAttributes (comparison, (ICompAttributeContainer)m1[1], (ICompAttributeContainer)m2[1]);
+							} else {
+								CompareAttributes (comparison, (ICompAttributeContainer)m1[0], (ICompAttributeContainer)m2[1]);
+								if (m1.Count > 1)
+									CompareAttributes (comparison, (ICompAttributeContainer)m1[1], (ICompAttributeContainer)m2[0]);
+							}
+						}
+
+						// Compare indexer parameters
+						if (m1.Count == m2.Count)
+							CompareParameters (comparison, (ICompParameters) m1[0], (ICompParameters) m2[0]);
 					}
 
 					if (reference_list[m] is CompField) {
 						var v_ref = ((CompField)reference_list[m]).GetLiteralValue();
 						var v_tar = ((CompField)target_list[a]).GetLiteralValue();
 						if (v_ref != v_tar) {
-							comparison.AddError (String.Format ("reference field has value {0}, target field has value {1}", v_ref, v_tar));
+							comparison.AddError (String.Format ("Expected field value {0} but found value {1}", v_ref, v_tar));
 							comparison.Status = ComparisonStatus.Error;
 						}
 					}
@@ -476,13 +634,23 @@ namespace GuiCompare {
 					a++;
 				}
 				else if (c < 0) {
-					/* reference name is before target name, reference name is missing from target */
-					AddMissing (parent, reference_list[m]);
+					if (isSealed && reference_list[m].Name.Contains ("~")) {
+						// Ignore finalizer differences in sealed classes
+					} else {
+						/* reference name is before target name, reference name is missing from target */
+						AddMissing (parent, reference_list[m]);
+					}
+					
 					m++;
 				}
 				else {
-					/* reference name is after target name, target name is extra */
-					AddExtra (parent, target_list[a]);
+					if (isSealed && target_list[a].Name.Contains ("~")) {
+						// Ignore finalizer differences in sealed classes
+					} else {
+						/* reference name is after target name, target name is extra */
+						AddExtra (parent, target_list[a]);
+					}
+					
 					a++;
 				}
 			}
diff --git a/gui-compare/InfoManager.cs b/gui-compare/InfoManager.cs
index 1f8199d..246b2cd 100644
--- a/gui-compare/InfoManager.cs
+++ b/gui-compare/InfoManager.cs
@@ -205,6 +205,7 @@ namespace GuiCompare
 			"System.AddIn",
 			"System.AddIn.Contract",
 			"System.Configuration",
+			"System.ComponentModel.DataAnnotations",
 			"System.Core", 
 			// "System.Configuration.Install",
 			"System.Data",
@@ -364,12 +365,132 @@ namespace GuiCompare
 			"WindowsBase",
 		//	"XamlBuildTask"
 		};
-		
+
+		string [] api_4_5 = {
+			"mscorlib",
+
+			"System.Activities",			
+			"System.Activities.Core.Presentation",
+			"System.Activities.DurableInstancing",
+			"System.Activities.Design",
+			"System.AddIn.Contract",
+			"System.AddIn",
+			"System.ComponentModel.Composition",
+			"System.ComponentModel.DataAnnotations",
+			"System.configuration",
+		//	"System.Configuration.Install",
+			"System.Core",
+			"System.Data.DataSetExtensions",
+			"System.Data",
+			"System.Data.Entity.Design",
+			"System.Data.Entity",
+			"System.Data.Linq",
+			"System.Data.OracleClient",
+			"System.Data.Services.Client",
+			"System.Data.Services.Design",
+			"System.Data.Services",
+			"System.Data.SqlXml",
+			"System.Deployment",
+			"System.Design",
+			"System.Device",
+		//	"System.DirectoryServices.AccountManagement",
+			"System.DirectoryServices",
+		//	"System.DirectoryServices.Protocols",
+			"System",
+			"System.Drawing.Design",
+			"System.Drawing",
+			"System.Dynamic",
+			"System.EnterpriseServices",
+			"System.EnterpriseServices.Thunk",
+			"System.EnterpriseServices.Wrapper",
+			"System.IdentityModel",
+			"System.IdentityModel.Selectors",
+			"System.IO.Log",
+			"System.IO.Compression",
+			"System.IO.Compression.FileSystem",
+			"System.Management",
+		//	"System.Management.Instrumentation",
+			"System.Messaging",
+			"System.Net",
+			"System.Net.Http",
+			"System.Net.Http.WebRequest",
+			"System.Numerics",
+			"System.Printing",
+			"System.Runtime.Caching",
+			"System.Runtime.Remoting",
+			"System.Runtime.Serialization",
+			"System.Runtime.Serialization.Formatters.Soap",
+			"System.Security",
+			"System.ServiceModel.Activation",
+			"System.ServiceModel.Activities",
+			"System.ServiceModel.Channels",
+			"System.ServiceModel.Discovery",
+			"System.ServiceModel",
+			"System.ServiceModel.Routing",
+			"System.ServiceModel.Web",
+			"System.ServiceProcess",
+			"System.Speech",
+			"System.Threading.Tasks.Dataflow",
+			"System.Transactions",
+			"System.Web.Abstractions",
+			"System.Web.ApplicationServices",
+			"System.Web.DataVisualization.Design",
+			"System.Web.DataVisualization",
+			"System.Web",
+			"System.Web.DynamicData.Design",
+			"System.Web.DynamicData",
+			"System.Web.Entity.Design",
+			"System.Web.Entity",
+		//	"System.Web.Extensions.Design",
+			"System.Web.Extensions",
+		//	"System.Web.Mobile",
+		//	"System.Web.RegularExpressions",
+			"System.Web.Routing",
+			"System.Web.Services",
+			"System.Windows.Forms.DataVisualization.Design",
+			"System.Windows.Forms.DataVisualization",
+			"System.Windows.Forms",
+			"System.Windows.Presentation",
+			"System.Workflow.Activities",
+			"System.Workflow.ComponentModel",
+			"System.Workflow.Runtime",
+			"System.WorkflowServices",
+			"System.Xaml",
+			"System.Xaml.Hosting",
+			"System.Xml",
+			"System.Xml.Linq",
+
+			"Microsoft.Build.Conversion.v4.0",
+			"Microsoft.Build",
+			"Microsoft.Build.Engine",
+			"Microsoft.Build.Framework",
+			"Microsoft.Build.Tasks.v4.0",
+			"Microsoft.Build.Utilities.v4.0",
+			"Microsoft.CSharp",
+			"Microsoft.JScript",
+			"Microsoft.VisualBasic.Compatibility.Data",
+			"Microsoft.VisualBasic.Compatibility",
+			"Microsoft.VisualBasic",
+
+			"PresentationBuildTasks",
+			"PresentationCore",
+			"PresentationFramework.Aero",
+			"PresentationFramework.Classic",
+			"PresentationFramework",
+			"PresentationFramework.Luna",
+			"PresentationFramework.Royale",
+			"PresentationUI",
+			"ReachFramework",
+
+			"WindowsBase",
+		//	"XamlBuildTask"
+		};
+
 		const string masterinfos_version = "2.8";
 
 		static Uri GetMasterInfoUri (string file)
 		{
-			return new Uri (string.Format ("http://mono.ximian.com/masterinfos/{0}/{1}", masterinfos_version, file));
+			return new Uri (string.Format ("http://go-mono.com/masterinfos/{0}/{1}", masterinfos_version, file));
 		}
 		
 		public static void Init ()
@@ -417,9 +538,13 @@ namespace GuiCompare
 				break;
 				
 			case "4.0":
-				u = GetMasterInfoUri ("masterinfos-4.0.tar.gz");			
+				u = GetMasterInfoUri ("masterinfos-4.0.tar.gz");
 				break;
-			
+
+			case "4.5":
+				u = GetMasterInfoUri ("masterinfos-4.5.tar.gz");
+				break;
+
 			case "SL2":
 				u = GetMasterInfoUri ("masterinfos-SL2.tar.gz");
 				break;
@@ -564,6 +689,8 @@ namespace GuiCompare
 					main.Title = String.Format ("{0} to {1}", assemblyfile, masterinfo);
 				});
 			});
+			
+			main.SetComparedProfile (profile);
 		}
 
 		void Populate (Menu container, string caption, string pdir, string collection, string [] elements)
@@ -572,7 +699,7 @@ namespace GuiCompare
 			string MONO_GAC_PREFIX = Environment.GetEnvironmentVariable ("MONO_GAC_PREFIX");
 			string[] gac_prefixes = null;
 
-			if (MONO_GAC_PREFIX != null)
+			if (!string.IsNullOrEmpty (MONO_GAC_PREFIX))
 				gac_prefixes = MONO_GAC_PREFIX.Split (':');
 
 			MenuItem item = new MenuItem (caption);
@@ -671,12 +798,17 @@ namespace GuiCompare
 		// 
 		// Constructor
 		//
-		public InfoManager (MainWindow main)
+		public InfoManager (MainWindow main, string profilePath)
 		{
 			this.main = main;
 			
-			string corlibdir = System.IO.Path.GetDirectoryName (typeof (int).Assembly.Location);
-			monodir = System.IO.Path.GetFullPath (System.IO.Path.Combine (corlibdir, "..")); 
+			if (profilePath == null) {
+				string corlibdir = System.IO.Path.GetDirectoryName (typeof (int).Assembly.Location);
+				monodir = System.IO.Path.GetFullPath (System.IO.Path.Combine (corlibdir, "..")); 
+			} else {
+				monodir = profilePath;
+			}
+			
 			moondir = System.IO.Path.Combine (monodir, @"../moonlight/plugin");
 	
 			// Work around limitation in Stetic, there is no way
@@ -728,14 +860,15 @@ namespace GuiCompare
 			Populate (sub, "API 3.0 sp1", GetVersionPath ("2.0", "net_2_0"), "3.0", api_3_0);
 			Populate (sub, "API 3.5 sp1", GetVersionPath ("2.0", "net_2_0"), "3.5", api_3_5);
 			Populate (sub, "API 4.0", GetVersionPath ("4.0", "net_4_0"), "4.0", api_4_0);
+			Populate (sub, "API 4.5", GetVersionPath ("4.5", "net_4_5"), "4.5", api_4_5);
 //			Populate (sub, "Silverlight 2.0", GetVersionPath ("2.1", "net_2_1"), "SL2", api_sl2);
 //			Populate (sub, "Silverlight 3.0", GetVersionPath ("2.1", "net_2_1"), "SL3", api_sl2);
 			Populate (sub, "Silverlight 4.0", GetVersionPath ("2.1", "net_2_1"), "SL4", api_sl4);
 		}
 		
-		static string GetVersionPath (string version, string profile)
+		string GetVersionPath (string version, string profile)
 		{
-			if (string.IsNullOrEmpty (Environment.GetEnvironmentVariable ("MONO_PATH")))
+			if (!monodir.Contains (Path.Combine ("mcs", "class", "lib")))
 				return version;
 
 			// Developer's version pointing to /mcs/class/lib/<profile>/
diff --git a/gui-compare/Main.cs b/gui-compare/Main.cs
index 49c4617..e522501 100644
--- a/gui-compare/Main.cs
+++ b/gui-compare/Main.cs
@@ -36,7 +36,7 @@ namespace GuiCompare
 		{
 			Application.Init ();
 			
- 			try { 
+ 			try {
 				InfoManager.Init ();
 			} catch (Exception e) {
 				Dialog d = new Dialog ("Error", null, DialogFlags.Modal, new object [] {
@@ -46,7 +46,12 @@ namespace GuiCompare
 				d.Run ();
 				return;
 			}
-			MainWindow win = new MainWindow ();
+			
+			string profile_path = null;
+			if (args.Length != 0 && args[0].StartsWith ("--profile-path="))
+				profile_path = args[0].Substring (15);
+			
+			MainWindow win = new MainWindow (profile_path);
 			win.Show ();
 			if (args.Length == 2 && File.Exists (args [0]) && File.Exists (args [1])){
 				win.ComparePaths (args [0], args [1]);
diff --git a/gui-compare/MainWindow.cs b/gui-compare/MainWindow.cs
index 0da25a4..2792d0d 100644
--- a/gui-compare/MainWindow.cs
+++ b/gui-compare/MainWindow.cs
@@ -38,6 +38,7 @@ public partial class MainWindow: Gtk.Window
 	InfoManager info_manager;
 	Func<CompAssembly> reference_loader, target_loader;
 	CompareContext context;
+	string active_profile;
 
 	static readonly Regex markupRegex = new Regex (@"<(?:[^""']+?|.+?(?:""|').*?(?:""|')?.*?)*?>", RegexOptions.Compiled | RegexOptions.IgnoreCase);
 	static Gdk.Pixbuf classPixbuf, delegatePixbuf, enumPixbuf;
@@ -103,7 +104,7 @@ public partial class MainWindow: Gtk.Window
 		Gdk.Color.Parse ("#000000", ref black);		
 	}
 
-	public MainWindow () : base(Gtk.WindowType.Toplevel)
+	public MainWindow (string profilePath) : base(Gtk.WindowType.Toplevel)
 	{
 		Build ();
 		notebook1.Page = 1;
@@ -113,7 +114,7 @@ public partial class MainWindow: Gtk.Window
 		//
 		// Configure the GUI
 		//
-		info_manager = new InfoManager (this);
+		info_manager = new InfoManager (this, profilePath);
 		
 		treeStore = new Gtk.TreeStore (typeof (string), // Name
 		                               typeof (Gdk.Pixbuf), typeof (Gdk.Pixbuf), // TypeIcon, StatusIcon
@@ -245,7 +246,7 @@ public partial class MainWindow: Gtk.Window
 
 				string msdnUrl = n != null ? n.MSDNUrl : null;
 				if (!String.IsNullOrEmpty (msdnUrl))
-					Status = msdnUrl;
+					Status = GetMSDNVersionedUrl (msdnUrl);
 				else
 					Status = String.Empty;
 			}
@@ -261,7 +262,7 @@ public partial class MainWindow: Gtk.Window
 				return;
 
 			System.Diagnostics.Process browser = new System.Diagnostics.Process ();
-			browser.StartInfo.FileName = n.MSDNUrl;
+			browser.StartInfo.FileName = GetMSDNVersionedUrl (n.MSDNUrl);
 			browser.StartInfo.UseShellExecute = true;
 			browser.Start ();
 		};
@@ -361,6 +362,22 @@ public partial class MainWindow: Gtk.Window
 		tag.Underline = Pango.Underline.Single;
 		buffer.TagTable.Add (tag);
 	}
+	
+	string GetMSDNVersionedUrl (string url)
+	{
+		switch (active_profile) {
+			case "2.0":
+				return url.Replace (".aspx", "(v=VS.80).aspx");
+			case "3.0":
+				return url.Replace (".aspx", "(v=VS.90).aspx");
+			case "4.0":
+				return url.Replace (".aspx", "(v=VS.100).aspx");
+			case "4.5":
+				return url.Replace (".aspx", "(v=VS.110).aspx");
+			default:
+				return url;
+		}
+	}
 
 	void InsertWithMarkup (TextBuffer buffer, ref TextIter iter, string text)
 	{
@@ -509,6 +526,11 @@ public partial class MainWindow: Gtk.Window
 			SetTarget (delegate { return new CecilAssembly (cd.TargetPath); });
 	}
 	
+	public void SetComparedProfile (string profile)
+	{
+		active_profile = profile;
+	}
+	
 	public void StartCompare (WaitCallback done)
 	{		
 		AdditionalInfoWindow.Visible = false;
diff --git a/gui-compare/Makefile.am b/gui-compare/Makefile.am
index ef805eb..59829b2 100644
--- a/gui-compare/Makefile.am
+++ b/gui-compare/Makefile.am
@@ -56,4 +56,4 @@ assemblies = -r:System -r:System.Core -r:Mono.Posix -r:System.Xml
 ress= $(foreach res,$(gui_compare_resources), $(addprefix -resource:,$(res)),$(notdir $(res)))
 
 gui-compare.exe: $(gui_compare_sources) $(gui_compare_resources)
-	$(GMCS) -noconfig -codepage:utf8 -warn:4 -optimize+ -debug -define:DEBUG -target:exe -out:gui-compare.exe $(gui_compare_sources) $(ress) $(packages) $(assemblies)
+	$(DMCS) -noconfig -codepage:utf8 -warn:4 -optimize+ -debug -define:DEBUG -target:exe -out:gui-compare.exe $(gui_compare_sources) $(ress) $(packages) $(assemblies)
diff --git a/gui-compare/Makefile.in b/gui-compare/Makefile.in
index 8247305..4074d1d 100644
--- a/gui-compare/Makefile.in
+++ b/gui-compare/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,20 +60,45 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES = gui-compare
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(guicomparedir)"
-binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
-SCRIPTS = $(bin_SCRIPTS)
-SOURCES =
-DIST_SOURCES =
+CONFIG_CLEAN_VPATH_FILES =
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-guicompareDATA_INSTALL = $(INSTALL_DATA)
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(guicomparedir)"
+SCRIPTS = $(bin_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(guicompare_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
@@ -117,6 +161,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -130,9 +175,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -262,14 +310,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gui-compare/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gui-compare/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gui-compare/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gui-compare/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -287,44 +335,65 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 gui-compare: $(top_builddir)/config.status $(srcdir)/gui-compare.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-binSCRIPTS: $(bin_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-	    $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-binSCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
-	done
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
 install-guicompareDATA: $(guicompare_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(guicomparedir)" || $(MKDIR_P) "$(DESTDIR)$(guicomparedir)"
-	@list='$(guicompare_DATA)'; for p in $$list; do \
+	@list='$(guicompare_DATA)'; test -n "$(guicomparedir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(guicomparedir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(guicomparedir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(guicompareDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(guicomparedir)/$$f'"; \
-	  $(guicompareDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(guicomparedir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(guicomparedir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(guicomparedir)" || exit $$?; \
 	done
 
 uninstall-guicompareDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(guicompare_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(guicomparedir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(guicomparedir)/$$f"; \
-	done
+	@list='$(guicompare_DATA)'; test -n "$(guicomparedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(guicomparedir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -348,13 +417,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -375,10 +448,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -386,6 +464,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -404,6 +483,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -412,18 +493,28 @@ install-data-am: install-guicompareDATA
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am: install-binSCRIPTS
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -460,7 +551,8 @@ uninstall-am: uninstall-binSCRIPTS uninstall-guicompareDATA
 
 
 gui-compare.exe: $(gui_compare_sources) $(gui_compare_resources)
-	$(GMCS) -noconfig -codepage:utf8 -warn:4 -optimize+ -debug -define:DEBUG -target:exe -out:gui-compare.exe $(gui_compare_sources) $(ress) $(packages) $(assemblies)
+	$(DMCS) -noconfig -codepage:utf8 -warn:4 -optimize+ -debug -define:DEBUG -target:exe -out:gui-compare.exe $(gui_compare_sources) $(ress) $(packages) $(assemblies)
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gui-compare/MasterMetadata.cs b/gui-compare/MasterMetadata.cs
index f25468e..189b42c 100644
--- a/gui-compare/MasterMetadata.cs
+++ b/gui-compare/MasterMetadata.cs
@@ -841,6 +841,9 @@ namespace GuiCompare {
 			if (props.Count == 0)
 				return;
 
+			foreach (var entry in props)
+				Properties.Add (entry.Key, entry.Value);
+
 			if (name == "System.Runtime.CompilerServices.TypeForwardedToAttribute") {
 				string dest;
 				if (props.TryGetValue ("Destination", out dest) && !String.IsNullOrEmpty (dest))
diff --git a/gui-compare/Masterinfo.cs b/gui-compare/Masterinfo.cs
index b91f99b..bc13a63 100644
--- a/gui-compare/Masterinfo.cs
+++ b/gui-compare/Masterinfo.cs
@@ -205,8 +205,13 @@ namespace GuiCompare {
 				string name = n.Attributes ["name"].Value;
 				if (CheckIfAdd (name, n)) {
 					string key = GetNodeKey (name, n);
-					//keys.Add (key, name);
-					keys [key] = name;
+					if (keys.Contains (key)) {
+						if ((string) keys[key] != name)
+							throw new NotImplementedException ("Attribute with same name but diffent value");
+					} else {
+						keys.Add (key, name);
+					}
+					
 					LoadExtraData (key, n);
 				}
 			}
@@ -532,24 +537,10 @@ namespace GuiCompare {
 
 	public class XMLAttributeProperties: XMLNameGroup
 	{
-		static Dictionary <string, string> ignored_properties;
 		SortedDictionary <string, string> properties;
 
 		static XMLAttributeProperties ()
 		{
-
-			ignored_properties = new Dictionary <string, string> ();
-			ignored_properties.Add ("System.Reflection.AssemblyKeyFileAttribute", "KeyFile");
-			ignored_properties.Add ("System.Reflection.AssemblyCompanyAttribute", "Company");
-			ignored_properties.Add ("System.Reflection.AssemblyConfigurationAttribute", "Configuration");
-			ignored_properties.Add ("System.Reflection.AssemblyCopyrightAttribute", "Copyright");
-			ignored_properties.Add ("System.Reflection.AssemblyProductAttribute", "Product");
-			ignored_properties.Add ("System.Reflection.AssemblyTrademarkAttribute", "Trademark");
-			ignored_properties.Add ("System.Reflection.AssemblyInformationalVersionAttribute", "InformationalVersion");
-
-			ignored_properties.Add ("System.ObsoleteAttribute", "Message");
-			ignored_properties.Add ("System.IO.IODescriptionAttribute", "Description");
-			ignored_properties.Add ("System.Diagnostics.MonitoringDescriptionAttribute", "Description");
 		}
 
 		string attribute;
@@ -571,15 +562,9 @@ namespace GuiCompare {
 			if (node.ChildNodes == null)
 				return;
 
-			string ignored;
-
-			if (!ignored_properties.TryGetValue (attribute, out ignored))
-				ignored = null;
 
 			foreach (XmlNode n in node.ChildNodes) {
 				string name = n.Attributes["name"].Value;
-				if (ignored != null && ignored == name)
-					continue;
 
 				if (n.Attributes["null"] != null) {
 					Properties.Add (name, null);
@@ -1045,9 +1030,11 @@ namespace GuiCompare {
 
 		public override string GetNodeKey (string name, XmlNode node)
 		{
-			if (genericParameters != null)
-				name = name + ":" + genericParameters.Count;
-
+			XmlNode genericNode = node.SelectSingleNode ("generic-parameters");
+			if (genericNode != null) {
+				name = name + "`" + genericNode.ChildNodes.Count;
+			}
+			
 			// for explicit/implicit operators we need to include the return
 			// type in the key to allow matching; as a side-effect, differences
 			// in return types will be reported as extra/missing methods
diff --git a/gui-compare/Metadata.cs b/gui-compare/Metadata.cs
index f365f7c..a04f39e 100644
--- a/gui-compare/Metadata.cs
+++ b/gui-compare/Metadata.cs
@@ -69,6 +69,8 @@ namespace GuiCompare {
 
 	public interface ICompMemberContainer
 	{
+		bool IsSealed { get; }
+
 		List<CompNamed> GetInterfaces ();
 		List<CompNamed> GetConstructors();
 		List<CompNamed> GetMethods();
@@ -130,27 +132,33 @@ namespace GuiCompare {
 
 		public static int Compare (CompNamed x, CompNamed y)
 		{
-			int res = string.Compare (x.Name, y.Name);
-			if (res != 0)
-				return res;
-
 			var x_g = x as CompMethod;
 			var y_g = y as CompMethod;
+			
 			if (x_g == null || y_g == null)
-				return res;
+				return string.Compare (x.Name, y.Name);
 
 			var x_tp = x_g.GetTypeParameters ();
+			if (x_tp != null && x_tp.Count == 0)
+				x_tp = null;
+			
 			var y_tp = y_g.GetTypeParameters ();
+			if (y_tp != null && y_tp.Count == 0)
+				y_tp = null;
+			
 			if (x_tp == null && y_tp != null)
 				return -1;
 
 			if (x_tp != null && y_tp == null)
 				return 1;
 
-			if (x_tp == null && y_tp == null)
-				return res;
-
-			return x_tp.Count.CompareTo (y_tp.Count);
+			if (x_tp != null && y_tp != null) {
+				var res = x_tp.Count.CompareTo (y_tp.Count);
+				if (res != 0)
+					return res;
+			}
+			
+			return string.Compare (x.Name, y.Name);
 		}
 
 		string displayName;
@@ -338,7 +346,10 @@ namespace GuiCompare {
 		public CompAttribute (string typename)
 			: base (typename, CompType.Attribute)
 		{
+			Properties = new SortedDictionary<string, string> ();
 		}
+
+		public IDictionary<string, string> Properties { get; private set;  }
 	}
 	
 	public abstract class CompGenericParameter : CompNamed, ICompAttributeContainer {
diff --git a/gui-compare/gtk-gui/GuiCompare.CustomCompare.cs b/gui-compare/gtk-gui/GuiCompare.CustomCompare.cs
index 7ca40c7..a027fb2 100644
--- a/gui-compare/gtk-gui/GuiCompare.CustomCompare.cs
+++ b/gui-compare/gtk-gui/GuiCompare.CustomCompare.cs
@@ -5,17 +5,27 @@ namespace GuiCompare
 	public partial class CustomCompare
 	{
 		private global::Gtk.HBox hbox1;
+		
 		private global::Gtk.Frame frame1;
+		
 		private global::Gtk.Alignment GtkAlignment2;
+		
 		private global::guicompare.ProviderSelector reference;
+		
 		private global::Gtk.Label GtkLabel4;
+		
 		private global::Gtk.Frame frame2;
+		
 		private global::Gtk.Alignment GtkAlignment3;
+		
 		private global::guicompare.ProviderSelector target;
+		
 		private global::Gtk.Label GtkLabel9;
+		
 		private global::Gtk.Button buttonCancel;
+		
 		private global::Gtk.Button buttonOk;
-
+		
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -40,7 +50,9 @@ namespace GuiCompare
 			this.GtkAlignment2.Name = "GtkAlignment2";
 			this.GtkAlignment2.LeftPadding = ((uint)(12));
 			// Container child GtkAlignment2.Gtk.Container+ContainerChild
-			this.reference = null;
+			this.reference = new guicompare.ProviderSelector();
+			this.reference.Events = ((Gdk.EventMask)(256));
+			this.reference.Name = "reference";
 			this.GtkAlignment2.Add (this.reference);
 			this.frame1.Add (this.GtkAlignment2);
 			this.GtkLabel4 = new global::Gtk.Label ();
@@ -61,7 +73,9 @@ namespace GuiCompare
 			this.GtkAlignment3.Name = "GtkAlignment3";
 			this.GtkAlignment3.LeftPadding = ((uint)(12));
 			// Container child GtkAlignment3.Gtk.Container+ContainerChild
-			this.target = null;
+			this.target = new guicompare.ProviderSelector();
+			this.target.Events = ((Gdk.EventMask)(256));
+			this.target.Name = "target";
 			this.GtkAlignment3.Add (this.target);
 			this.frame2.Add (this.GtkAlignment3);
 			this.GtkLabel9 = new global::Gtk.Label ();
diff --git a/gui-compare/gtk-gui/MainWindow.cs b/gui-compare/gtk-gui/MainWindow.cs
index 6e2d738..addb7cd 100644
--- a/gui-compare/gtk-gui/MainWindow.cs
+++ b/gui-compare/gtk-gui/MainWindow.cs
@@ -4,53 +4,99 @@
 public partial class MainWindow
 {
 	private global::Gtk.UIManager UIManager;
+	
 	private global::Gtk.Action File;
+	
 	private global::Gtk.Action quit;
+	
 	private global::Gtk.Action Compare;
+	
 	private global::Gtk.Action Custom;
+	
 	private global::Gtk.Action a;
+	
 	private global::Gtk.Action b;
+	
 	private global::Gtk.Action View;
+	
 	private global::Gtk.ToggleAction ShowMissing;
+	
 	private global::Gtk.ToggleAction ShowExtra;
+	
 	private global::Gtk.ToggleAction ShowPresent;
+	
 	private global::Gtk.ToggleAction ShowErrors;
+	
 	private global::Gtk.Action Refresh;
+	
 	private global::Gtk.ToggleAction ShowTodo;
+	
 	private global::Gtk.Action RecentComparisonsAction;
+	
 	private global::Gtk.ToggleAction ShowNotImplemented;
+	
 	private global::Gtk.Action ToggleRowExpansionAction;
+	
 	private global::Gtk.VBox vbox1;
+	
 	private global::Gtk.MenuBar menubar1;
+	
 	private global::Gtk.Notebook notebook1;
+	
 	private global::Gtk.ScrolledWindow GtkScrolledWindow;
+	
 	private global::Gtk.TreeView tree;
+	
 	private global::Gtk.Label label1;
+	
 	private global::Gtk.Label label3;
+	
 	private global::Gtk.Label label2;
+	
 	private global::Gtk.ScrolledWindow AdditionalInfoWindow;
+	
 	private global::Gtk.TextView AdditionalInfoText;
+	
 	private global::Gtk.Expander expander1;
+	
 	private global::Gtk.Table table1;
+	
 	private global::Gtk.Label label4;
+	
 	private global::Gtk.Label label5;
+	
 	private global::Gtk.Label label6;
+	
 	private global::Gtk.Label label7;
+	
 	private global::Gtk.Label label8;
+	
 	private global::Gtk.Label label9;
+	
 	private global::Gtk.Image legendImageError;
+	
 	private global::Gtk.Image legendImageExtra;
+	
 	private global::Gtk.Image legendImageMissing;
+	
 	private global::Gtk.Image legendImageNIEX;
+	
 	private global::Gtk.Image legendImageOK;
+	
 	private global::Gtk.Image legendImageTODO;
+	
 	private global::Gtk.VSeparator vseparator1;
+	
 	private global::Gtk.VSeparator vseparator2;
+	
 	private global::Gtk.VSeparator vseparator3;
+	
 	private global::Gtk.Label GtkLabel4;
+	
 	private global::Gtk.Statusbar statusbar1;
+	
 	private global::Gtk.ProgressBar progressbar1;
-
+	
 	protected virtual void Build ()
 	{
 		global::Stetic.Gui.Initialize (this);
diff --git a/gui-compare/gtk-gui/generated.cs b/gui-compare/gtk-gui/generated.cs
index 75935e2..71410df 100644
--- a/gui-compare/gtk-gui/generated.cs
+++ b/gui-compare/gtk-gui/generated.cs
@@ -5,7 +5,7 @@ namespace Stetic
 	internal class Gui
 	{
 		private static bool initialized;
-
+		
 		internal static void Initialize (Gtk.Widget iconRenderer)
 		{
 			if ((Stetic.Gui.initialized == false)) {
@@ -13,12 +13,13 @@ namespace Stetic
 			}
 		}
 	}
-
+	
 	internal class BinContainer
 	{
 		private Gtk.Widget child;
+		
 		private Gtk.UIManager uimanager;
-
+		
 		public static BinContainer Attach (Gtk.Bin bin)
 		{
 			BinContainer bc = new BinContainer ();
@@ -27,32 +28,32 @@ namespace Stetic
 			bin.Added += new Gtk.AddedHandler (bc.OnAdded);
 			return bc;
 		}
-
+		
 		private void OnSizeRequested (object sender, Gtk.SizeRequestedArgs args)
 		{
 			if ((this.child != null)) {
 				args.Requisition = this.child.SizeRequest ();
 			}
 		}
-
+		
 		private void OnSizeAllocated (object sender, Gtk.SizeAllocatedArgs args)
 		{
 			if ((this.child != null)) {
 				this.child.Allocation = args.Allocation;
 			}
 		}
-
+		
 		private void OnAdded (object sender, Gtk.AddedArgs args)
 		{
 			this.child = args.Widget;
 		}
-
+		
 		public void SetUiManager (Gtk.UIManager uim)
 		{
 			this.uimanager = uim;
 			this.child.Realized += new System.EventHandler (this.OnRealized);
 		}
-
+		
 		private void OnRealized (object sender, System.EventArgs args)
 		{
 			if ((this.uimanager != null)) {
@@ -65,14 +66,14 @@ namespace Stetic
 			}
 		}
 	}
-
+	
 	internal class ActionGroups
 	{
 		public static Gtk.ActionGroup GetActionGroup (System.Type type)
 		{
 			return Stetic.ActionGroups.GetActionGroup (type.FullName);
 		}
-
+		
 		public static Gtk.ActionGroup GetActionGroup (string name)
 		{
 			return null;
diff --git a/gui-compare/gtk-gui/gui.stetic b/gui-compare/gtk-gui/gui.stetic
index ce143e5..da239dc 100644
--- a/gui-compare/gtk-gui/gui.stetic
+++ b/gui-compare/gtk-gui/gui.stetic
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <stetic-interface>
   <configuration>
-    <images-root-path>..</images-root-path>
-    <target-gtk-version>2.10</target-gtk-version>
+    <images-root-path>../../gui-compare</images-root-path>
+    <target-gtk-version>2.12</target-gtk-version>
   </configuration>
   <import>
     <widget-library name="glade-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
diff --git a/gui-compare/gtk-gui/guicompare.ProviderSelector.cs b/gui-compare/gtk-gui/guicompare.ProviderSelector.cs
index dbc910a..32b051f 100644
--- a/gui-compare/gtk-gui/guicompare.ProviderSelector.cs
+++ b/gui-compare/gtk-gui/guicompare.ProviderSelector.cs
@@ -5,12 +5,17 @@ namespace guicompare
 	public partial class ProviderSelector
 	{
 		private global::Gtk.Table table2;
+		
 		private global::Gtk.FileChooserButton filechooserbutton1;
+		
 		private global::Gtk.FileChooserButton filechooserbutton2;
+		
 		private global::Gtk.Label label2;
+		
 		private global::Gtk.RadioButton radiobutton1;
+		
 		private global::Gtk.RadioButton radiobutton2;
-
+		
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
diff --git a/gui-compare/gui-compare.in b/gui-compare/gui-compare.in
index 456a9fa..aa39b8f 100644
--- a/gui-compare/gui-compare.in
+++ b/gui-compare/gui-compare.in
@@ -1,3 +1,5 @@
 #!/bin/sh
 
+export DYLD_FALLBACK_LIBRARY_PATH=/Library/Frameworks/Mono.framework/Versions/Current/lib:/usr/lib 
+
 exec mono $MONO_OPTIONS "@prefix@/lib/gui-compare/gui-compare.exe" "$@"
diff --git a/ilcontrast/Makefile.in b/ilcontrast/Makefile.in
index b8cb809..9abc6c6 100644
--- a/ilcontrast/Makefile.in
+++ b/ilcontrast/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,23 +60,46 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES = ilcontrast
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(assemblydir)" \
-	"$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(pixmapdir)"
-binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
-SCRIPTS = $(bin_SCRIPTS)
-SOURCES =
-DIST_SOURCES =
+CONFIG_CLEAN_VPATH_FILES =
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-assemblyDATA_INSTALL = $(INSTALL_DATA)
-desktopDATA_INSTALL = $(INSTALL_DATA)
-pixmapDATA_INSTALL = $(INSTALL_DATA)
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(assemblydir)" \
+	"$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(pixmapdir)"
+SCRIPTS = $(bin_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(assembly_DATA) $(desktop_DATA) $(pixmap_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
@@ -120,6 +162,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -133,9 +176,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -244,14 +290,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  ilcontrast/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  ilcontrast/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ilcontrast/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu ilcontrast/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -269,78 +315,107 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 ilcontrast: $(top_builddir)/config.status $(srcdir)/ilcontrast.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-binSCRIPTS: $(bin_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-	    $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-binSCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
-	done
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
 install-assemblyDATA: $(assembly_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(assemblydir)" || $(MKDIR_P) "$(DESTDIR)$(assemblydir)"
-	@list='$(assembly_DATA)'; for p in $$list; do \
+	@list='$(assembly_DATA)'; test -n "$(assemblydir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(assemblydir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(assemblydir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(assemblyDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(assemblydir)/$$f'"; \
-	  $(assemblyDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(assemblydir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(assemblydir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(assemblydir)" || exit $$?; \
 	done
 
 uninstall-assemblyDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(assembly_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(assemblydir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(assemblydir)/$$f"; \
-	done
+	@list='$(assembly_DATA)'; test -n "$(assemblydir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(assemblydir)'; $(am__uninstall_files_from_dir)
 install-desktopDATA: $(desktop_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(desktopdir)" || $(MKDIR_P) "$(DESTDIR)$(desktopdir)"
-	@list='$(desktop_DATA)'; for p in $$list; do \
+	@list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(desktopdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(desktopdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(desktopDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(desktopdir)/$$f'"; \
-	  $(desktopDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(desktopdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(desktopdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(desktopdir)" || exit $$?; \
 	done
 
 uninstall-desktopDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(desktop_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(desktopdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(desktopdir)/$$f"; \
-	done
+	@list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(desktopdir)'; $(am__uninstall_files_from_dir)
 install-pixmapDATA: $(pixmap_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(pixmapdir)" || $(MKDIR_P) "$(DESTDIR)$(pixmapdir)"
-	@list='$(pixmap_DATA)'; for p in $$list; do \
+	@list='$(pixmap_DATA)'; test -n "$(pixmapdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(pixmapdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(pixmapdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(pixmapDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pixmapdir)/$$f'"; \
-	  $(pixmapDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pixmapdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pixmapdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pixmapdir)" || exit $$?; \
 	done
 
 uninstall-pixmapDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(pixmap_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(pixmapdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(pixmapdir)/$$f"; \
-	done
+	@list='$(pixmap_DATA)'; test -n "$(pixmapdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(pixmapdir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -364,13 +439,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -391,10 +470,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -402,6 +486,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -421,6 +506,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -430,18 +517,28 @@ install-data-am: install-assemblyDATA install-desktopDATA \
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am: install-binSCRIPTS
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -489,6 +586,7 @@ Global.cs: Global.cs.in
 
 ilcontrast.desktop: ilcontrast.desktop.in
 	sed -e "s|\@bindir\@|$(bindir)|" $< > $@
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/install-sh b/install-sh
index a5897de..a9244eb 100755
--- a/install-sh
+++ b/install-sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2006-12-25.00
+scriptversion=2011-01-19.21; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -156,6 +156,10 @@ while test $# -ne 0; do
     -s) stripcmd=$stripprog;;
 
     -t) dst_arg=$2
+	# Protect names problematic for `test' and other utilities.
+	case $dst_arg in
+	  -* | [=\(\)!]) dst_arg=./$dst_arg;;
+	esac
 	shift;;
 
     -T) no_target_directory=true;;
@@ -186,6 +190,10 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
     fi
     shift # arg
     dst_arg=$arg
+    # Protect names problematic for `test' and other utilities.
+    case $dst_arg in
+      -* | [=\(\)!]) dst_arg=./$dst_arg;;
+    esac
   done
 fi
 
@@ -200,7 +208,11 @@ if test $# -eq 0; then
 fi
 
 if test -z "$dir_arg"; then
-  trap '(exit $?); exit' 1 2 13 15
+  do_exit='(exit $ret); exit $ret'
+  trap "ret=129; $do_exit" 1
+  trap "ret=130; $do_exit" 2
+  trap "ret=141; $do_exit" 13
+  trap "ret=143; $do_exit" 15
 
   # Set umask so as not to create temps with too-generous modes.
   # However, 'strip' requires both read and write access to temps.
@@ -228,9 +240,9 @@ fi
 
 for src
 do
-  # Protect names starting with `-'.
+  # Protect names problematic for `test' and other utilities.
   case $src in
-    -*) src=./$src;;
+    -* | [=\(\)!]) src=./$src;;
   esac
 
   if test -n "$dir_arg"; then
@@ -252,12 +264,7 @@ do
       echo "$0: no destination specified." >&2
       exit 1
     fi
-
     dst=$dst_arg
-    # Protect names starting with `-'.
-    case $dst in
-      -*) dst=./$dst;;
-    esac
 
     # If destination is a directory, append the input filename; won't work
     # if double slashes aren't ignored.
@@ -385,7 +392,7 @@ do
 
       case $dstdir in
 	/*) prefix='/';;
-	-*) prefix='./';;
+	[-=\(\)!]*) prefix='./';;
 	*)  prefix='';;
       esac
 
@@ -403,7 +410,7 @@ do
 
       for d
       do
-	test -z "$d" && continue
+	test X"$d" = X && continue
 
 	prefix=$prefix$d
 	if test -d "$prefix"; then
@@ -515,5 +522,6 @@ done
 # eval: (add-hook 'write-file-hooks 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
 # End:
diff --git a/minvoke/Makefile.in b/minvoke/Makefile.in
index eb65ec4..16d5ccc 100644
--- a/minvoke/Makefile.in
+++ b/minvoke/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,20 +60,45 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES = minvoke
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(minvokedir)"
-binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
-SCRIPTS = $(bin_SCRIPTS)
-SOURCES =
-DIST_SOURCES =
+CONFIG_CLEAN_VPATH_FILES =
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-minvokeDATA_INSTALL = $(INSTALL_DATA)
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(minvokedir)"
+SCRIPTS = $(bin_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(minvoke_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
@@ -117,6 +161,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -130,9 +175,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -224,14 +272,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  minvoke/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  minvoke/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu minvoke/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu minvoke/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -249,44 +297,65 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 minvoke: $(top_builddir)/config.status $(srcdir)/minvoke.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-binSCRIPTS: $(bin_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-	    $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-binSCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
-	done
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
 install-minvokeDATA: $(minvoke_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(minvokedir)" || $(MKDIR_P) "$(DESTDIR)$(minvokedir)"
-	@list='$(minvoke_DATA)'; for p in $$list; do \
+	@list='$(minvoke_DATA)'; test -n "$(minvokedir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(minvokedir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(minvokedir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(minvokeDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(minvokedir)/$$f'"; \
-	  $(minvokeDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(minvokedir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(minvokedir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(minvokedir)" || exit $$?; \
 	done
 
 uninstall-minvokeDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(minvoke_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(minvokedir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(minvokedir)/$$f"; \
-	done
+	@list='$(minvoke_DATA)'; test -n "$(minvokedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(minvokedir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -310,13 +379,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -337,10 +410,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -348,6 +426,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -366,6 +445,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -374,18 +455,28 @@ install-data-am: install-minvokeDATA
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am: install-binSCRIPTS
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -432,6 +523,7 @@ minvoke.exe: $(minvoke_sources);
 
 test: minvoke.exe MapAssembly.dll RetargetAssembly.exe
 	mono minvoke.exe MapAssembly.dll RetargetAssembly.exe RetargetedAssembly.exe
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/missing b/missing
index 1c8ff70..86a8fc3 100755
--- a/missing
+++ b/missing
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Common stub for a few missing GNU programs while installing.
 
-scriptversion=2006-05-10.23
+scriptversion=2012-01-06.13; # UTC
 
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
-#   Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
 # Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
@@ -18,9 +18,7 @@ scriptversion=2006-05-10.23
 # GNU General Public License for more details.
 
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -86,9 +84,11 @@ Supported PROGRAM values:
   help2man     touch the output file
   lex          create \`lex.yy.c', if possible, from existing .c
   makeinfo     touch the output file
-  tar          try tar, gnutar, gtar, then tar without non-portable flags
   yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
 
+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
+\`g' are ignored when checking the name.
+
 Send bug reports to <bug-automake at gnu.org>."
     exit $?
     ;;
@@ -106,23 +106,21 @@ Send bug reports to <bug-automake at gnu.org>."
 
 esac
 
+# normalize program name to check for.
+program=`echo "$1" | sed '
+  s/^gnu-//; t
+  s/^gnu//; t
+  s/^g//; t'`
+
 # Now exit if we have it, but it failed.  Also exit now if we
 # don't have it and --version was passed (most likely to detect
-# the program).
+# the program).  This is about non-GNU programs, so use $1 not
+# $program.
 case $1 in
-  lex|yacc)
+  lex*|yacc*)
     # Not GNU programs, they don't have --version.
     ;;
 
-  tar)
-    if test -n "$run"; then
-       echo 1>&2 "ERROR: \`tar' requires --run"
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       exit 1
-    fi
-    ;;
-
   *)
     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
        # We have it, but it failed.
@@ -138,7 +136,7 @@ esac
 
 # If it does not exist, or fails to run (possibly an outdated version),
 # try to emulate it.
-case $1 in
+case $program in
   aclocal*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
@@ -148,7 +146,7 @@ WARNING: \`$1' is $msg.  You should only need it if
     touch aclocal.m4
     ;;
 
-  autoconf)
+  autoconf*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
          you modified \`${configure_ac}'.  You might want to install the
@@ -157,7 +155,7 @@ WARNING: \`$1' is $msg.  You should only need it if
     touch configure
     ;;
 
-  autoheader)
+  autoheader*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
          you modified \`acconfig.h' or \`${configure_ac}'.  You might want
@@ -187,7 +185,7 @@ WARNING: \`$1' is $msg.  You should only need it if
 	   while read f; do touch "$f"; done
     ;;
 
-  autom4te)
+  autom4te*)
     echo 1>&2 "\
 WARNING: \`$1' is needed, but is $msg.
          You might have modified some files without having the
@@ -210,7 +208,7 @@ WARNING: \`$1' is needed, but is $msg.
     fi
     ;;
 
-  bison|yacc)
+  bison*|yacc*)
     echo 1>&2 "\
 WARNING: \`$1' $msg.  You should only need it if
          you modified a \`.y' file.  You may need the \`Bison' package
@@ -218,7 +216,7 @@ WARNING: \`$1' $msg.  You should only need it if
          \`Bison' from any GNU archive site."
     rm -f y.tab.c y.tab.h
     if test $# -ne 1; then
-        eval LASTARG="\${$#}"
+        eval LASTARG=\${$#}
 	case $LASTARG in
 	*.y)
 	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
@@ -240,7 +238,7 @@ WARNING: \`$1' $msg.  You should only need it if
     fi
     ;;
 
-  lex|flex)
+  lex*|flex*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
          you modified a \`.l' file.  You may need the \`Flex' package
@@ -248,7 +246,7 @@ WARNING: \`$1' is $msg.  You should only need it if
          \`Flex' from any GNU archive site."
     rm -f lex.yy.c
     if test $# -ne 1; then
-        eval LASTARG="\${$#}"
+        eval LASTARG=\${$#}
 	case $LASTARG in
 	*.l)
 	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
@@ -263,7 +261,7 @@ WARNING: \`$1' is $msg.  You should only need it if
     fi
     ;;
 
-  help2man)
+  help2man*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
 	 you modified a dependency of a manual page.  You may need the
@@ -277,11 +275,11 @@ WARNING: \`$1' is $msg.  You should only need it if
     else
 	test -z "$file" || exec >$file
 	echo ".ab help2man is required to generate this page"
-	exit 1
+	exit $?
     fi
     ;;
 
-  makeinfo)
+  makeinfo*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
          you modified a \`.texi' or \`.texinfo' file, or any other file
@@ -310,41 +308,6 @@ WARNING: \`$1' is $msg.  You should only need it if
     touch $file
     ;;
 
-  tar)
-    shift
-
-    # We have already tried tar in the generic part.
-    # Look for gnutar/gtar before invocation to avoid ugly error
-    # messages.
-    if (gnutar --version > /dev/null 2>&1); then
-       gnutar "$@" && exit 0
-    fi
-    if (gtar --version > /dev/null 2>&1); then
-       gtar "$@" && exit 0
-    fi
-    firstarg="$1"
-    if shift; then
-	case $firstarg in
-	*o*)
-	    firstarg=`echo "$firstarg" | sed s/o//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-	case $firstarg in
-	*h*)
-	    firstarg=`echo "$firstarg" | sed s/h//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-    fi
-
-    echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
-         You may want to install GNU tar or Free paxutils, or check the
-         command line arguments."
-    exit 1
-    ;;
-
   *)
     echo 1>&2 "\
 WARNING: \`$1' is needed, and is $msg.
@@ -363,5 +326,6 @@ exit 0
 # eval: (add-hook 'write-file-hooks 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
 # End:
diff --git a/mkinstalldirs b/mkinstalldirs
deleted file mode 100755
index ef7e16f..0000000
--- a/mkinstalldirs
+++ /dev/null
@@ -1,161 +0,0 @@
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-
-scriptversion=2006-05-11.19
-
-# Original author: Noah Friedman <friedman at prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain.
-#
-# This file is maintained in Automake, please report
-# bugs to <bug-automake at gnu.org> or send patches to
-# <automake-patches at gnu.org>.
-
-nl='
-'
-IFS=" ""	$nl"
-errstatus=0
-dirmode=
-
-usage="\
-Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
-
-Create each directory DIR (with mode MODE, if specified), including all
-leading file name components.
-
-Report bugs to <bug-automake at gnu.org>."
-
-# process command line arguments
-while test $# -gt 0 ; do
-  case $1 in
-    -h | --help | --h*)         # -h for help
-      echo "$usage"
-      exit $?
-      ;;
-    -m)                         # -m PERM arg
-      shift
-      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
-      dirmode=$1
-      shift
-      ;;
-    --version)
-      echo "$0 $scriptversion"
-      exit $?
-      ;;
-    --)                         # stop option processing
-      shift
-      break
-      ;;
-    -*)                         # unknown option
-      echo "$usage" 1>&2
-      exit 1
-      ;;
-    *)                          # first non-opt arg
-      break
-      ;;
-  esac
-done
-
-for file
-do
-  if test -d "$file"; then
-    shift
-  else
-    break
-  fi
-done
-
-case $# in
-  0) exit 0 ;;
-esac
-
-# Solaris 8's mkdir -p isn't thread-safe.  If you mkdir -p a/b and
-# mkdir -p a/c at the same time, both will detect that a is missing,
-# one will create a, then the other will try to create a and die with
-# a "File exists" error.  This is a problem when calling mkinstalldirs
-# from a parallel make.  We use --version in the probe to restrict
-# ourselves to GNU mkdir, which is thread-safe.
-case $dirmode in
-  '')
-    if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
-      echo "mkdir -p -- $*"
-      exec mkdir -p -- "$@"
-    else
-      # On NextStep and OpenStep, the `mkdir' command does not
-      # recognize any option.  It will interpret all options as
-      # directories to create, and then abort because `.' already
-      # exists.
-      test -d ./-p && rmdir ./-p
-      test -d ./--version && rmdir ./--version
-    fi
-    ;;
-  *)
-    if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
-       test ! -d ./--version; then
-      echo "mkdir -m $dirmode -p -- $*"
-      exec mkdir -m "$dirmode" -p -- "$@"
-    else
-      # Clean up after NextStep and OpenStep mkdir.
-      for d in ./-m ./-p ./--version "./$dirmode";
-      do
-        test -d $d && rmdir $d
-      done
-    fi
-    ;;
-esac
-
-for file
-do
-  case $file in
-    /*) pathcomp=/ ;;
-    *)  pathcomp= ;;
-  esac
-  oIFS=$IFS
-  IFS=/
-  set fnord $file
-  shift
-  IFS=$oIFS
-
-  for d
-  do
-    test "x$d" = x && continue
-
-    pathcomp=$pathcomp$d
-    case $pathcomp in
-      -*) pathcomp=./$pathcomp ;;
-    esac
-
-    if test ! -d "$pathcomp"; then
-      echo "mkdir $pathcomp"
-
-      mkdir "$pathcomp" || lasterr=$?
-
-      if test ! -d "$pathcomp"; then
-	errstatus=$lasterr
-      else
-	if test ! -z "$dirmode"; then
-	  echo "chmod $dirmode $pathcomp"
-	  lasterr=
-	  chmod "$dirmode" "$pathcomp" || lasterr=$?
-
-	  if test ! -z "$lasterr"; then
-	    errstatus=$lasterr
-	  fi
-	fi
-      fi
-    fi
-
-    pathcomp=$pathcomp/
-  done
-done
-
-exit $errstatus
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
diff --git a/mono-tools.spec.in b/mono-tools.spec.in
new file mode 100644
index 0000000..51329d4
--- /dev/null
+++ b/mono-tools.spec.in
@@ -0,0 +1,102 @@
+Name:           mono-tools
+Version:        @VERSION@
+Release:        0
+License:        GPL v2 only ; LGPL v2.0 only ; MIT License (or similar)
+BuildArch:      noarch
+Url:            http://go-mono.org/
+Source0:        %{name}-%{version}.tar.bz2
+Summary:        Collection of Tools and Utilities for Mono
+Group:          Development/Tools/Other
+BuildRoot:      %{_tmppath}/%{name}-%{version}-build
+BuildRequires:  mono-devel mono-nunit monodoc-core
+BuildRequires:  update-desktop-files
+BuildRequires:  webkit-sharp
+BuildRequires:  glade-sharp2
+
+%description
+Mono Tools is a collection of development and testing programs and
+utilities for use with Mono.
+
+%files -f %{name}.lang
+%defattr(-, root, root)
+%_bindir/create-native-map
+%_bindir/emveepee
+%_bindir/gendarme
+%_bindir/gendarme-wizard
+%_bindir/gd2i
+%_bindir/gsharp
+%_bindir/gui-compare
+%_bindir/ilcontrast
+%_bindir/minvoke
+%_bindir/monodoc
+%_bindir/mperfmon
+%_bindir/mprof-decoder
+%_bindir/mprof-heap-viewer
+%_datadir/applications/gendarme-wizard.desktop
+%_datadir/applications/gsharp.desktop
+%_datadir/applications/ilcontrast.desktop
+%_datadir/applications/monodoc.desktop
+%_datadir/create-native-map
+%_datadir/icons/hicolor/*/apps/monodoc.png
+%_datadir/pixmaps/gendarme.svg
+%_datadir/pixmaps/ilcontrast.png
+%_datadir/pixmaps/monodoc.png
+%_datadir/pkgconfig/create-native-map.pc
+%_datadir/pkgconfig/gendarme-framework.pc
+%_mandir/man1/create-native-map*
+%_mandir/man1/gd2i*
+%_mandir/man1/gendarme*
+%_mandir/man1/mperfmon*
+%_mandir/man1/mprof-decoder*
+%_mandir/man1/mprof-heap-viewer*
+%_mandir/man5/gendarme*
+%_prefix/lib/create-native-map
+%_prefix/lib/gendarme
+%_prefix/lib/gsharp
+%_prefix/lib/gui-compare
+%_prefix/lib/ilcontrast
+%_prefix/lib/minvoke
+%_prefix/lib/mono-tools
+%_prefix/lib/monodoc/*.dll*
+%_prefix/lib/monodoc/*.exe*
+%_prefix/lib/monodoc/sources
+%_prefix/lib/mperfmon
+
+%package -n monodoc-http
+License:        X11/MIT
+Summary:        ASP.NET front-end for displaying Monodoc documentation
+Group:          Development/Tools/Other
+
+%description -n monodoc-http
+Monodoc-http provides an ASP.NET front-end for displaying installed 
+Monodoc documentation.
+
+%files -n monodoc-http
+%defattr(-, root, root)
+%_prefix/lib/monodoc/web
+
+%prep
+%setup -q
+
+%build
+./configure --prefix=%{_prefix} --libdir=%{_prefix}/lib --sysconfdir=%{_sysconfdir} --mandir=%{_mandir}
+
+%install
+make install DESTDIR=%{buildroot}
+%suse_update_desktop_file monodoc
+%suse_update_desktop_file ilcontrast
+%suse_update_desktop_file gendarme-wizard
+%suse_update_desktop_file gsharp
+# Move create-native-map stuff out of lib into share
+mkdir $RPM_BUILD_ROOT/%_prefix/share/create-native-map
+mv $RPM_BUILD_ROOT/%_prefix/lib/create-native-map/MapAttribute.cs $RPM_BUILD_ROOT/%_prefix/share/create-native-map
+mv $RPM_BUILD_ROOT/%_prefix/lib/pkgconfig $RPM_BUILD_ROOT/%_prefix/share
+%find_lang %{name}
+
+%clean
+rm -Rf %{buildroot}
+
+%post
+%{_bindir}/monodoc --make-index
+
+%changelog
diff --git a/mperfmon/Makefile.in b/mperfmon/Makefile.in
index 59e3aa0..5e025ce 100644
--- a/mperfmon/Makefile.in
+++ b/mperfmon/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,9 +17,27 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -41,24 +60,49 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES = mperfmon
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \
 	"$(DESTDIR)$(mperfmondir)"
-binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(bin_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 man1dir = $(mandir)/man1
 NROFF = nroff
 MANS = $(man_MANS)
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-mperfmonDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(mperfmon_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
@@ -121,6 +165,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -134,9 +179,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -239,14 +287,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  mperfmon/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  mperfmon/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu mperfmon/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu mperfmon/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -264,89 +312,108 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 mperfmon: $(top_builddir)/config.status $(srcdir)/mperfmon.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-binSCRIPTS: $(bin_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-	    $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-binSCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(bin_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
-	done
-install-man1: $(man1_MANS) $(man_MANS)
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
+install-man1: $(man_MANS)
 	@$(NORMAL_INSTALL)
-	test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
-	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-	for i in $$l2; do \
-	  case "$$i" in \
-	    *.1*) list="$$list $$i" ;; \
-	  esac; \
+	@list1=''; \
+	list2='$(man_MANS)'; \
+	test -n "$(man1dir)" \
+	  && test -n "`echo $$list1$$list2`" \
+	  || exit 0; \
+	echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+	$(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+	{ for i in $$list1; do echo "$$i"; done;  \
+	if test -n "$$list2"; then \
+	  for i in $$list2; do echo "$$i"; done \
+	    | sed -n '/\.1[a-z]*$$/p'; \
+	fi; \
+	} | while read p; do \
+	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; echo "$$p"; \
+	done | \
+	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+	sed 'N;N;s,\n, ,g' | { \
+	list=; while read file base inst; do \
+	  if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+	    echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+	    $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+	  fi; \
 	done; \
-	for i in $$list; do \
-	  if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
-	  else file=$$i; fi; \
-	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-	  case "$$ext" in \
-	    1*) ;; \
-	    *) ext='1' ;; \
-	  esac; \
-	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
-	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-	  echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
-	  $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
-	done
+	for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+	while read files; do \
+	  test -z "$$files" || { \
+	    echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+	    $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+	done; }
+
 uninstall-man1:
 	@$(NORMAL_UNINSTALL)
-	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-	for i in $$l2; do \
-	  case "$$i" in \
-	    *.1*) list="$$list $$i" ;; \
-	  esac; \
-	done; \
-	for i in $$list; do \
-	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-	  case "$$ext" in \
-	    1*) ;; \
-	    *) ext='1' ;; \
-	  esac; \
-	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
-	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-	  echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
-	  rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
-	done
+	@list=''; test -n "$(man1dir)" || exit 0; \
+	files=`{ for i in $$list; do echo "$$i"; done; \
+	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+	  sed -n '/\.1[a-z]*$$/p'; \
+	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+	dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
 install-mperfmonDATA: $(mperfmon_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(mperfmondir)" || $(MKDIR_P) "$(DESTDIR)$(mperfmondir)"
-	@list='$(mperfmon_DATA)'; for p in $$list; do \
+	@list='$(mperfmon_DATA)'; test -n "$(mperfmondir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(mperfmondir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(mperfmondir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(mperfmonDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(mperfmondir)/$$f'"; \
-	  $(mperfmonDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(mperfmondir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(mperfmondir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(mperfmondir)" || exit $$?; \
 	done
 
 uninstall-mperfmonDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(mperfmon_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(mperfmondir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(mperfmondir)/$$f"; \
-	done
+	@list='$(mperfmon_DATA)'; test -n "$(mperfmondir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(mperfmondir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -355,6 +422,19 @@ CTAGS:
 
 
 distdir: $(DISTFILES)
+	@list='$(MANS)'; if test -n "$$list"; then \
+	  list=`for p in $$list; do \
+	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+	  if test -n "$$list" && \
+	    grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+	    echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
+	    echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
+	    exit 1; \
+	  else :; fi; \
+	else :; fi
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -370,13 +450,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -397,10 +481,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -408,6 +497,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -426,6 +516,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -434,18 +526,28 @@ install-data-am: install-man install-mperfmonDATA
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am: install-binSCRIPTS
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man: install-man1
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -487,6 +589,7 @@ uninstall-man: uninstall-man1
 
 mperfmon.exe: $(mperfmon_sources) $(mperfmon_resources)
 	$(GMCS) -noconfig -codepage:utf8 -warn:4 -optimize+ -debug -define:DEBUG -target:exe -out:mperfmon.exe $(mperfmon_sources) $(ress) $(packages) $(assemblies)
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
index ed48e7e..e6c32cb 100644
--- a/po/Makefile.in.in
+++ b/po/Makefile.in.in
@@ -35,6 +35,7 @@ subdir = po
 
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
+MKINSTALLDIRS = mkdir -p
 
 CC = @CC@
 GENCAT = @GENCAT@
@@ -78,7 +79,7 @@ INSTOBJEXT = @INSTOBJEXT@
 	$(MSGFMT) -o $@ $<
 
 .po.gmo:
-	file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \
+	$(AM_V_GEN) file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \
 	  && rm -f $$file && $(GMSGFMT) $(MSGFMT_OPTS) -o $$file $<
 
 .po.cat:
@@ -92,11 +93,14 @@ all-yes: $(CATALOGS)
 all-no:
 
 $(srcdir)/$(GETTEXT_PACKAGE).pot: $(POTFILES)
-	$(XGETTEXT) --default-domain=$(GETTEXT_PACKAGE) --directory=$(top_srcdir) \
+	$(XGETTEXT) --default-domain=$(GETTEXT_PACKAGE) \
+	  --msgid-bugs-address='http://bugzilla.gnome.org/enter_bug.cgi?product=glib&keywords=I18N+L10N&component=general' \
 	  --add-comments --keyword=_ --keyword=N_ \
 	  --keyword=C_:1c,2 \
 	  --keyword=NC_:1c,2 \
+	  --keyword=g_dcgettext:2 \
 	  --keyword=g_dngettext:2,3 \
+	  --keyword=g_dpgettext2:2c,3 \
 	  --flag=N_:1:pass-c-format \
 	  --flag=C_:2:pass-c-format \
 	  --flag=NC_:2:pass-c-format \
@@ -116,7 +120,7 @@ $(srcdir)/$(GETTEXT_PACKAGE).pot: $(POTFILES)
           --flag=g_snprintf:3:c-format \
           --flag=g_scanner_error:2:c-format \
           --flag=g_scanner_warn:2:c-format \
-	  --files-from=$(srcdir)/POTFILES.in \
+	  $(POTFILES) \
 	&& test ! -f $(GETTEXT_PACKAGE).po \
 	   || ( rm -f $(srcdir)/$(GETTEXT_PACKAGE).pot \
 		&& mv $(GETTEXT_PACKAGE).po $(srcdir)/$(GETTEXT_PACKAGE).pot )
@@ -126,8 +130,8 @@ install-exec:
 install-data: install-data- at USE_NLS@
 install-data-no: all
 install-data-yes: all
-	@mkdir_p@ $(DESTDIR)$(datadir)
-	@catalogs='$(CATALOGS)'; \
+	$(MKINSTALLDIRS) $(DESTDIR)$(datadir); \
+	catalogs='$(CATALOGS)'; \
 	for cat in $$catalogs; do \
 	  cat=`basename $$cat`; \
 	  case "$$cat" in \
@@ -136,7 +140,7 @@ install-data-yes: all
 	  esac; \
 	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
 	  dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
-	  @mkdir_p@ $$dir; \
+	  $(MKINSTALLDIRS) $$dir; \
 	  if test -r $$cat; then \
 	    $(INSTALL_DATA) $$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
 	    echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
@@ -160,7 +164,7 @@ install-data-yes: all
 	  fi; \
 	done
 	if test "$(PACKAGE)" = "glib"; then \
-	  @mkdir_p@ $(DESTDIR)$(gettextsrcdir); \
+	  $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \
 	  $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
 			  $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
 	else \
@@ -203,7 +207,7 @@ maintainer-clean: distclean
 	rm -f $(GMOFILES)
 
 distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir)
-dist distdir: update-po $(DISTFILES)
+dist distdir: $(DISTFILES)
 	dists="$(DISTFILES)"; \
 	for file in $$dists; do \
 	  ln $(srcdir)/$$file $(distdir) 2> /dev/null \
diff --git a/po/ca.gmo b/po/ca.gmo
index 2a86be6..94e51c3 100644
Binary files a/po/ca.gmo and b/po/ca.gmo differ
diff --git a/po/ca.po b/po/ca.po
index ce5bec5..7f6add7 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Mono Tools\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-02-12 09:42-0700\n"
+"POT-Creation-Date: 2008-01-22 17:13-0500\n"
 "PO-Revision-Date: 2004-05-28 19:18+0200\n"
 "Last-Translator: Jordi Mas i Hernàndez <jordi at ximian.com>\n"
 "Language-Team: Jordi Mas i Hernàndez <jordi at ximian.com>\n"
@@ -16,6 +16,245 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: gnunit/src/AssemblyStore.cs:304
+msgid "Already running some test(s)."
+msgstr "Ja s'estan executant alguns tests"
+
+#: gnunit/src/AssemblyStore.cs:587
+msgid "Warning: unexpected combination."
+msgstr "Avís: combinació no esperada."
+
+#: gnunit/src/AssemblyStore.cs:596
+#, csharp-format
+msgid "Don't know anything about {0}"
+msgstr "No sé res de {0}"
+
+#: gnunit/src/FileDialog.cs:26
+msgid "Select an assembly to load"
+msgstr "Seleccioneu un assembly per carregar"
+
+#: gnunit/src/nunit-gtk.glade:10
+msgid "Mono NUnit2 GUI"
+msgstr "Mono NUnit2 GUI"
+
+#: gnunit/src/nunit-gtk.glade:72
+msgid "_Recent assemblies"
+msgstr "Fitxers _recents"
+
+#: gnunit/src/nunit-gtk.glade:92
+msgid "_Clear recent"
+msgstr "_Buida recents"
+
+#: gnunit/src/nunit-gtk.glade:165
+msgid "Enable/disable by category"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:166
+msgid "_Categories"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:219
+msgid "Open assembly"
+msgstr "Obre un assembly"
+
+#: gnunit/src/nunit-gtk.glade:220
+msgid "Open"
+msgstr "Obre"
+
+#: gnunit/src/nunit-gtk.glade:234
+msgid "Save results to a XML file"
+msgstr "Desa els resultats a un fitxer XML"
+
+#: gnunit/src/nunit-gtk.glade:235
+msgid "Save As"
+msgstr "Anomena i desa"
+
+#: gnunit/src/nunit-gtk.glade:249
+msgid "Run selected test fixture(s)"
+msgstr "Executa els tests seleccionats"
+
+#: gnunit/src/nunit-gtk.glade:250 gnunit/src/nunit-gtk.glade:516
+msgid "Run"
+msgstr "Executa"
+
+#: gnunit/src/nunit-gtk.glade:265 docbrowser/browser.glade:1538
+#: docbrowser/browser.glade:1917 docbrowser/browser.glade:2208
+#: docbrowser/browser.glade:2557
+msgid "Cancel"
+msgstr "Cancel·la"
+
+#: gnunit/src/nunit-gtk.glade:266
+msgid "Stop"
+msgstr "Atura"
+
+#: gnunit/src/nunit-gtk.glade:280
+msgid "Exit program"
+msgstr "Surt del programa"
+
+#: gnunit/src/nunit-gtk.glade:281 docbrowser/browser.glade:138
+msgid "Quit"
+msgstr "Surt"
+
+#: gnunit/src/nunit-gtk.glade:390
+msgid "Test: "
+msgstr "Test: "
+
+#: gnunit/src/nunit-gtk.glade:588
+msgid "Errors and failures"
+msgstr "Errors i fallides"
+
+#: gnunit/src/nunit-gtk.glade:641
+msgid "Tests not run"
+msgstr "Tests no executats"
+
+#: gnunit/src/nunit-gtk.glade:699
+msgid "Standard error"
+msgstr "Sortida d'error"
+
+#: gnunit/src/nunit-gtk.glade:757
+msgid "Standard out"
+msgstr "Sortida estàndard"
+
+#: gnunit/src/nunit-gtk.glade:815 gnunit/src/main.cs:686
+msgid "Error"
+msgstr "Error"
+
+#: gnunit/src/nunit-gtk.glade:904
+msgid "label"
+msgstr "etiqueta"
+
+#: gnunit/src/nunit-gtk.glade:936 gnunit/src/main.cs:104
+msgid "Show details >>"
+msgstr "Mostra els detalls >>"
+
+#: gnunit/src/nunit-gtk.glade:1009
+msgid "Error details"
+msgstr "Detalls de l'error"
+
+#: gnunit/src/nunit-gtk.glade:1056
+msgid "File exists. Overwrite?"
+msgstr "El fitxer ja existeix. Voleu sobreescriure'l?"
+
+#: gnunit/src/nunit-gtk.glade:1084
+msgid "Don't save results"
+msgstr "No desis els resultats"
+
+#: gnunit/src/nunit-gtk.glade:1098
+msgid "Save results"
+msgstr "Desa els resultats"
+
+#: gnunit/src/main.cs:37
+#, csharp-format
+msgid "<b>File {0} exists.</b>"
+msgstr ""
+
+#: gnunit/src/main.cs:38
+msgid "Do you want to overwrite it?"
+msgstr "Voleu sobreescriure'l?"
+
+#: gnunit/src/main.cs:107
+msgid "Hide details <<"
+msgstr "Ocultar els detalls <<"
+
+#: gnunit/src/main.cs:200
+msgid "Uncategorized"
+msgstr ""
+
+#: gnunit/src/main.cs:408
+msgid "No assembly loaded."
+msgstr "No hi ha cap assembly carregat."
+
+#: gnunit/src/main.cs:434
+#, csharp-format
+msgid "Loading {0}..."
+msgstr "S'està carregant {0}..."
+
+#: gnunit/src/main.cs:546
+#, csharp-format
+msgid "Loading test {0} of {1}"
+msgstr "S'està carregant test {0} de {1}"
+
+#: gnunit/src/main.cs:557
+msgid "Error loading assembly"
+msgstr "Error carregant l'assembly"
+
+#: gnunit/src/main.cs:558
+#, csharp-format
+msgid "Error loading '{0}'"
+msgstr "Error carregant '{0}'"
+
+#: gnunit/src/main.cs:608
+msgid "translator_credits"
+msgstr ""
+
+#: gnunit/src/main.cs:630
+msgid "You have to select a test to run."
+msgstr "Heu d'escollir un test per executar"
+
+#: gnunit/src/main.cs:660
+msgid "No test results available"
+msgstr "No hi ha resultats dels tests disponibles"
+
+#: gnunit/src/main.cs:661
+msgid "You must run some tests in order to get results to save."
+msgstr "Heu d'exectuar alguns tests per obtenir resultats per desar"
+
+#: gnunit/src/main.cs:667
+msgid "Save results to..."
+msgstr "Desa els resultats com a..."
+
+#: gnunit/src/main.cs:676
+msgid "Results not saved."
+msgstr "No s'han desat els resultats"
+
+#: gnunit/src/main.cs:687
+msgid "There has been an error saving the results.\n"
+msgstr "Hi ha hagut un error desant els resultats\n"
+
+#: gnunit/src/main.cs:688
+msgid "Do you have correct permissions to write to that file?"
+msgstr "Teniu els permisos adequats per escriure en aquest fitxer?"
+
+#: gnunit/src/main.cs:696
+#, csharp-format
+msgid "Results saved to {0}"
+msgstr "Els resultats s'han desat a {0}"
+
+#: gnunit/src/main.cs:774
+#, fuzzy, csharp-format
+msgid "Tests (assertions): {0} ({3}) Ignored: {1} Failures: {2}"
+msgstr "Tests: {0} ignorats: {1} fallades: {2}"
+
+#: gnunit/src/main.cs:952
+msgid "Running tests..."
+msgstr "S'està executant els test..."
+
+#: gnunit/src/main.cs:995
+msgid "Cancelled on user request."
+msgstr "Cancel·lat per petició de l'usuari"
+
+#: gnunit/src/main.cs:1033
+#, csharp-format
+msgid "{0} tests loaded."
+msgstr "{0} tests carregats."
+
+#: gnunit/src/main.cs:1051
+#, csharp-format
+msgid "Elapsed time: {0}"
+msgstr "Temps transcorregut: {0}"
+
+#: gnunit/src/main.cs:1061
+msgid "Unhandled Exception"
+msgstr "Excepció no gestionada"
+
+#: gnunit/src/main.cs:1061
+msgid "There has been an unhandled exception.\n"
+msgstr "Ha succeït una excepció no gestionada.\n"
+
+#: gnunit/src/main.cs:1062
+msgid "The program will terminate now."
+msgstr "El programa es finalitzarà ara."
+
 #: docbrowser/browser.glade:8
 msgid "Mono Documentation Library"
 msgstr "Documentació de les biblioteques del Mono"
@@ -41,10 +280,6 @@ msgstr ""
 msgid "_Close Tab"
 msgstr ""
 
-#: docbrowser/browser.glade:138
-msgid "Quit"
-msgstr "Surt"
-
 #: docbrowser/browser.glade:164
 msgid "_Edit"
 msgstr "_Edita"
@@ -233,11 +468,6 @@ msgstr ""
 msgid "Monodoc is requesting an account for you."
 msgstr ""
 
-#: docbrowser/browser.glade:1538 docbrowser/browser.glade:1917
-#: docbrowser/browser.glade:2208 docbrowser/browser.glade:2557
-msgid "Cancel"
-msgstr "Cancel·la"
-
 #: docbrowser/browser.glade:1567
 msgid "2"
 msgstr ""
@@ -404,157 +634,6 @@ msgstr "_Afegeix adreçes d'interès"
 msgid "Create in:"
 msgstr ""
 
-#~ msgid "Already running some test(s)."
-#~ msgstr "Ja s'estan executant alguns tests"
-
-#~ msgid "Warning: unexpected combination."
-#~ msgstr "Avís: combinació no esperada."
-
-#~ msgid "Don't know anything about {0}"
-#~ msgstr "No sé res de {0}"
-
-#~ msgid "Select an assembly to load"
-#~ msgstr "Seleccioneu un assembly per carregar"
-
-#~ msgid "Mono NUnit2 GUI"
-#~ msgstr "Mono NUnit2 GUI"
-
-#~ msgid "_Recent assemblies"
-#~ msgstr "Fitxers _recents"
-
-#~ msgid "_Clear recent"
-#~ msgstr "_Buida recents"
-
-#~ msgid "Open assembly"
-#~ msgstr "Obre un assembly"
-
-#~ msgid "Open"
-#~ msgstr "Obre"
-
-#~ msgid "Save results to a XML file"
-#~ msgstr "Desa els resultats a un fitxer XML"
-
-#~ msgid "Save As"
-#~ msgstr "Anomena i desa"
-
-#~ msgid "Run selected test fixture(s)"
-#~ msgstr "Executa els tests seleccionats"
-
-#~ msgid "Run"
-#~ msgstr "Executa"
-
-#~ msgid "Stop"
-#~ msgstr "Atura"
-
-#~ msgid "Exit program"
-#~ msgstr "Surt del programa"
-
-#~ msgid "Test: "
-#~ msgstr "Test: "
-
-#~ msgid "Errors and failures"
-#~ msgstr "Errors i fallides"
-
-#~ msgid "Tests not run"
-#~ msgstr "Tests no executats"
-
-#~ msgid "Standard error"
-#~ msgstr "Sortida d'error"
-
-#~ msgid "Standard out"
-#~ msgstr "Sortida estàndard"
-
-#~ msgid "Error"
-#~ msgstr "Error"
-
-#~ msgid "label"
-#~ msgstr "etiqueta"
-
-#~ msgid "Show details >>"
-#~ msgstr "Mostra els detalls >>"
-
-#~ msgid "Error details"
-#~ msgstr "Detalls de l'error"
-
-#~ msgid "File exists. Overwrite?"
-#~ msgstr "El fitxer ja existeix. Voleu sobreescriure'l?"
-
-#~ msgid "Don't save results"
-#~ msgstr "No desis els resultats"
-
-#~ msgid "Save results"
-#~ msgstr "Desa els resultats"
-
-#~ msgid "Do you want to overwrite it?"
-#~ msgstr "Voleu sobreescriure'l?"
-
-#~ msgid "Hide details <<"
-#~ msgstr "Ocultar els detalls <<"
-
-#~ msgid "No assembly loaded."
-#~ msgstr "No hi ha cap assembly carregat."
-
-#~ msgid "Loading {0}..."
-#~ msgstr "S'està carregant {0}..."
-
-#~ msgid "Loading test {0} of {1}"
-#~ msgstr "S'està carregant test {0} de {1}"
-
-#~ msgid "Error loading assembly"
-#~ msgstr "Error carregant l'assembly"
-
-#~ msgid "Error loading '{0}'"
-#~ msgstr "Error carregant '{0}'"
-
-#~ msgid "You have to select a test to run."
-#~ msgstr "Heu d'escollir un test per executar"
-
-#~ msgid "No test results available"
-#~ msgstr "No hi ha resultats dels tests disponibles"
-
-#~ msgid "You must run some tests in order to get results to save."
-#~ msgstr "Heu d'exectuar alguns tests per obtenir resultats per desar"
-
-#~ msgid "Save results to..."
-#~ msgstr "Desa els resultats com a..."
-
-#~ msgid "Results not saved."
-#~ msgstr "No s'han desat els resultats"
-
-#~ msgid "There has been an error saving the results.\n"
-#~ msgstr "Hi ha hagut un error desant els resultats\n"
-
-#~ msgid "Do you have correct permissions to write to that file?"
-#~ msgstr "Teniu els permisos adequats per escriure en aquest fitxer?"
-
-#~ msgid "Results saved to {0}"
-#~ msgstr "Els resultats s'han desat a {0}"
-
-#, fuzzy
-#~ msgid "Tests (assertions): {0} ({3}) Ignored: {1} Failures: {2}"
-#~ msgstr "Tests: {0} ignorats: {1} fallades: {2}"
-
-#~ msgid "Running tests..."
-#~ msgstr "S'està executant els test..."
-
-#~ msgid "Cancelled on user request."
-#~ msgstr "Cancel·lat per petició de l'usuari"
-
-#~ msgid "{0} tests loaded."
-#~ msgstr "{0} tests carregats."
-
-#~ msgid "Elapsed time: {0}"
-#~ msgstr "Temps transcorregut: {0}"
-
-#~ msgid "Unhandled Exception"
-#~ msgstr "Excepció no gestionada"
-
-#~ msgid "There has been an unhandled exception.\n"
-#~ msgstr "Ha succeït una excepció no gestionada.\n"
-
-#~ msgid "The program will terminate now."
-#~ msgstr "El programa es finalitzarà ara."
-
 #~ msgid "Editing"
 #~ msgstr "Editant"
 
diff --git a/po/da.gmo b/po/da.gmo
index 9a93401..39ff4df 100644
Binary files a/po/da.gmo and b/po/da.gmo differ
diff --git a/po/da.po b/po/da.po
index f4d8d54..a2e2eab 100644
--- a/po/da.po
+++ b/po/da.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNUnit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-02-12 09:42-0700\n"
+"POT-Creation-Date: 2008-01-22 17:13-0500\n"
 "PO-Revision-Date: 2004-08-05 11:11+0200\n"
 "Last-Translator: Martin Willemoes Hansen <mwh at sysrq.dk>\n"
 "Language-Team: Martin Willemoes Hansen <mwh at sysrq.dk>\n"
@@ -15,6 +15,245 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: gnunit/src/AssemblyStore.cs:304
+msgid "Already running some test(s)."
+msgstr "Udfører allerede nogle test(s)."
+
+#: gnunit/src/AssemblyStore.cs:587
+msgid "Warning: unexpected combination."
+msgstr "Advarsel: uventet kombination."
+
+#: gnunit/src/AssemblyStore.cs:596
+#, csharp-format
+msgid "Don't know anything about {0}"
+msgstr "Ved intet om {0}"
+
+#: gnunit/src/FileDialog.cs:26
+msgid "Select an assembly to load"
+msgstr "Vælg en assembly til indlæsning"
+
+#: gnunit/src/nunit-gtk.glade:10
+msgid "Mono NUnit2 GUI"
+msgstr "Mono grafiskbrugerflade for NUnit2"
+
+#: gnunit/src/nunit-gtk.glade:72
+msgid "_Recent assemblies"
+msgstr "_Seneste assemblies"
+
+#: gnunit/src/nunit-gtk.glade:92
+msgid "_Clear recent"
+msgstr "_Ryd seneste"
+
+#: gnunit/src/nunit-gtk.glade:165
+msgid "Enable/disable by category"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:166
+msgid "_Categories"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:219
+msgid "Open assembly"
+msgstr "Åbn assembly"
+
+#: gnunit/src/nunit-gtk.glade:220
+msgid "Open"
+msgstr "Åbn"
+
+#: gnunit/src/nunit-gtk.glade:234
+msgid "Save results to a XML file"
+msgstr "Gem resultater til en XML fil"
+
+#: gnunit/src/nunit-gtk.glade:235
+msgid "Save As"
+msgstr "Gem som"
+
+#: gnunit/src/nunit-gtk.glade:249
+msgid "Run selected test fixture(s)"
+msgstr "Kør udvalgte testfiksering(er)"
+
+#: gnunit/src/nunit-gtk.glade:250 gnunit/src/nunit-gtk.glade:516
+msgid "Run"
+msgstr "Kør"
+
+#: gnunit/src/nunit-gtk.glade:265 docbrowser/browser.glade:1538
+#: docbrowser/browser.glade:1917 docbrowser/browser.glade:2208
+#: docbrowser/browser.glade:2557
+msgid "Cancel"
+msgstr "Afbryd"
+
+#: gnunit/src/nunit-gtk.glade:266
+msgid "Stop"
+msgstr "Stop"
+
+#: gnunit/src/nunit-gtk.glade:280
+msgid "Exit program"
+msgstr "Afslut program"
+
+#: gnunit/src/nunit-gtk.glade:281 docbrowser/browser.glade:138
+msgid "Quit"
+msgstr "Afslut"
+
+#: gnunit/src/nunit-gtk.glade:390
+msgid "Test: "
+msgstr "Test: "
+
+#: gnunit/src/nunit-gtk.glade:588
+msgid "Errors and failures"
+msgstr "Fejl og mislykninger"
+
+#: gnunit/src/nunit-gtk.glade:641
+msgid "Tests not run"
+msgstr "Ikke kørte tests"
+
+#: gnunit/src/nunit-gtk.glade:699
+msgid "Standard error"
+msgstr "Standard fejl"
+
+#: gnunit/src/nunit-gtk.glade:757
+msgid "Standard out"
+msgstr "Standard ud"
+
+#: gnunit/src/nunit-gtk.glade:815 gnunit/src/main.cs:686
+msgid "Error"
+msgstr "Fejl"
+
+#: gnunit/src/nunit-gtk.glade:904
+msgid "label"
+msgstr "etiket"
+
+#: gnunit/src/nunit-gtk.glade:936 gnunit/src/main.cs:104
+msgid "Show details >>"
+msgstr "Vis detaljer >>"
+
+#: gnunit/src/nunit-gtk.glade:1009
+msgid "Error details"
+msgstr "Fejl deltaljer"
+
+#: gnunit/src/nunit-gtk.glade:1056
+msgid "File exists. Overwrite?"
+msgstr "Fil eksistere. Overskriv?"
+
+#: gnunit/src/nunit-gtk.glade:1084
+msgid "Don't save results"
+msgstr "Gem ikke resultater"
+
+#: gnunit/src/nunit-gtk.glade:1098
+msgid "Save results"
+msgstr "Gem resultater"
+
+#: gnunit/src/main.cs:37
+#, csharp-format
+msgid "<b>File {0} exists.</b>"
+msgstr "<b>Fil {0} eksistere.</b>"
+
+#: gnunit/src/main.cs:38
+msgid "Do you want to overwrite it?"
+msgstr "Vil du overskrive den?"
+
+#: gnunit/src/main.cs:107
+msgid "Hide details <<"
+msgstr "Skjul detaljer"
+
+#: gnunit/src/main.cs:200
+msgid "Uncategorized"
+msgstr ""
+
+#: gnunit/src/main.cs:408
+msgid "No assembly loaded."
+msgstr "Ingen assembly indlæst."
+
+#: gnunit/src/main.cs:434
+#, csharp-format
+msgid "Loading {0}..."
+msgstr "Indlæser {0}..."
+
+#: gnunit/src/main.cs:546
+#, csharp-format
+msgid "Loading test {0} of {1}"
+msgstr "Indlæser test {0} af {1}"
+
+#: gnunit/src/main.cs:557
+msgid "Error loading assembly"
+msgstr "Fejl ved indlæsning af assembly"
+
+#: gnunit/src/main.cs:558
+#, csharp-format
+msgid "Error loading '{0}'"
+msgstr "Fejl ved indlæsning af '{0}'"
+
+#: gnunit/src/main.cs:608
+msgid "translator_credits"
+msgstr "Martin Willemoes Hansen <mwh at sysrq.dk>"
+
+#: gnunit/src/main.cs:630
+msgid "You have to select a test to run."
+msgstr "Du mangler at vælge en test til udførsel"
+
+#: gnunit/src/main.cs:660
+msgid "No test results available"
+msgstr "Ingen test resultater tilgængelig"
+
+#: gnunit/src/main.cs:661
+msgid "You must run some tests in order to get results to save."
+msgstr "Du mangler at udfører nogle tests, for at kunne gemme resultatet."
+
+#: gnunit/src/main.cs:667
+msgid "Save results to..."
+msgstr "Gem resultatet i..."
+
+#: gnunit/src/main.cs:676
+msgid "Results not saved."
+msgstr "Resultatet ikke gemt."
+
+#: gnunit/src/main.cs:687
+msgid "There has been an error saving the results.\n"
+msgstr "Der opstod en fejl, med at gemme resultatet.\n"
+
+#: gnunit/src/main.cs:688
+msgid "Do you have correct permissions to write to that file?"
+msgstr "Har du skrive rettigheder til filen?"
+
+#: gnunit/src/main.cs:696
+#, csharp-format
+msgid "Results saved to {0}"
+msgstr "Resultat gemt til {0}"
+
+#: gnunit/src/main.cs:774
+#, fuzzy, csharp-format
+msgid "Tests (assertions): {0} ({3}) Ignored: {1} Failures: {2}"
+msgstr "Tests: {0} Ignorerede: {1} Mislykket: {2}"
+
+#: gnunit/src/main.cs:952
+msgid "Running tests..."
+msgstr "Udfører tests..."
+
+#: gnunit/src/main.cs:995
+msgid "Cancelled on user request."
+msgstr "Brugeren valgte at afbryde."
+
+#: gnunit/src/main.cs:1033
+#, csharp-format
+msgid "{0} tests loaded."
+msgstr "{0} tests indlæst."
+
+#: gnunit/src/main.cs:1051
+#, csharp-format
+msgid "Elapsed time: {0}"
+msgstr "Tid gået: {0}"
+
+#: gnunit/src/main.cs:1061
+msgid "Unhandled Exception"
+msgstr "Uhåndteret undtagelse"
+
+#: gnunit/src/main.cs:1061
+msgid "There has been an unhandled exception.\n"
+msgstr "Der har været en uhåndteret undtagelse.\n"
+
+#: gnunit/src/main.cs:1062
+msgid "The program will terminate now."
+msgstr "Programmet afslutter nu."
+
 #: docbrowser/browser.glade:8
 msgid "Mono Documentation Library"
 msgstr ""
@@ -39,10 +278,6 @@ msgstr ""
 msgid "_Close Tab"
 msgstr ""
 
-#: docbrowser/browser.glade:138
-msgid "Quit"
-msgstr "Afslut"
-
 #: docbrowser/browser.glade:164
 msgid "_Edit"
 msgstr ""
@@ -225,11 +460,6 @@ msgstr ""
 msgid "Monodoc is requesting an account for you."
 msgstr ""
 
-#: docbrowser/browser.glade:1538 docbrowser/browser.glade:1917
-#: docbrowser/browser.glade:2208 docbrowser/browser.glade:2557
-msgid "Cancel"
-msgstr "Afbryd"
-
 #: docbrowser/browser.glade:1567
 msgid "2"
 msgstr ""
@@ -393,160 +623,3 @@ msgstr ""
 #: docbrowser/browser.glade:3227
 msgid "Create in:"
 msgstr ""
-
-#~ msgid "Already running some test(s)."
-#~ msgstr "Udfører allerede nogle test(s)."
-
-#~ msgid "Warning: unexpected combination."
-#~ msgstr "Advarsel: uventet kombination."
-
-#~ msgid "Don't know anything about {0}"
-#~ msgstr "Ved intet om {0}"
-
-#~ msgid "Select an assembly to load"
-#~ msgstr "Vælg en assembly til indlæsning"
-
-#~ msgid "Mono NUnit2 GUI"
-#~ msgstr "Mono grafiskbrugerflade for NUnit2"
-
-#~ msgid "_Recent assemblies"
-#~ msgstr "_Seneste assemblies"
-
-#~ msgid "_Clear recent"
-#~ msgstr "_Ryd seneste"
-
-#~ msgid "Open assembly"
-#~ msgstr "Åbn assembly"
-
-#~ msgid "Open"
-#~ msgstr "Åbn"
-
-#~ msgid "Save results to a XML file"
-#~ msgstr "Gem resultater til en XML fil"
-
-#~ msgid "Save As"
-#~ msgstr "Gem som"
-
-#~ msgid "Run selected test fixture(s)"
-#~ msgstr "Kør udvalgte testfiksering(er)"
-
-#~ msgid "Run"
-#~ msgstr "Kør"
-
-#~ msgid "Stop"
-#~ msgstr "Stop"
-
-#~ msgid "Exit program"
-#~ msgstr "Afslut program"
-
-#~ msgid "Test: "
-#~ msgstr "Test: "
-
-#~ msgid "Errors and failures"
-#~ msgstr "Fejl og mislykninger"
-
-#~ msgid "Tests not run"
-#~ msgstr "Ikke kørte tests"
-
-#~ msgid "Standard error"
-#~ msgstr "Standard fejl"
-
-#~ msgid "Standard out"
-#~ msgstr "Standard ud"
-
-#~ msgid "Error"
-#~ msgstr "Fejl"
-
-#~ msgid "label"
-#~ msgstr "etiket"
-
-#~ msgid "Show details >>"
-#~ msgstr "Vis detaljer >>"
-
-#~ msgid "Error details"
-#~ msgstr "Fejl deltaljer"
-
-#~ msgid "File exists. Overwrite?"
-#~ msgstr "Fil eksistere. Overskriv?"
-
-#~ msgid "Don't save results"
-#~ msgstr "Gem ikke resultater"
-
-#~ msgid "Save results"
-#~ msgstr "Gem resultater"
-
-#~ msgid "<b>File {0} exists.</b>"
-#~ msgstr "<b>Fil {0} eksistere.</b>"
-
-#~ msgid "Do you want to overwrite it?"
-#~ msgstr "Vil du overskrive den?"
-
-#~ msgid "Hide details <<"
-#~ msgstr "Skjul detaljer"
-
-#~ msgid "No assembly loaded."
-#~ msgstr "Ingen assembly indlæst."
-
-#~ msgid "Loading {0}..."
-#~ msgstr "Indlæser {0}..."
-
-#~ msgid "Loading test {0} of {1}"
-#~ msgstr "Indlæser test {0} af {1}"
-
-#~ msgid "Error loading assembly"
-#~ msgstr "Fejl ved indlæsning af assembly"
-
-#~ msgid "Error loading '{0}'"
-#~ msgstr "Fejl ved indlæsning af '{0}'"
-
-#~ msgid "translator_credits"
-#~ msgstr "Martin Willemoes Hansen <mwh at sysrq.dk>"
-
-#~ msgid "You have to select a test to run."
-#~ msgstr "Du mangler at vælge en test til udførsel"
-
-#~ msgid "No test results available"
-#~ msgstr "Ingen test resultater tilgængelig"
-
-#~ msgid "You must run some tests in order to get results to save."
-#~ msgstr "Du mangler at udfører nogle tests, for at kunne gemme resultatet."
-
-#~ msgid "Save results to..."
-#~ msgstr "Gem resultatet i..."
-
-#~ msgid "Results not saved."
-#~ msgstr "Resultatet ikke gemt."
-
-#~ msgid "There has been an error saving the results.\n"
-#~ msgstr "Der opstod en fejl, med at gemme resultatet.\n"
-
-#~ msgid "Do you have correct permissions to write to that file?"
-#~ msgstr "Har du skrive rettigheder til filen?"
-
-#~ msgid "Results saved to {0}"
-#~ msgstr "Resultat gemt til {0}"
-
-#, fuzzy
-#~ msgid "Tests (assertions): {0} ({3}) Ignored: {1} Failures: {2}"
-#~ msgstr "Tests: {0} Ignorerede: {1} Mislykket: {2}"
-
-#~ msgid "Running tests..."
-#~ msgstr "Udfører tests..."
-
-#~ msgid "Cancelled on user request."
-#~ msgstr "Brugeren valgte at afbryde."
-
-#~ msgid "{0} tests loaded."
-#~ msgstr "{0} tests indlæst."
-
-#~ msgid "Elapsed time: {0}"
-#~ msgstr "Tid gået: {0}"
-
-#~ msgid "Unhandled Exception"
-#~ msgstr "Uhåndteret undtagelse"
-
-#~ msgid "There has been an unhandled exception.\n"
-#~ msgstr "Der har været en uhåndteret undtagelse.\n"
-
-#~ msgid "The program will terminate now."
-#~ msgstr "Programmet afslutter nu."
diff --git a/po/es.gmo b/po/es.gmo
index 4262e88..a7d20a1 100644
Binary files a/po/es.gmo and b/po/es.gmo differ
diff --git a/po/es.po b/po/es.po
index 6c5fe92..38f22e5 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNUnit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-02-12 09:42-0700\n"
+"POT-Creation-Date: 2008-01-22 17:13-0500\n"
 "PO-Revision-Date: 2004-08-05 11:14+0200\n"
 "Last-Translator: Gonzalo Paniagua Javier <gonzalo at ximian.com>\n"
 "Language-Team: Gonzalo Paniagua Javier <gonzalo at ximian.com>\n"
@@ -15,6 +15,245 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: gnunit/src/AssemblyStore.cs:304
+msgid "Already running some test(s)."
+msgstr "Ya se están ejecutando tests."
+
+#: gnunit/src/AssemblyStore.cs:587
+msgid "Warning: unexpected combination."
+msgstr "Aviso: combinación no esperada."
+
+#: gnunit/src/AssemblyStore.cs:596
+#, csharp-format
+msgid "Don't know anything about {0}"
+msgstr ""
+
+#: gnunit/src/FileDialog.cs:26
+msgid "Select an assembly to load"
+msgstr "Elija un assembly para cargar"
+
+#: gnunit/src/nunit-gtk.glade:10
+msgid "Mono NUnit2 GUI"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:72
+msgid "_Recent assemblies"
+msgstr "Ficheros _recientes"
+
+#: gnunit/src/nunit-gtk.glade:92
+msgid "_Clear recent"
+msgstr "_Borra recientes"
+
+#: gnunit/src/nunit-gtk.glade:165
+msgid "Enable/disable by category"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:166
+msgid "_Categories"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:219
+msgid "Open assembly"
+msgstr "Carga un ensamblado"
+
+#: gnunit/src/nunit-gtk.glade:220
+msgid "Open"
+msgstr "Abrir"
+
+#: gnunit/src/nunit-gtk.glade:234
+msgid "Save results to a XML file"
+msgstr "Guardar resultados a un fichero XML"
+
+#: gnunit/src/nunit-gtk.glade:235
+msgid "Save As"
+msgstr "Guardar como"
+
+#: gnunit/src/nunit-gtk.glade:249
+msgid "Run selected test fixture(s)"
+msgstr "Ejecutar los tests seleccionados"
+
+#: gnunit/src/nunit-gtk.glade:250 gnunit/src/nunit-gtk.glade:516
+msgid "Run"
+msgstr "Ejecutar"
+
+#: gnunit/src/nunit-gtk.glade:265 docbrowser/browser.glade:1538
+#: docbrowser/browser.glade:1917 docbrowser/browser.glade:2208
+#: docbrowser/browser.glade:2557
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: gnunit/src/nunit-gtk.glade:266
+msgid "Stop"
+msgstr "Detener"
+
+#: gnunit/src/nunit-gtk.glade:280
+msgid "Exit program"
+msgstr "Salir del programa"
+
+#: gnunit/src/nunit-gtk.glade:281 docbrowser/browser.glade:138
+msgid "Quit"
+msgstr "Salir"
+
+#: gnunit/src/nunit-gtk.glade:390
+msgid "Test: "
+msgstr "Test: "
+
+#: gnunit/src/nunit-gtk.glade:588
+msgid "Errors and failures"
+msgstr "Errores y fallos"
+
+#: gnunit/src/nunit-gtk.glade:641
+msgid "Tests not run"
+msgstr "Tests no ejecutados"
+
+#: gnunit/src/nunit-gtk.glade:699
+msgid "Standard error"
+msgstr "Salida de error"
+
+#: gnunit/src/nunit-gtk.glade:757
+msgid "Standard out"
+msgstr "Salida estándar"
+
+#: gnunit/src/nunit-gtk.glade:815 gnunit/src/main.cs:686
+msgid "Error"
+msgstr "Error"
+
+#: gnunit/src/nunit-gtk.glade:904
+msgid "label"
+msgstr "etiqueta"
+
+#: gnunit/src/nunit-gtk.glade:936 gnunit/src/main.cs:104
+msgid "Show details >>"
+msgstr "Mostrar detalles >>"
+
+#: gnunit/src/nunit-gtk.glade:1009
+msgid "Error details"
+msgstr "Detalles del error"
+
+#: gnunit/src/nunit-gtk.glade:1056
+msgid "File exists. Overwrite?"
+msgstr "El fichero existe. ¿Sobreescribir?"
+
+#: gnunit/src/nunit-gtk.glade:1084
+msgid "Don't save results"
+msgstr "No guardar resultados"
+
+#: gnunit/src/nunit-gtk.glade:1098
+msgid "Save results"
+msgstr "Guardar resultados"
+
+#: gnunit/src/main.cs:37
+#, csharp-format
+msgid "<b>File {0} exists.</b>"
+msgstr "<b>El fichero {0} existe.</b>"
+
+#: gnunit/src/main.cs:38
+msgid "Do you want to overwrite it?"
+msgstr "¿Lo quiere sobreescribir?"
+
+#: gnunit/src/main.cs:107
+msgid "Hide details <<"
+msgstr "Ocultar detalles <<"
+
+#: gnunit/src/main.cs:200
+msgid "Uncategorized"
+msgstr ""
+
+#: gnunit/src/main.cs:408
+msgid "No assembly loaded."
+msgstr "No hay ningún assembly cargado."
+
+#: gnunit/src/main.cs:434
+#, csharp-format
+msgid "Loading {0}..."
+msgstr "Cargando {0}..."
+
+#: gnunit/src/main.cs:546
+#, csharp-format
+msgid "Loading test {0} of {1}"
+msgstr "Cargando test {0} de {1}"
+
+#: gnunit/src/main.cs:557
+msgid "Error loading assembly"
+msgstr "Error cargando assembly"
+
+#: gnunit/src/main.cs:558
+#, csharp-format
+msgid "Error loading '{0}'"
+msgstr "Error cargando '{0}'"
+
+#: gnunit/src/main.cs:608
+msgid "translator_credits"
+msgstr "Gonzalo Paniagua Javier <gonzalo at ximian.com>"
+
+#: gnunit/src/main.cs:630
+msgid "You have to select a test to run."
+msgstr "Debe seleccionar un test para ejecutar"
+
+#: gnunit/src/main.cs:660
+msgid "No test results available"
+msgstr "No hay resultados de tests disponibles"
+
+#: gnunit/src/main.cs:661
+msgid "You must run some tests in order to get results to save."
+msgstr "Debe ejecutar algún test para tener resultados que guardar."
+
+#: gnunit/src/main.cs:667
+msgid "Save results to..."
+msgstr "Guardar resultados como..."
+
+#: gnunit/src/main.cs:676
+msgid "Results not saved."
+msgstr "No se han guardado los resultados."
+
+#: gnunit/src/main.cs:687
+msgid "There has been an error saving the results.\n"
+msgstr "Ocurrió un error guardando los resultados.\n"
+
+#: gnunit/src/main.cs:688
+msgid "Do you have correct permissions to write to that file?"
+msgstr "¿Tiene permiso de escritura sobre ese fichero?"
+
+#: gnunit/src/main.cs:696
+#, csharp-format
+msgid "Results saved to {0}"
+msgstr "Resultados guardados en {0}"
+
+#: gnunit/src/main.cs:774
+#, fuzzy, csharp-format
+msgid "Tests (assertions): {0} ({3}) Ignored: {1} Failures: {2}"
+msgstr "Tests: {0} Ignorados: {1} Fallos: {2}"
+
+#: gnunit/src/main.cs:952
+msgid "Running tests..."
+msgstr "Ejecutando tests..."
+
+#: gnunit/src/main.cs:995
+msgid "Cancelled on user request."
+msgstr "Cancelado a petición del usuario"
+
+#: gnunit/src/main.cs:1033
+#, csharp-format
+msgid "{0} tests loaded."
+msgstr "{0} tests cargados."
+
+#: gnunit/src/main.cs:1051
+#, csharp-format
+msgid "Elapsed time: {0}"
+msgstr "Tiempo transcurrido: {0}"
+
+#: gnunit/src/main.cs:1061
+msgid "Unhandled Exception"
+msgstr "Excepción no controlada"
+
+#: gnunit/src/main.cs:1061
+msgid "There has been an unhandled exception.\n"
+msgstr "Ha ocurrido una excepción no controlada\n"
+
+#: gnunit/src/main.cs:1062
+msgid "The program will terminate now."
+msgstr "El programa terminará ahora."
+
 #: docbrowser/browser.glade:8
 msgid "Mono Documentation Library"
 msgstr ""
@@ -39,10 +278,6 @@ msgstr ""
 msgid "_Close Tab"
 msgstr ""
 
-#: docbrowser/browser.glade:138
-msgid "Quit"
-msgstr "Salir"
-
 #: docbrowser/browser.glade:164
 msgid "_Edit"
 msgstr ""
@@ -225,11 +460,6 @@ msgstr ""
 msgid "Monodoc is requesting an account for you."
 msgstr ""
 
-#: docbrowser/browser.glade:1538 docbrowser/browser.glade:1917
-#: docbrowser/browser.glade:2208 docbrowser/browser.glade:2557
-msgid "Cancel"
-msgstr "Cancelar"
-
 #: docbrowser/browser.glade:1567
 msgid "2"
 msgstr ""
@@ -393,154 +623,3 @@ msgstr ""
 #: docbrowser/browser.glade:3227
 msgid "Create in:"
 msgstr ""
-
-#~ msgid "Already running some test(s)."
-#~ msgstr "Ya se están ejecutando tests."
-
-#~ msgid "Warning: unexpected combination."
-#~ msgstr "Aviso: combinación no esperada."
-
-#~ msgid "Select an assembly to load"
-#~ msgstr "Elija un assembly para cargar"
-
-#~ msgid "_Recent assemblies"
-#~ msgstr "Ficheros _recientes"
-
-#~ msgid "_Clear recent"
-#~ msgstr "_Borra recientes"
-
-#~ msgid "Open assembly"
-#~ msgstr "Carga un ensamblado"
-
-#~ msgid "Open"
-#~ msgstr "Abrir"
-
-#~ msgid "Save results to a XML file"
-#~ msgstr "Guardar resultados a un fichero XML"
-
-#~ msgid "Save As"
-#~ msgstr "Guardar como"
-
-#~ msgid "Run selected test fixture(s)"
-#~ msgstr "Ejecutar los tests seleccionados"
-
-#~ msgid "Run"
-#~ msgstr "Ejecutar"
-
-#~ msgid "Stop"
-#~ msgstr "Detener"
-
-#~ msgid "Exit program"
-#~ msgstr "Salir del programa"
-
-#~ msgid "Test: "
-#~ msgstr "Test: "
-
-#~ msgid "Errors and failures"
-#~ msgstr "Errores y fallos"
-
-#~ msgid "Tests not run"
-#~ msgstr "Tests no ejecutados"
-
-#~ msgid "Standard error"
-#~ msgstr "Salida de error"
-
-#~ msgid "Standard out"
-#~ msgstr "Salida estándar"
-
-#~ msgid "Error"
-#~ msgstr "Error"
-
-#~ msgid "label"
-#~ msgstr "etiqueta"
-
-#~ msgid "Show details >>"
-#~ msgstr "Mostrar detalles >>"
-
-#~ msgid "Error details"
-#~ msgstr "Detalles del error"
-
-#~ msgid "File exists. Overwrite?"
-#~ msgstr "El fichero existe. ¿Sobreescribir?"
-
-#~ msgid "Don't save results"
-#~ msgstr "No guardar resultados"
-
-#~ msgid "Save results"
-#~ msgstr "Guardar resultados"
-
-#~ msgid "<b>File {0} exists.</b>"
-#~ msgstr "<b>El fichero {0} existe.</b>"
-
-#~ msgid "Do you want to overwrite it?"
-#~ msgstr "¿Lo quiere sobreescribir?"
-
-#~ msgid "Hide details <<"
-#~ msgstr "Ocultar detalles <<"
-
-#~ msgid "No assembly loaded."
-#~ msgstr "No hay ningún assembly cargado."
-
-#~ msgid "Loading {0}..."
-#~ msgstr "Cargando {0}..."
-
-#~ msgid "Loading test {0} of {1}"
-#~ msgstr "Cargando test {0} de {1}"
-
-#~ msgid "Error loading assembly"
-#~ msgstr "Error cargando assembly"
-
-#~ msgid "Error loading '{0}'"
-#~ msgstr "Error cargando '{0}'"
-
-#~ msgid "translator_credits"
-#~ msgstr "Gonzalo Paniagua Javier <gonzalo at ximian.com>"
-
-#~ msgid "You have to select a test to run."
-#~ msgstr "Debe seleccionar un test para ejecutar"
-
-#~ msgid "No test results available"
-#~ msgstr "No hay resultados de tests disponibles"
-
-#~ msgid "You must run some tests in order to get results to save."
-#~ msgstr "Debe ejecutar algún test para tener resultados que guardar."
-
-#~ msgid "Save results to..."
-#~ msgstr "Guardar resultados como..."
-
-#~ msgid "Results not saved."
-#~ msgstr "No se han guardado los resultados."
-
-#~ msgid "There has been an error saving the results.\n"
-#~ msgstr "Ocurrió un error guardando los resultados.\n"
-
-#~ msgid "Do you have correct permissions to write to that file?"
-#~ msgstr "¿Tiene permiso de escritura sobre ese fichero?"
-
-#~ msgid "Results saved to {0}"
-#~ msgstr "Resultados guardados en {0}"
-
-#, fuzzy
-#~ msgid "Tests (assertions): {0} ({3}) Ignored: {1} Failures: {2}"
-#~ msgstr "Tests: {0} Ignorados: {1} Fallos: {2}"
-
-#~ msgid "Running tests..."
-#~ msgstr "Ejecutando tests..."
-
-#~ msgid "Cancelled on user request."
-#~ msgstr "Cancelado a petición del usuario"
-
-#~ msgid "{0} tests loaded."
-#~ msgstr "{0} tests cargados."
-
-#~ msgid "Elapsed time: {0}"
-#~ msgstr "Tiempo transcurrido: {0}"
-
-#~ msgid "Unhandled Exception"
-#~ msgstr "Excepción no controlada"
-
-#~ msgid "There has been an unhandled exception.\n"
-#~ msgstr "Ha ocurrido una excepción no controlada\n"
-
-#~ msgid "The program will terminate now."
-#~ msgstr "El programa terminará ahora."
diff --git a/po/fr.gmo b/po/fr.gmo
index ef030c8..6785bf8 100644
Binary files a/po/fr.gmo and b/po/fr.gmo differ
diff --git a/po/fr.po b/po/fr.po
index 2f4cbee..74f8994 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNUnit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-02-12 09:42-0700\n"
+"POT-Creation-Date: 2008-01-22 17:13-0500\n"
 "PO-Revision-Date: 2004-08-05 11:14+0200\n"
 "Last-Translator: Sebastien Pouliot <spouliot at videotron.ca>\n"
 "Language-Team: Sebastien Pouliot <spouliot at videotron.ca>\n"
@@ -15,6 +15,245 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: gnunit/src/AssemblyStore.cs:304
+msgid "Already running some test(s)."
+msgstr "Test(s) en cours d'exécution."
+
+#: gnunit/src/AssemblyStore.cs:587
+msgid "Warning: unexpected combination."
+msgstr "Avertissement: combinaison innattendue."
+
+#: gnunit/src/AssemblyStore.cs:596
+#, csharp-format
+msgid "Don't know anything about {0}"
+msgstr "Aucune information n'est disponible sur {0}"
+
+#: gnunit/src/FileDialog.cs:26
+msgid "Select an assembly to load"
+msgstr "Choisir un assembly à charger"
+
+#: gnunit/src/nunit-gtk.glade:10
+msgid "Mono NUnit2 GUI"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:72
+msgid "_Recent assemblies"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:92
+msgid "_Clear recent"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:165
+msgid "Enable/disable by category"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:166
+msgid "_Categories"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:219
+msgid "Open assembly"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:220
+msgid "Open"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:234
+msgid "Save results to a XML file"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:235
+msgid "Save As"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:249
+msgid "Run selected test fixture(s)"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:250 gnunit/src/nunit-gtk.glade:516
+msgid "Run"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:265 docbrowser/browser.glade:1538
+#: docbrowser/browser.glade:1917 docbrowser/browser.glade:2208
+#: docbrowser/browser.glade:2557
+msgid "Cancel"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:266
+msgid "Stop"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:280
+msgid "Exit program"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:281 docbrowser/browser.glade:138
+msgid "Quit"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:390
+msgid "Test: "
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:588
+msgid "Errors and failures"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:641
+msgid "Tests not run"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:699
+msgid "Standard error"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:757
+msgid "Standard out"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:815 gnunit/src/main.cs:686
+msgid "Error"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:904
+msgid "label"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:936 gnunit/src/main.cs:104
+msgid "Show details >>"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:1009
+msgid "Error details"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:1056
+msgid "File exists. Overwrite?"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:1084
+msgid "Don't save results"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:1098
+msgid "Save results"
+msgstr ""
+
+#: gnunit/src/main.cs:37
+#, csharp-format
+msgid "<b>File {0} exists.</b>"
+msgstr "<b>Le fichier {0} existe.</b>"
+
+#: gnunit/src/main.cs:38
+msgid "Do you want to overwrite it?"
+msgstr "Voulez-vous le ré-écrire?"
+
+#: gnunit/src/main.cs:107
+msgid "Hide details <<"
+msgstr "Moins de détails <<"
+
+#: gnunit/src/main.cs:200
+msgid "Uncategorized"
+msgstr ""
+
+#: gnunit/src/main.cs:408
+msgid "No assembly loaded."
+msgstr "Aucun assembly n'est chargé."
+
+#: gnunit/src/main.cs:434
+#, csharp-format
+msgid "Loading {0}..."
+msgstr "Chargement de {0}..."
+
+#: gnunit/src/main.cs:546
+#, csharp-format
+msgid "Loading test {0} of {1}"
+msgstr "Chargement du test {0} de {1}"
+
+#: gnunit/src/main.cs:557
+msgid "Error loading assembly"
+msgstr "Erreur lors du chargement de l'assembly"
+
+#: gnunit/src/main.cs:558
+#, csharp-format
+msgid "Error loading '{0}'"
+msgstr "Erreur lors du chargement de '{0}'"
+
+#: gnunit/src/main.cs:608
+msgid "translator_credits"
+msgstr "Sebastien Pouliot <spouliot at videotron.ca>"
+
+#: gnunit/src/main.cs:630
+msgid "You have to select a test to run."
+msgstr "Un test doit être choisi pour s'exécuter."
+
+#: gnunit/src/main.cs:660
+msgid "No test results available"
+msgstr "Aucun résultat des tests n'est disponible"
+
+#: gnunit/src/main.cs:661
+msgid "You must run some tests in order to get results to save."
+msgstr "Des tests doivent être exécutés avant de conserver les résultats."
+
+#: gnunit/src/main.cs:667
+msgid "Save results to..."
+msgstr "Résultats conservés dans..."
+
+#: gnunit/src/main.cs:676
+msgid "Results not saved."
+msgstr "Résultats non conservés."
+
+#: gnunit/src/main.cs:687
+msgid "There has been an error saving the results.\n"
+msgstr "Une erreur est survenue lors de la conservation des résultats.\n"
+
+#: gnunit/src/main.cs:688
+msgid "Do you have correct permissions to write to that file?"
+msgstr "Avez-vous les permissions requises pour écrire dans ce fichier?"
+
+#: gnunit/src/main.cs:696
+#, csharp-format
+msgid "Results saved to {0}"
+msgstr "Résultats conservés dans {0}"
+
+#: gnunit/src/main.cs:774
+#, fuzzy, csharp-format
+msgid "Tests (assertions): {0} ({3}) Ignored: {1} Failures: {2}"
+msgstr "Testés: {0} Ignorés: {1} Echecs: {2}"
+
+#: gnunit/src/main.cs:952
+msgid "Running tests..."
+msgstr "Tests en cours d'exécution..."
+
+#: gnunit/src/main.cs:995
+msgid "Cancelled on user request."
+msgstr "Opération interrompue sur demande de l'utilisateur."
+
+#: gnunit/src/main.cs:1033
+#, csharp-format
+msgid "{0} tests loaded."
+msgstr "{0} tests chargés."
+
+#: gnunit/src/main.cs:1051
+#, csharp-format
+msgid "Elapsed time: {0}"
+msgstr "Temps d'éxécution: {0}"
+
+#: gnunit/src/main.cs:1061
+msgid "Unhandled Exception"
+msgstr "Exception non traitée"
+
+#: gnunit/src/main.cs:1061
+msgid "There has been an unhandled exception.\n"
+msgstr ""
+
+#: gnunit/src/main.cs:1062
+msgid "The program will terminate now."
+msgstr "Le logiciel va se terminer maintenant."
+
 #: docbrowser/browser.glade:8
 msgid "Mono Documentation Library"
 msgstr ""
@@ -39,10 +278,6 @@ msgstr ""
 msgid "_Close Tab"
 msgstr ""
 
-#: docbrowser/browser.glade:138
-msgid "Quit"
-msgstr ""
-
 #: docbrowser/browser.glade:164
 msgid "_Edit"
 msgstr ""
@@ -225,11 +460,6 @@ msgstr ""
 msgid "Monodoc is requesting an account for you."
 msgstr ""
 
-#: docbrowser/browser.glade:1538 docbrowser/browser.glade:1917
-#: docbrowser/browser.glade:2208 docbrowser/browser.glade:2557
-msgid "Cancel"
-msgstr ""
-
 #: docbrowser/browser.glade:1567
 msgid "2"
 msgstr ""
@@ -393,88 +623,3 @@ msgstr ""
 #: docbrowser/browser.glade:3227
 msgid "Create in:"
 msgstr ""
-
-#~ msgid "Already running some test(s)."
-#~ msgstr "Test(s) en cours d'exécution."
-
-#~ msgid "Warning: unexpected combination."
-#~ msgstr "Avertissement: combinaison innattendue."
-
-#~ msgid "Don't know anything about {0}"
-#~ msgstr "Aucune information n'est disponible sur {0}"
-
-#~ msgid "Select an assembly to load"
-#~ msgstr "Choisir un assembly à charger"
-
-#~ msgid "<b>File {0} exists.</b>"
-#~ msgstr "<b>Le fichier {0} existe.</b>"
-
-#~ msgid "Do you want to overwrite it?"
-#~ msgstr "Voulez-vous le ré-écrire?"
-
-#~ msgid "Hide details <<"
-#~ msgstr "Moins de détails <<"
-
-#~ msgid "No assembly loaded."
-#~ msgstr "Aucun assembly n'est chargé."
-
-#~ msgid "Loading {0}..."
-#~ msgstr "Chargement de {0}..."
-
-#~ msgid "Loading test {0} of {1}"
-#~ msgstr "Chargement du test {0} de {1}"
-
-#~ msgid "Error loading assembly"
-#~ msgstr "Erreur lors du chargement de l'assembly"
-
-#~ msgid "Error loading '{0}'"
-#~ msgstr "Erreur lors du chargement de '{0}'"
-
-#~ msgid "translator_credits"
-#~ msgstr "Sebastien Pouliot <spouliot at videotron.ca>"
-
-#~ msgid "You have to select a test to run."
-#~ msgstr "Un test doit être choisi pour s'exécuter."
-
-#~ msgid "No test results available"
-#~ msgstr "Aucun résultat des tests n'est disponible"
-
-#~ msgid "You must run some tests in order to get results to save."
-#~ msgstr "Des tests doivent être exécutés avant de conserver les résultats."
-
-#~ msgid "Save results to..."
-#~ msgstr "Résultats conservés dans..."
-
-#~ msgid "Results not saved."
-#~ msgstr "Résultats non conservés."
-
-#~ msgid "There has been an error saving the results.\n"
-#~ msgstr "Une erreur est survenue lors de la conservation des résultats.\n"
-
-#~ msgid "Do you have correct permissions to write to that file?"
-#~ msgstr "Avez-vous les permissions requises pour écrire dans ce fichier?"
-
-#~ msgid "Results saved to {0}"
-#~ msgstr "Résultats conservés dans {0}"
-
-#, fuzzy
-#~ msgid "Tests (assertions): {0} ({3}) Ignored: {1} Failures: {2}"
-#~ msgstr "Testés: {0} Ignorés: {1} Echecs: {2}"
-
-#~ msgid "Running tests..."
-#~ msgstr "Tests en cours d'exécution..."
-
-#~ msgid "Cancelled on user request."
-#~ msgstr "Opération interrompue sur demande de l'utilisateur."
-
-#~ msgid "{0} tests loaded."
-#~ msgstr "{0} tests chargés."
-
-#~ msgid "Elapsed time: {0}"
-#~ msgstr "Temps d'éxécution: {0}"
-
-#~ msgid "Unhandled Exception"
-#~ msgstr "Exception non traitée"
-
-#~ msgid "The program will terminate now."
-#~ msgstr "Le logiciel va se terminer maintenant."
diff --git a/po/mono-tools.pot b/po/mono-tools.pot
index 7b88020..3609e2f 100644
--- a/po/mono-tools.pot
+++ b/po/mono-tools.pot
@@ -7,138 +7,140 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-02-12 09:42-0700\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2013-10-10 00:59+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: docbrowser/browser.glade:8
+#: ../docbrowser/browser.glade:8
 msgid "Mono Documentation Library"
 msgstr ""
 
-#: docbrowser/browser.glade:35
+#: ../docbrowser/browser.glade:35
 msgid "_File"
 msgstr ""
 
-#: docbrowser/browser.glade:44
+#: ../docbrowser/browser.glade:44
 msgid "New _Tab"
 msgstr ""
 
-#: docbrowser/browser.glade:66
+#: ../docbrowser/browser.glade:66
 msgid "_Lookup URL..."
 msgstr ""
 
-#: docbrowser/browser.glade:88
+#: ../docbrowser/browser.glade:88
 msgid "_Print..."
 msgstr ""
 
-#: docbrowser/browser.glade:116
+#: ../docbrowser/browser.glade:116
 msgid "_Close Tab"
 msgstr ""
 
-#: docbrowser/browser.glade:138
+#: ../docbrowser/browser.glade:138
 msgid "Quit"
 msgstr ""
 
-#: docbrowser/browser.glade:164
+#: ../docbrowser/browser.glade:164
 msgid "_Edit"
 msgstr ""
 
-#: docbrowser/browser.glade:172
+#: ../docbrowser/browser.glade:172
 msgid "_Cut"
 msgstr ""
 
-#: docbrowser/browser.glade:194
+#: ../docbrowser/browser.glade:194
 msgid "_Copy"
 msgstr ""
 
-#: docbrowser/browser.glade:216
+#: ../docbrowser/browser.glade:216
 msgid "_Paste"
 msgstr ""
 
-#: docbrowser/browser.glade:244
+#: ../docbrowser/browser.glade:244
 msgid "Select All"
 msgstr ""
 
-#: docbrowser/browser.glade:258
+#: ../docbrowser/browser.glade:258
 msgid "_View"
 msgstr ""
 
-#: docbrowser/browser.glade:267
+#: ../docbrowser/browser.glade:267
 msgid "Collapse All"
 msgstr ""
 
-#: docbrowser/browser.glade:276
+#: ../docbrowser/browser.glade:276
 msgid "Show Inherited Members"
 msgstr ""
 
-#: docbrowser/browser.glade:286
+#: ../docbrowser/browser.glade:286
 msgid "Show Comments"
 msgstr ""
 
-#: docbrowser/browser.glade:300
+#: ../docbrowser/browser.glade:300
 msgid "_Bookmarks"
 msgstr ""
 
-#: docbrowser/browser.glade:315
+#: ../docbrowser/browser.glade:315
 msgid "_Contributing"
 msgstr ""
 
-#: docbrowser/browser.glade:323
+#: ../docbrowser/browser.glade:323
 msgid "_Upload Contributions..."
 msgstr ""
 
-#: docbrowser/browser.glade:345
+#: ../docbrowser/browser.glade:345
 msgid "_View Contribution Statistics..."
 msgstr ""
 
-#: docbrowser/browser.glade:372
+#: ../docbrowser/browser.glade:372
 msgid "Edit Mode"
 msgstr ""
 
-#: docbrowser/browser.glade:386
+#: ../docbrowser/browser.glade:386
 msgid "_Help"
 msgstr ""
 
-#: docbrowser/browser.glade:395
+#: ../docbrowser/browser.glade:395
 msgid "About..."
 msgstr ""
 
-#: docbrowser/browser.glade:548
+#: ../docbrowser/browser.glade:548
 msgid "n/a"
 msgstr ""
 
-#: docbrowser/browser.glade:657
+#: ../docbrowser/browser.glade:657
 msgid "_Contents"
 msgstr ""
 
-#: docbrowser/browser.glade:721
+#: ../docbrowser/browser.glade:721
 msgid "_Index"
 msgstr ""
 
-#: docbrowser/browser.glade:784
+#: ../docbrowser/browser.glade:784
 msgid "_Search"
 msgstr ""
 
-#: docbrowser/browser.glade:856
+#: ../docbrowser/browser.glade:856
 msgid "About monodoc"
 msgstr ""
 
-#: docbrowser/browser.glade:907
+#: ../docbrowser/browser.glade:907
 msgid ""
 "<span size=\"larger\"><b>monodoc:</b> The Mono Documentation Library viewer</"
 "span>"
 msgstr ""
 
-#: docbrowser/browser.glade:928
+#: ../docbrowser/browser.glade:928
 msgid "<b>Version</b> "
 msgstr ""
 
-#: docbrowser/browser.glade:970
+#: ../docbrowser/browser.glade:970
 msgid ""
 "<b>Authors:</b>\n"
 "   Miguel de Icaza (miguel at ximian.com)\n"
@@ -156,7 +158,7 @@ msgid ""
 "\t      "
 msgstr ""
 
-#: docbrowser/browser.glade:1005
+#: ../docbrowser/browser.glade:1005
 msgid ""
 "<b>Plugins:</b>\n"
 "  ECMA Documentation.\n"
@@ -167,29 +169,29 @@ msgid ""
 "  ECMA C# Specification."
 msgstr ""
 
-#: docbrowser/browser.glade:1080
+#: ../docbrowser/browser.glade:1080
 msgid "Lookup URL"
 msgstr ""
 
-#: docbrowser/browser.glade:1103
+#: ../docbrowser/browser.glade:1103
 msgid "_URL to lookup:"
 msgstr ""
 
-#: docbrowser/browser.glade:1132 docbrowser/browser.glade:1360
-#: docbrowser/browser.glade:1746 docbrowser/browser.glade:2726
-#: docbrowser/browser.glade:2749 docbrowser/browser.glade:2798
+#: ../docbrowser/browser.glade:1132 ../docbrowser/browser.glade:1360
+#: ../docbrowser/browser.glade:1746 ../docbrowser/browser.glade:2726
+#: ../docbrowser/browser.glade:2749 ../docbrowser/browser.glade:2798
 msgid "*"
 msgstr ""
 
-#: docbrowser/browser.glade:1135
+#: ../docbrowser/browser.glade:1135
 msgid "lookup_entry"
 msgstr ""
 
-#: docbrowser/browser.glade:1183
+#: ../docbrowser/browser.glade:1183
 msgid "Login configuration"
 msgstr ""
 
-#: docbrowser/browser.glade:1215
+#: ../docbrowser/browser.glade:1215
 msgid ""
 "You can edit the contents of the API documentation in MonoDoc and "
 "contribute\n"
@@ -201,79 +203,79 @@ msgid ""
 "If you agree, click Continue"
 msgstr ""
 
-#: docbrowser/browser.glade:1271 docbrowser/browser.glade:1432
-#: docbrowser/browser.glade:1807
+#: ../docbrowser/browser.glade:1271 ../docbrowser/browser.glade:1432
+#: ../docbrowser/browser.glade:1807
 msgid "Continue"
 msgstr ""
 
-#: docbrowser/browser.glade:1300
+#: ../docbrowser/browser.glade:1300
 msgid "0"
 msgstr ""
 
-#: docbrowser/browser.glade:1331
+#: ../docbrowser/browser.glade:1331
 msgid "_Email:"
 msgstr ""
 
-#: docbrowser/browser.glade:1374
+#: ../docbrowser/browser.glade:1374
 msgid "xx"
 msgstr ""
 
-#: docbrowser/browser.glade:1461
+#: ../docbrowser/browser.glade:1461
 msgid "1"
 msgstr ""
 
-#: docbrowser/browser.glade:1486
+#: ../docbrowser/browser.glade:1486
 msgid "Monodoc is requesting an account for you."
 msgstr ""
 
-#: docbrowser/browser.glade:1538 docbrowser/browser.glade:1917
-#: docbrowser/browser.glade:2208 docbrowser/browser.glade:2557
+#: ../docbrowser/browser.glade:1538 ../docbrowser/browser.glade:1917
+#: ../docbrowser/browser.glade:2208 ../docbrowser/browser.glade:2557
 msgid "Cancel"
 msgstr ""
 
-#: docbrowser/browser.glade:1567
+#: ../docbrowser/browser.glade:1567
 msgid "2"
 msgstr ""
 
-#: docbrowser/browser.glade:1592
+#: ../docbrowser/browser.glade:1592
 msgid ""
 "<b>Error:</b> Monodoc encountered a failure when requesting\n"
 "a password for your e-mail address.  Try again later."
 msgstr ""
 
-#: docbrowser/browser.glade:1628 docbrowser/browser.glade:2013
-#: docbrowser/browser.glade:2102 docbrowser/browser.glade:2297
-#: docbrowser/browser.glade:2387 docbrowser/browser.glade:2477
+#: ../docbrowser/browser.glade:1628 ../docbrowser/browser.glade:2013
+#: ../docbrowser/browser.glade:2102 ../docbrowser/browser.glade:2297
+#: ../docbrowser/browser.glade:2387 ../docbrowser/browser.glade:2477
 msgid "Ok"
 msgstr ""
 
-#: docbrowser/browser.glade:1658
+#: ../docbrowser/browser.glade:1658
 msgid "3"
 msgstr ""
 
-#: docbrowser/browser.glade:1689
+#: ../docbrowser/browser.glade:1689
 msgid ""
 "Once you receive your password on the mail, please enter it\n"
 "here:\n"
 msgstr ""
 
-#: docbrowser/browser.glade:1718
+#: ../docbrowser/browser.glade:1718
 msgid "Password:"
 msgstr ""
 
-#: docbrowser/browser.glade:1837
+#: ../docbrowser/browser.glade:1837
 msgid "4"
 msgstr ""
 
-#: docbrowser/browser.glade:1862
+#: ../docbrowser/browser.glade:1862
 msgid "MonoDoc is logging into the server."
 msgstr ""
 
-#: docbrowser/browser.glade:1953
+#: ../docbrowser/browser.glade:1953
 msgid "5"
 msgstr ""
 
-#: docbrowser/browser.glade:1978
+#: ../docbrowser/browser.glade:1978
 msgid ""
 "<b>Congratulations!</b> \n"
 "\n"
@@ -281,33 +283,33 @@ msgid ""
 "the File/Upload menu option."
 msgstr ""
 
-#: docbrowser/browser.glade:2043
+#: ../docbrowser/browser.glade:2043
 msgid "6"
 msgstr ""
 
-#: docbrowser/browser.glade:2068
+#: ../docbrowser/browser.glade:2068
 msgid ""
 "<b>Terminated</b> \n"
 "\n"
 "The request to the Monodoc server has been cancelled."
 msgstr ""
 
-#: docbrowser/browser.glade:2132
+#: ../docbrowser/browser.glade:2132
 msgid "7"
 msgstr ""
 
-#: docbrowser/browser.glade:2157
+#: ../docbrowser/browser.glade:2157
 msgid ""
 "<b>Please wait</b>\n"
 "\n"
 "MonoDoc is checking the server version."
 msgstr ""
 
-#: docbrowser/browser.glade:2237
+#: ../docbrowser/browser.glade:2237
 msgid "8"
 msgstr ""
 
-#: docbrowser/browser.glade:2262
+#: ../docbrowser/browser.glade:2262
 msgid ""
 "<b>Communications Problem</b> \n"
 "\n"
@@ -315,11 +317,11 @@ msgid ""
 "with the Mono Documentation Server."
 msgstr ""
 
-#: docbrowser/browser.glade:2327
+#: ../docbrowser/browser.glade:2327
 msgid "9"
 msgstr ""
 
-#: docbrowser/browser.glade:2352
+#: ../docbrowser/browser.glade:2352
 msgid ""
 "<b>Version missmatch</b> \n"
 "\n"
@@ -327,11 +329,11 @@ msgid ""
 "server, please upgrade your MonoDoc installation."
 msgstr ""
 
-#: docbrowser/browser.glade:2417
+#: ../docbrowser/browser.glade:2417
 msgid "10"
 msgstr ""
 
-#: docbrowser/browser.glade:2442
+#: ../docbrowser/browser.glade:2442
 msgid ""
 "<b>Password Problem</b> \n"
 "\n"
@@ -339,58 +341,58 @@ msgid ""
 "Please try again."
 msgstr ""
 
-#: docbrowser/browser.glade:2507
+#: ../docbrowser/browser.glade:2507
 msgid "11"
 msgstr ""
 
-#: docbrowser/browser.glade:2528
+#: ../docbrowser/browser.glade:2528
 msgid "Uploading Documentation Updates - MonoDoc"
 msgstr ""
 
-#: docbrowser/browser.glade:2583
+#: ../docbrowser/browser.glade:2583
 msgid "Monodoc Documentation Updates Uploader. "
 msgstr ""
 
-#: docbrowser/browser.glade:2610
+#: ../docbrowser/browser.glade:2610
 msgid "<b>Status:</b> "
 msgstr ""
 
-#: docbrowser/browser.glade:2668
+#: ../docbrowser/browser.glade:2668
 msgid "New Comment"
 msgstr ""
 
-#: docbrowser/browser.glade:2690
+#: ../docbrowser/browser.glade:2690
 msgid "TODO: Some advise on posting here."
 msgstr ""
 
-#: docbrowser/browser.glade:2766
+#: ../docbrowser/browser.glade:2766
 msgid "Title:"
 msgstr ""
 
-#: docbrowser/browser.glade:2815
+#: ../docbrowser/browser.glade:2815
 msgid "Comment"
 msgstr ""
 
-#: docbrowser/browser.glade:2841
+#: ../docbrowser/browser.glade:2841
 msgid "E-Mail:"
 msgstr ""
 
-#: docbrowser/browser.glade:2867 docbrowser/browser.glade:3169
+#: ../docbrowser/browser.glade:2867 ../docbrowser/browser.glade:3169
 msgid "Name:"
 msgstr ""
 
-#: docbrowser/browser.glade:2987
+#: ../docbrowser/browser.glade:2987
 msgid "Manage Bookmarks"
 msgstr ""
 
-#: docbrowser/browser.glade:3071
+#: ../docbrowser/browser.glade:3071
 msgid "New Folder"
 msgstr ""
 
-#: docbrowser/browser.glade:3136
+#: ../docbrowser/browser.glade:3136
 msgid "Add Bookmark"
 msgstr ""
 
-#: docbrowser/browser.glade:3227
+#: ../docbrowser/browser.glade:3227
 msgid "Create in:"
 msgstr ""
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index cc67354..575746e 100644
Binary files a/po/pt_BR.gmo and b/po/pt_BR.gmo differ
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 26c8697..3eec5bb 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Mono Tools\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-02-12 09:42-0700\n"
+"POT-Creation-Date: 2008-01-22 17:13-0500\n"
 "PO-Revision-Date: 2004-07-06 00:13-0300\n"
 "Last-Translator: Maurício de Lemos Rodrigues Collares Neto <mauricioc at gmail."
 "com>\n"
@@ -18,6 +18,247 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 
+#: gnunit/src/AssemblyStore.cs:304
+msgid "Already running some test(s)."
+msgstr ""
+
+#: gnunit/src/AssemblyStore.cs:587
+msgid "Warning: unexpected combination."
+msgstr ""
+
+#: gnunit/src/AssemblyStore.cs:596
+#, csharp-format
+msgid "Don't know anything about {0}"
+msgstr ""
+
+#: gnunit/src/FileDialog.cs:26
+msgid "Select an assembly to load"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:10
+msgid "Mono NUnit2 GUI"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:72
+msgid "_Recent assemblies"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:92
+msgid "_Clear recent"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:165
+msgid "Enable/disable by category"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:166
+msgid "_Categories"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:219
+msgid "Open assembly"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:220
+msgid "Open"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:234
+msgid "Save results to a XML file"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:235
+#, fuzzy
+msgid "Save As"
+msgstr "_Salvar"
+
+#: gnunit/src/nunit-gtk.glade:249
+msgid "Run selected test fixture(s)"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:250 gnunit/src/nunit-gtk.glade:516
+msgid "Run"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:265 docbrowser/browser.glade:1538
+#: docbrowser/browser.glade:1917 docbrowser/browser.glade:2208
+#: docbrowser/browser.glade:2557
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: gnunit/src/nunit-gtk.glade:266
+msgid "Stop"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:280
+msgid "Exit program"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:281 docbrowser/browser.glade:138
+msgid "Quit"
+msgstr "Sair"
+
+#: gnunit/src/nunit-gtk.glade:390
+msgid "Test: "
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:588
+msgid "Errors and failures"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:641
+msgid "Tests not run"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:699
+msgid "Standard error"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:757
+msgid "Standard out"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:815 gnunit/src/main.cs:686
+msgid "Error"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:904
+#, fuzzy
+msgid "label"
+msgstr "label16"
+
+#: gnunit/src/nunit-gtk.glade:936 gnunit/src/main.cs:104
+msgid "Show details >>"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:1009
+msgid "Error details"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:1056
+msgid "File exists. Overwrite?"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:1084
+msgid "Don't save results"
+msgstr ""
+
+#: gnunit/src/nunit-gtk.glade:1098
+msgid "Save results"
+msgstr ""
+
+#: gnunit/src/main.cs:37
+#, csharp-format
+msgid "<b>File {0} exists.</b>"
+msgstr ""
+
+#: gnunit/src/main.cs:38
+msgid "Do you want to overwrite it?"
+msgstr ""
+
+#: gnunit/src/main.cs:107
+msgid "Hide details <<"
+msgstr ""
+
+#: gnunit/src/main.cs:200
+msgid "Uncategorized"
+msgstr ""
+
+#: gnunit/src/main.cs:408
+msgid "No assembly loaded."
+msgstr ""
+
+#: gnunit/src/main.cs:434
+#, csharp-format
+msgid "Loading {0}..."
+msgstr ""
+
+#: gnunit/src/main.cs:546
+#, csharp-format
+msgid "Loading test {0} of {1}"
+msgstr ""
+
+#: gnunit/src/main.cs:557
+msgid "Error loading assembly"
+msgstr ""
+
+#: gnunit/src/main.cs:558
+#, csharp-format
+msgid "Error loading '{0}'"
+msgstr ""
+
+#: gnunit/src/main.cs:608
+msgid "translator_credits"
+msgstr ""
+
+#: gnunit/src/main.cs:630
+msgid "You have to select a test to run."
+msgstr ""
+
+#: gnunit/src/main.cs:660
+msgid "No test results available"
+msgstr ""
+
+#: gnunit/src/main.cs:661
+msgid "You must run some tests in order to get results to save."
+msgstr ""
+
+#: gnunit/src/main.cs:667
+msgid "Save results to..."
+msgstr ""
+
+#: gnunit/src/main.cs:676
+msgid "Results not saved."
+msgstr ""
+
+#: gnunit/src/main.cs:687
+msgid "There has been an error saving the results.\n"
+msgstr ""
+
+#: gnunit/src/main.cs:688
+msgid "Do you have correct permissions to write to that file?"
+msgstr ""
+
+#: gnunit/src/main.cs:696
+#, csharp-format
+msgid "Results saved to {0}"
+msgstr ""
+
+#: gnunit/src/main.cs:774
+#, csharp-format
+msgid "Tests (assertions): {0} ({3}) Ignored: {1} Failures: {2}"
+msgstr ""
+
+#: gnunit/src/main.cs:952
+msgid "Running tests..."
+msgstr ""
+
+#: gnunit/src/main.cs:995
+msgid "Cancelled on user request."
+msgstr ""
+
+#: gnunit/src/main.cs:1033
+#, csharp-format
+msgid "{0} tests loaded."
+msgstr ""
+
+#: gnunit/src/main.cs:1051
+#, csharp-format
+msgid "Elapsed time: {0}"
+msgstr ""
+
+#: gnunit/src/main.cs:1061
+msgid "Unhandled Exception"
+msgstr ""
+
+#: gnunit/src/main.cs:1061
+msgid "There has been an unhandled exception.\n"
+msgstr ""
+
+#: gnunit/src/main.cs:1062
+msgid "The program will terminate now."
+msgstr ""
+
 #: docbrowser/browser.glade:8
 msgid "Mono Documentation Library"
 msgstr "Biblioteca de documentação do Mono"
@@ -44,10 +285,6 @@ msgstr ""
 msgid "_Close Tab"
 msgstr "_Fechar"
 
-#: docbrowser/browser.glade:138
-msgid "Quit"
-msgstr "Sair"
-
 #: docbrowser/browser.glade:164
 msgid "_Edit"
 msgstr "_Editar"
@@ -264,11 +501,6 @@ msgstr "1"
 msgid "Monodoc is requesting an account for you."
 msgstr "O Monodoc está requisitando uma conta para você."
 
-#: docbrowser/browser.glade:1538 docbrowser/browser.glade:1917
-#: docbrowser/browser.glade:2208 docbrowser/browser.glade:2557
-msgid "Cancel"
-msgstr "Cancelar"
-
 #: docbrowser/browser.glade:1567
 msgid "2"
 msgstr "2"
@@ -461,14 +693,6 @@ msgstr "_Adicionar marcador"
 msgid "Create in:"
 msgstr ""
 
-#, fuzzy
-#~ msgid "Save As"
-#~ msgstr "_Salvar"
-
-#, fuzzy
-#~ msgid "label"
-#~ msgstr "label16"
-
 #~ msgid "Editing"
 #~ msgstr "Edição"
 
diff --git a/webdoc/App_Code/Plugins/Plugin.cs b/webdoc/App_Code/Plugins/Plugin.cs
new file mode 100644
index 0000000..93a37e4
--- /dev/null
+++ b/webdoc/App_Code/Plugins/Plugin.cs
@@ -0,0 +1,144 @@
+using System;
+using System.Web.Configuration;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+
+namespace Mono.Website {
+	public class Plugin {
+
+		static string PluginsDefLocation = WebConfigurationManager.AppSettings["Plugins"]; 
+
+		public enum PluginContent {
+	        Header,
+    	    Footer,
+        	Css,
+        	Javascript
+		}
+
+		//generates a list of files of a certain type in the plugins we are including, 
+		//and spits out the necessary text to add to index.aspx
+		public static string GetPluginContent (PluginContent type) 
+		{
+			var plugins_list_from_def = ParseExternalDefinition(PluginsDefLocation);
+	        var paths_to_files = GetFilesTypeX(type, plugins_list_from_def);
+	        return GetPluginContent (type, paths_to_files);
+		}
+
+		//Add the actual HTML to include either the reference or the content in index.aspx, for each plugin mentioned
+		//in the .def
+		static string GetPluginContent (PluginContent type, string[] paths_to_files)
+		{
+    	    if (type == PluginContent.Javascript) {
+    	        paths_to_files = Array.ConvertAll(paths_to_files, path => 
+    	            								string.Format("{1}script type='text/javascript' src='{0}'{2}{1}/script{2}", path, '<', '>'));
+       			//reverse the array so we get all our js dependencies correct :)
+				Array.Reverse(paths_to_files);
+			} else if (type == PluginContent.Css) {
+            	paths_to_files = Array.ConvertAll(paths_to_files, path => string.Format("{1}link type='text/css' rel='stylesheet' media='screen' href='{0}'{2}", path, '<', '>'));
+        	} else {
+                paths_to_files = Array.ConvertAll(paths_to_files, path => File.ReadAllText(path));      
+        	}
+	
+        	var content_to_inject = String.Join(String.Empty, paths_to_files);
+        	return content_to_inject;
+		}
+
+		//returns files of a certain type from ALL directories.
+		static string[] GetFilesTypeX (PluginContent type, List<string> directories)
+		{
+	        var all_typed_files = new List<string>(); 
+	        foreach(var directory in directories) {
+                var files = GetFilesTypeX(type, directory);
+                all_typed_files.AddRange(files);
+    	    }
+        	return all_typed_files.ToArray();
+		}
+	
+		//grab files of type x from a directory
+		static List<string> GetFilesTypeX (PluginContent type, string directory)
+		{
+        	try {
+                string criteria;
+                if(type == PluginContent.Javascript) {
+                        criteria = "*.js";
+                } else if(type == PluginContent.Css) {
+                        criteria = "*.css";
+                } else if(type == PluginContent.Footer) {
+                        criteria = "footer.????";
+                } else if (type == PluginContent.Header) {
+                        criteria = "header.????";
+                } else {
+                        criteria = string.Empty;
+                }
+                var files_arr = GetFilesTypeX(directory, criteria);
+                List<string> files = new List<string>(files_arr);
+
+				var external = Directory.GetFiles(directory, "external.def");
+				if (external.Any()) {
+					try  {
+			    		if (type == PluginContent.Css) {
+							files.AddRange(ParseExternalDefinition(external[0], ".css"));
+			    		} else if (type == PluginContent.Javascript) {
+							files.AddRange(ParseExternalDefinition(external[0], ".js"));
+			    		} else {    
+			    		}
+					} catch (Exception ex) {
+			    		throw ex;
+					}    
+				}
+            	return files;
+        	} catch (Exception ex) {
+                throw ex;
+        	}
+		}
+
+		//recursively browse directories for files with a certain extension or file name
+		static List<string> GetFilesTypeX (string directory, string criteria)
+		{
+        	try {
+                var filesFound = new List<string>();
+                foreach (string file in Directory.GetFiles(directory, criteria)) {
+                        filesFound.Add(file);
+                }
+				foreach (string dir in Directory.GetDirectories(directory)) {
+                	filesFound.AddRange(GetFilesTypeX(dir, criteria));
+                }
+                return filesFound;
+        	} catch (Exception ex) {
+                throw ex;
+        	}
+		}	
+
+		static List<string> ParseExternalDefinition (string definitionPath, string criteria)
+		{
+    		//if definitionPath is undefined, or def file does not exist, don't bother
+    		if (string.IsNullOrEmpty (definitionPath) || !File.Exists (definitionPath))
+        	   return null;
+    		// read out the file
+    		var lines = File.ReadAllLines (definitionPath);
+    		//build our list
+    		var files = lines.Where (line => !string.IsNullOrEmpty (line) && line[0] != '#') // Take non-empty, non-comment lines
+                .Where (file_path => file_path != null && file_path.Length > 2 && file_path.EndsWith(criteria)) 
+                .ToList ();
+    		//returns a list of directories in which to look for plugin resources
+    		return files;
+		}
+
+		//eats whatever .def file you feed it
+		static List<string> ParseExternalDefinition (string definitionPath)
+		{
+			//if definitionPath is undefined, or def file does not exist, don't bother
+			if (string.IsNullOrEmpty (definitionPath) || !File.Exists (definitionPath))
+				return null;
+			// read out the file
+			var lines = File.ReadAllLines (definitionPath);
+			//build our list
+			var directories = lines.Where (line => !string.IsNullOrEmpty (line) && line[0] != '#') // Take non-empty, non-comment lines
+				.Where (file_path => file_path != null && file_path.Length > 2)
+					.ToList ();
+			//returns a list of directories in which to look for plugin resources
+			return directories;
+		}
+	}
+}
diff --git a/webdoc/Global.asax b/webdoc/Global.asax
new file mode 100644
index 0000000..9540553
--- /dev/null
+++ b/webdoc/Global.asax
@@ -0,0 +1,125 @@
+<%@ Application ClassName="Mono.Website.Global" %>
+<%@ Import Namespace="Monodoc" %>
+<%@ Import Namespace="System.Web.Configuration" %>
+<%@ Import Namespace="System.Collections.Generic" %>
+<%@ Import Namespace="System.IO" %>
+<%@ Import Namespace="System.Linq" %>
+<%@ Assembly name="monodoc" %>
+
+<script runat="server" language="c#" >
+public static RootTree help_tree;
+[ThreadStatic]
+static SearchableIndex search_index;
+public static string ua = null;
+
+void Application_Start ()
+{
+	HelpSource.use_css = true;
+	HelpSource.FullHtml = false;
+	HelpSource.UseWebdocCache = true;
+	var rootDir = WebConfigurationManager.AppSettings["MonodocRootDir"];
+	if (!string.IsNullOrEmpty (rootDir))
+		help_tree = RootTree.LoadTree (rootDir);
+	else
+		help_tree = RootTree.LoadTree ();
+	
+	//Google analytics if we want em
+	ua = WebConfigurationManager.AppSettings["GoogleAnalytics"];
+
+	SettingsHandler.Settings.EnableEditing = false;
+}
+
+/*----------------TREE BUILDING----------------*/
+public static readonly string kipunji_root_url = "http://docs.go-mono.com/";
+private static readonly string prefixes = "TNCFEMP";
+
+public static bool should_redirect_to_kipunji (string link)
+{
+	return prefixes.IndexOf (link [0]) > -1;
+}
+
+public static void redirect_to_kipunji (HttpContext context, string link)
+{
+	StringBuilder res = new StringBuilder ();
+        res.Append (kipunji_root_url);
+
+	if (link.StartsWith ("T:")) {
+
+	      int end = link.Length;
+	      string post = String.Empty;
+	      if (link.Length > 3 && link [link.Length - 2] == '/') {
+                  end = link.Length - 2;
+	          switch (link [link.Length - 1]) {
+	      	     case '*':
+		     	  post = "/Members";
+			  break;
+		     case 'M':
+		           post = "/Members#methods";
+			   break;
+		     case 'P':
+		     	   post = "/Members#properties";
+			   break;
+		     case 'C':
+		     	   post = "/Members#ctors";
+			   break;
+	             case 'F':
+		     	   post = "/Members#fields";
+			   break;
+		     case 'E':
+		     	   post = "/Members#events";
+			   break;
+	          }
+              }
+
+	      res.Append (link.Substring (2, end - 2));
+	      res.Append (post);
+	          
+	} else if (link.StartsWith ("C:")) {
+	      // HACK: Instead of linking to the proper ctor just send them to all the ctors
+	      res.AppendFormat ("{0}/Members#ctors", link.Substring (2, link.Length - 2));
+	} else if (link.StartsWith ("N:") || link.StartsWith ("M:") || link.StartsWith ("P:") || link.StartsWith ("C:") || link.StartsWith ("E:"))
+	      res.Append (link.Substring (2, link.Length - 2));
+
+	context.Response.RedirectPermanent (res.ToString ());
+}
+
+public static string CreateTreeBootFragment ()
+{
+	var fragment = new System.Text.StringBuilder ();
+
+	for (int i = 0; i < help_tree.Nodes.Count; i++){
+		Node n = (Node)help_tree.Nodes [i];
+
+		string url = n.PublicUrl;
+
+		if (n.Caption == "Base Class Library" || n.Caption == "Mono Libraries")
+			url = kipunji_root_url + (n.Caption == "Base Class Library" ? "?display_all=true" : String.Empty);
+
+		fragment.Append ("tree.CreateItem (root, '" + n.Caption + "', '" + url + "', ");
+	
+		if (n.Nodes.Count != 0)
+			fragment.Append ("'" + i + "'");
+		else
+			fragment.Append ("null");
+	
+		if (i == help_tree.Nodes.Count-1)
+			fragment.Append (", true");
+		else
+			fragment.Append (", false");
+
+		fragment.Append (@");
+			");
+	}
+
+	return fragment.ToString ();
+}
+
+/*------------SEARCH------------*/
+public static SearchableIndex GetSearchIndex ()
+{
+	if (search_index != null)
+		return search_index;
+	return (search_index = help_tree.GetSearchIndex ());
+}
+
+</script>
diff --git a/webdoc/Makefile.am b/webdoc/Makefile.am
index 4c02bf2..73d2517 100644
--- a/webdoc/Makefile.am
+++ b/webdoc/Makefile.am
@@ -1,97 +1,160 @@
 webdir=$(prefix)/lib/monodoc/web
 
 web_DATA = \
-	common.css \
-	edit.aspx \
-	header.aspx \
-	header.html \
+	Global.asax \
+	robots.txt \
 	index.aspx \
-	index.html \
-	login.aspx \
-	logout.aspx \
-	mono_logo_g.gif \
 	monodoc.ashx \
-	monodoc.asmx \
-	oldposts.xml \
-	server.asmx \
-	server.cs \
-	sidebar.css \
-	sidebar.js \
-	tables.sql \
+	monodoc.css \
 	web.config \
-	wiki2ecmahelper.xsl
+	api.master \
+	plugins.def \
+	README.md 
 
 DISTCLEANFILES = 
 
 .PHONY :  \
-	cleandb \
-	db \
 	dist-hook \
 	web \
 	up
  
 EXTRA_DIST = \
-	$(wildcard images/*.gif) \
-	$(wildcard images/*.png) \
-	$(wildcard ptree/tree*) \
-	$(wildcard xtree/*.js) \
-	$(wildcard xtree/*.css) \
-	$(wildcard xtree/images/*.png) \
-	$(wildcard xtree/images/*.png) \
-	$(wildcard xtree/images/clean/*.gif) \
-	$(wildcard xtree/images/msdn/*.gif) \
-	$(wildcard xtree/images/msdn2/*.gif)
-	$(wildcard xtree/images/xp/*.png)
+	$(wildcard App_Code/Plugins/*.cs) \
+	$(wildcard views/*.css) \
+	$(wildcard views/*.js) \
+	$(wildcard views/*.html) \
+	$(wildcard views/images/*.png) \
+	$(wildcard views/images/*.gif) \
+	$(wildcard skins/mono-external/header*) \
+	$(wildcard skins/mono-external/footer*) \
+	$(wildcard skins/mono-external/*.css) \
+	$(wildcard skins/mono-external/*.js) \
+	$(wildcard skins/mono-external/images/*.png) \
+	$(wildcard skins/mono-external/images/*.gif) \
+	$(wildcard plugins/iframe-plugin/*.js) \
+        $(wildcard plugins/iframe-plugin/*.css) \
+        $(wildcard plugins/iframe-plugin/*.html) \
+	$(wildcard plugins/tooltip-plugin/*.js) \
+	$(wildcard plugins/sidebar-plugin/*.js) \
+        $(wildcard plugins/sidebar-plugin/*.css) \
+	$(wildcard plugins/sidebar-plugin/dependencies/ptree/*.css) \
+        $(wildcard plugins/sidebar-plugin/dependencies/ptree/*.js) \
+        $(wildcard plugins/sidebar-plugin/dependencies/ptree/*.gif) \
+	$(wildcard plugins/sidebar-plugin/dependencies/xtree/*.css) \
+        $(wildcard plugins/sidebar-plugin/dependencies/xtree/*.js) \
+	$(wildcard plugins/sidebar-plugin/dependencies/xtree/images/*.png) \
+	$(wildcard plugins/sidebar-plugin/dependencies/xtree/images/clean/*.gif) \
+	$(wildcard plugins/sidebar-plugin/dependencies/xtree/images/msdn/*.gif) \
+	$(wildcard plugins/sidebar-plugin/dependencies/xtree/images/msdn2/*.gif) \
+	$(wildcard plugins/sidebar-plugin/dependencies/xtree/images/xp/*.png) \
+        $(wildcard plugins/search-plugin/images/*.gif) \
+        $(wildcard plugins/search-plugin/fullsearch/*.css) \
+        $(wildcard plugins/search-plugin/fullsearch/*.js) \
+        $(wildcard plugins/search-plugin/fullsearch/*.html) \
+	$(wildcard plugins/search-plugin/fastsearch/*.css) \
+        $(wildcard plugins/search-plugin/fastsearch/*.js)	
 
 dist-hook:
-	mkdir -p $(distdir)/images
-	mkdir -p $(distdir)/xtree/images/msdn
-	mkdir -p $(distdir)/xtree/images/msdn2
-	mkdir -p $(distdir)/xtree/images/xp
-	mkdir -p $(distdir)/ptree
+	mkdir -p $(distdir)/App_Code/Plugins
+	mkdir -p $(distdir)/views/images
+	mkdir -p $(distdir)/skins/mono-external/images
+	mkdir -p $(distdir)/plugins/iframe-plugin
+	mkdir -p $(distdir)/plugins/tooltip-plugin
+	mkdir -p $(distdir)/plugins/sidebar-plugin/dependencies/ptree
+	mkdir -p $(distdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn
+	mkdir -p $(distdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn2
+	mkdir -p $(distdir)/plugins/sidebar-plugin/dependencies/xtree/images/xp
+	mkdir -p $(distdir)/plugins/sidebar-plugin/dependencies/xtree/images/clean
+	mkdir -p $(distdir)/plugins/search-plugin/images
+	mkdir -p $(distdir)/plugins/search-plugin/fastsearch
+	mkdir -p $(distdir)/plugins/search-plugin/fullsearch
 	for f in $(web_DATA) ; do cp $(srcdir)/$$f $(distdir) ; done
-	cp $(srcdir)/images/*gif              $(distdir)/images
-	cp $(srcdir)/images/*png              $(distdir)/images
-	cp $(srcdir)/xtree/images/msdn/*gif   $(distdir)/xtree/images/msdn
-	cp $(srcdir)/xtree/images/msdn2/*gif  $(distdir)/xtree/images/msdn2
-	cp $(srcdir)/xtree/images/xp/*png     $(distdir)/xtree/images/xp
-	cp $(srcdir)/xtree/images/*png        $(distdir)/xtree/images
-	cp $(srcdir)/xtree/*js                $(distdir)/xtree
-	cp $(srcdir)/xtree/*css               $(distdir)/xtree
-	cp $(srcdir)/ptree/*css               $(distdir)/ptree
-	cp $(srcdir)/ptree/*js                $(distdir)/ptree
+	cp $(srcdir)/App_Code/Plugins/*cs          				  $(distdir)/App_Code/Plugins
+	cp $(srcdir)/views/*css                                                   $(distdir)/views
+	cp $(srcdir)/views/*js                                                    $(distdir)/views
+	cp $(srcdir)/views/images/*png                                            $(distdir)/views/images	
+	cp $(srcdir)/views/images/*ico                                            $(distdir)/views/images
+	cp $(srcdir)/skins/mono-external/header*                                  $(distdir)/skins/mono-external
+	cp $(srcdir)/skins/mono-external/footer*                                  $(distdir)/skins/mono-external
+	cp $(srcdir)/skins/mono-external/*css                                     $(distdir)/skins/mono-external
+	cp $(srcdir)/skins/mono-external/images/*png                              $(distdir)/skins/mono-external/images
+	cp $(srcdir)/skins/mono-external/images/*gif                              $(distdir)/skins/mono-external/images	
+	cp $(srcdir)/plugins/iframe-plugin/*js                                    $(distdir)/plugins/iframe-plugin
+	cp $(srcdir)/plugins/tooltip-plugin/*js                                    $(distdir)/plugins/tooltip-plugin
+	cp $(srcdir)/plugins/sidebar-plugin/*css                                  $(distdir)/plugins/sidebar-plugin
+	cp $(srcdir)/plugins/sidebar-plugin/*js                                   $(distdir)/plugins/sidebar-plugin	
+	cp $(srcdir)/plugins/sidebar-plugin/dependencies/ptree/*css               $(distdir)/plugins/sidebar-plugin/dependencies/ptree	
+	cp $(srcdir)/plugins/sidebar-plugin/dependencies/ptree/*js                $(distdir)/plugins/sidebar-plugin/dependencies/ptree
+	cp $(srcdir)/plugins/sidebar-plugin/dependencies/ptree/*gif               $(distdir)/plugins/sidebar-plugin/dependencies/ptree	
+	cp $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/*css               $(distdir)/plugins/sidebar-plugin/dependencies/xtree	
+	cp $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/*js   	          $(distdir)/plugins/sidebar-plugin/dependencies/xtree 
+	cp $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/images/*png        $(distdir)/plugins/sidebar-plugin/dependencies/xtree/images
+	cp $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/images/clean/*gif  $(distdir)/plugins/sidebar-plugin/dependencies/xtree/images/clean
+	cp $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn/*gif   $(distdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn
+	cp $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/*gif  $(distdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn2
+	cp $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/images/xp/*png     $(distdir)/plugins/sidebar-plugin/dependencies/xtree/images/xp
+	cp $(srcdir)/plugins/search-plugin/images/*gif                            $(distdir)/plugins/search-plugin/images
+	cp $(srcdir)/plugins/search-plugin/fullsearch/*css                        $(distdir)/plugins/search-plugin/fullsearch
+	cp $(srcdir)/plugins/search-plugin/fullsearch/*js                         $(distdir)/plugins/search-plugin/fullsearch
+	cp $(srcdir)/plugins/search-plugin/fullsearch/*html                       $(distdir)/plugins/search-plugin/fullsearch
+	cp $(srcdir)/plugins/search-plugin/fastsearch/*css                        $(distdir)/plugins/search-plugin/fastsearch
+	cp $(srcdir)/plugins/search-plugin/fastsearch/*js                         $(distdir)/plugins/search-plugin/fastsearch
 
 install-data-hook:
-	-$(mkinstalldirs) $(DESTDIR)$(webdir)/images
-	-$(mkinstalldirs) $(DESTDIR)$(webdir)/ptree
-	-$(mkinstalldirs) $(DESTDIR)$(webdir)/xtree
-	-$(mkinstalldirs) $(DESTDIR)$(webdir)/xtree/images
-	-$(mkinstalldirs) $(DESTDIR)$(webdir)/xtree/images/msdn
-	-$(mkinstalldirs) $(DESTDIR)$(webdir)/xtree/images/msdn2
-	-$(mkinstalldirs) $(DESTDIR)$(webdir)/xtree/images/xp
-	$(INSTALL_DATA) $(srcdir)/images/*gif             $(DESTDIR)$(webdir)/images
-	$(INSTALL_DATA) $(srcdir)/images/*png             $(DESTDIR)$(webdir)/images
-	$(INSTALL_DATA) $(srcdir)/xtree/images/msdn/*gif  $(DESTDIR)$(webdir)/xtree/images/msdn
-	$(INSTALL_DATA) $(srcdir)/xtree/images/msdn2/*gif $(DESTDIR)$(webdir)/xtree/images/msdn2
-	$(INSTALL_DATA) $(srcdir)/xtree/images/xp/*png    $(DESTDIR)$(webdir)/xtree/images/xp
-	$(INSTALL_DATA) $(srcdir)/xtree/images/*png       $(DESTDIR)$(webdir)/xtree/images/xp
-	$(INSTALL_DATA) $(srcdir)/xtree/*js               $(DESTDIR)$(webdir)/xtree
-	$(INSTALL_DATA) $(srcdir)/xtree/*css              $(DESTDIR)$(webdir)/xtree
-	$(INSTALL_DATA) $(srcdir)/ptree/*css              $(DESTDIR)$(webdir)/ptree
-	$(INSTALL_DATA) $(srcdir)/ptree/*js               $(DESTDIR)$(webdir)/ptree
-
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/App_Code/Plugins
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/views/images
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/skins/mono-external/images
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/plugins/iframe-plugin
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/plugins/tooltip-plugin
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/ptree
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn2
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree/images/xp
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree/images/clean
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/plugins/search-plugin/images
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/plugins/search-plugin/fastsearch
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/plugins/search-plugin/fullsearch
+	 $(INSTALL_DATA) $(srcdir)/App_Code/Plugins/*cs                                         $(DESTDIR)$(webdir)/App_Code/Plugins
+	 $(INSTALL_DATA) $(srcdir)/views/*css                                                   $(DESTDIR)$(webdir)/views
+	 $(INSTALL_DATA) $(srcdir)/views/*js                                                    $(DESTDIR)$(webdir)/views
+	 $(INSTALL_DATA) $(srcdir)/views/*html                                                  $(DESTDIR)$(webdir)/views
+	 $(INSTALL_DATA) $(srcdir)/views/images/*png                                            $(DESTDIR)$(webdir)/views/images
+	 $(INSTALL_DATA) $(srcdir)/views/images/*gif                                            $(DESTDIR)$(webdir)/views/images
+	 $(INSTALL_DATA) $(srcdir)/skins/mono-external/header*                                  $(DESTDIR)$(webdir)/skins/mono-external
+	 $(INSTALL_DATA) $(srcdir)/skins/mono-external/footer*                                  $(DESTDIR)$(webdir)/skins/mono-external
+	 $(INSTALL_DATA) $(srcdir)/skins/mono-external/*css                                     $(DESTDIR)$(webdir)/skins/mono-external
+	 $(INSTALL_DATA) $(srcdir)/skins/mono-external/*js                                      $(DESTDIR)$(webdir)/skins/mono-external
+	 $(INSTALL_DATA) $(srcdir)/skins/mono-external/images/*png                              $(DESTDIR)$(webdir)/skins/mono-external/images
+	 $(INSTALL_DATA) $(srcdir)/skins/mono-external/images/*gif                              $(DESTDIR)$(webdir)/skins/mono-external/images
+	 $(INSTALL_DATA) $(srcdir)/plugins/iframe-plugins/*css                                  $(DESTDIR)$(webdir)/plugins/iframe-plugin
+	 $(INSTALL_DATA) $(srcdir)/plugins/iframe-plugin/*js                                    $(DESTDIR)$(webdir)/plugins/iframe-plugin
+	 $(INSTALL_DATA) $(srcdir)/plugins/iframe-plugin/*html                                  $(DESTDIR)$(webdir)/plugins/iframe-plugin
+	 $(INSTALL_DATA) $(srcdir)/plugins/tooltip-plugin/*js                                    $(DESTDIR)$(webdir)/plugins/tooltip-plugin
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/*css                                  $(DESTDIR)$(webdir)/plugins/sidebar-plugin
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/*js                                   $(DESTDIR)$(webdir)/plugins/sidebar-plugin
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/dependencies/ptree/*css               $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/ptree
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/dependencies/ptree/*js                $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/ptree
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/dependencies/ptree/*gif               $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/ptree
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/*css               $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/*js                $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/images/*png        $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree/images
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/images/clean/*gif  $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree/images/clean
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn/*gif   $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/*gif  $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn2
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/images/xp/*png     $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree/images/xp
+	 $(INSTALL_DATA) $(srcdir)/plugins/search-plugin/images/*gif                            $(DESTDIR)$(webdir)/plugins/search-plugin/images
+	 $(INSTALL_DATA) $(srcdir)/plugins/search-plugin/fullsearch/*css                        $(DESTDIR)$(webdir)/plugins/search-plugin/fullsearch
+	 $(INSTALL_DATA) $(srcdir)/plugins/search-plugin/fullsearch/*js                         $(DESTDIR)$(webdir)/plugins/search-plugin/fullsearch
+	 $(INSTALL_DATA) $(srcdir)/plugins/search-plugin/fullsearch/*html                       $(DESTDIR)$(webdir)/plugins/search-plugin/fullsearch
+	 $(INSTALL_DATA) $(srcdir)/plugins/search-plugin/fastsearch/*css                        $(DESTDIR)$(webdir)/plugins/search-plugin/fastsearch
+	 $(INSTALL_DATA) $(srcdir)/plugins/search-plugin/fastsearch/*js                         $(DESTDIR)$(webdir)/plugins/search-plugin/fastsearch
+	
 Monodoc.Contributions.dll: server.cs Makefile.am
 	mcs -debug+ $< -target:library -out:$@ -r:System.Web -r:System.Web.Services -pkg:monodoc -r:System.Data -r:ByteFX.Data
 
 web: Monodoc.Contributions.dll
 	xsp
 
-db:
-	mysql -u admin -p 
-
-cleandb:
-	mysql -u admin -p < tables.sql
-
 up:
-	scp tables.sql server.cs server.asmx monodoc.dll root at www.go-mono.com:
+	scp monodoc.dll root at www.go-mono.com:
 
diff --git a/webdoc/Makefile.in b/webdoc/Makefile.in
index 065a061..fe91494 100644
--- a/webdoc/Makefile.in
+++ b/webdoc/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,9 +16,27 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -39,18 +58,44 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(webdir)"
-webDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(web_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
@@ -113,6 +158,7 @@ MAKEINFO = @MAKEINFO@
 MCS = @MCS@
 MDOC = @MDOC@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MONODOC_CFLAGS = @MONODOC_CFLAGS@
 MONODOC_LIBS = @MONODOC_LIBS@
 MOZILLA_HOME = @MOZILLA_HOME@
@@ -126,9 +172,12 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POFILES = @POFILES@
 POSUB = @POSUB@
 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
@@ -200,38 +249,52 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 webdir = $(prefix)/lib/monodoc/web
 web_DATA = \
-	common.css \
-	edit.aspx \
-	header.aspx \
-	header.html \
+	Global.asax \
+	robots.txt \
 	index.aspx \
-	index.html \
-	login.aspx \
-	logout.aspx \
-	mono_logo_g.gif \
 	monodoc.ashx \
-	monodoc.asmx \
-	oldposts.xml \
-	server.asmx \
-	server.cs \
-	sidebar.css \
-	sidebar.js \
-	tables.sql \
+	monodoc.css \
 	web.config \
-	wiki2ecmahelper.xsl
+	api.master \
+	plugins.def \
+	README.md 
 
 DISTCLEANFILES = 
 EXTRA_DIST = \
-	$(wildcard images/*.gif) \
-	$(wildcard images/*.png) \
-	$(wildcard ptree/tree*) \
-	$(wildcard xtree/*.js) \
-	$(wildcard xtree/*.css) \
-	$(wildcard xtree/images/*.png) \
-	$(wildcard xtree/images/*.png) \
-	$(wildcard xtree/images/clean/*.gif) \
-	$(wildcard xtree/images/msdn/*.gif) \
-	$(wildcard xtree/images/msdn2/*.gif)
+	$(wildcard App_Code/Plugins/*.cs) \
+	$(wildcard views/*.css) \
+	$(wildcard views/*.js) \
+	$(wildcard views/*.html) \
+	$(wildcard views/images/*.png) \
+	$(wildcard views/images/*.gif) \
+	$(wildcard skins/mono-external/header*) \
+	$(wildcard skins/mono-external/footer*) \
+	$(wildcard skins/mono-external/*.css) \
+	$(wildcard skins/mono-external/*.js) \
+	$(wildcard skins/mono-external/images/*.png) \
+	$(wildcard skins/mono-external/images/*.gif) \
+	$(wildcard plugins/iframe-plugin/*.js) \
+        $(wildcard plugins/iframe-plugin/*.css) \
+        $(wildcard plugins/iframe-plugin/*.html) \
+	$(wildcard plugins/tooltip-plugin/*.js) \
+	$(wildcard plugins/sidebar-plugin/*.js) \
+        $(wildcard plugins/sidebar-plugin/*.css) \
+	$(wildcard plugins/sidebar-plugin/dependencies/ptree/*.css) \
+        $(wildcard plugins/sidebar-plugin/dependencies/ptree/*.js) \
+        $(wildcard plugins/sidebar-plugin/dependencies/ptree/*.gif) \
+	$(wildcard plugins/sidebar-plugin/dependencies/xtree/*.css) \
+        $(wildcard plugins/sidebar-plugin/dependencies/xtree/*.js) \
+	$(wildcard plugins/sidebar-plugin/dependencies/xtree/images/*.png) \
+	$(wildcard plugins/sidebar-plugin/dependencies/xtree/images/clean/*.gif) \
+	$(wildcard plugins/sidebar-plugin/dependencies/xtree/images/msdn/*.gif) \
+	$(wildcard plugins/sidebar-plugin/dependencies/xtree/images/msdn2/*.gif) \
+	$(wildcard plugins/sidebar-plugin/dependencies/xtree/images/xp/*.png) \
+        $(wildcard plugins/search-plugin/images/*.gif) \
+        $(wildcard plugins/search-plugin/fullsearch/*.css) \
+        $(wildcard plugins/search-plugin/fullsearch/*.js) \
+        $(wildcard plugins/search-plugin/fullsearch/*.html) \
+	$(wildcard plugins/search-plugin/fastsearch/*.css) \
+        $(wildcard plugins/search-plugin/fastsearch/*.js)	
 
 all: all-am
 
@@ -240,14 +303,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  webdoc/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  webdoc/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu webdoc/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu webdoc/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -265,23 +328,28 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-webDATA: $(web_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(webdir)" || $(MKDIR_P) "$(DESTDIR)$(webdir)"
-	@list='$(web_DATA)'; for p in $$list; do \
+	@list='$(web_DATA)'; test -n "$(webdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(webdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(webdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(webDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(webdir)/$$f'"; \
-	  $(webDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(webdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(webdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(webdir)" || exit $$?; \
 	done
 
 uninstall-webDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(web_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(webdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(webdir)/$$f"; \
-	done
+	@list='$(web_DATA)'; test -n "$(webdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(webdir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
@@ -305,13 +373,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -335,16 +407,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -364,6 +442,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -371,21 +451,30 @@ info-am:
 install-data-am: install-webDATA
 	@$(NORMAL_INSTALL)
 	$(MAKE) $(AM_MAKEFLAGS) install-data-hook
-
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -421,49 +510,104 @@ uninstall-am: uninstall-webDATA
 
 
 .PHONY :  \
-	cleandb \
-	db \
 	dist-hook \
 	web \
 	up
-	$(wildcard xtree/images/xp/*.png)
 
 dist-hook:
-	mkdir -p $(distdir)/images
-	mkdir -p $(distdir)/xtree/images/msdn
-	mkdir -p $(distdir)/xtree/images/msdn2
-	mkdir -p $(distdir)/xtree/images/xp
-	mkdir -p $(distdir)/ptree
+	mkdir -p $(distdir)/App_Code/Plugins
+	mkdir -p $(distdir)/views/images
+	mkdir -p $(distdir)/skins/mono-external/images
+	mkdir -p $(distdir)/plugins/iframe-plugin
+	mkdir -p $(distdir)/plugins/tooltip-plugin
+	mkdir -p $(distdir)/plugins/sidebar-plugin/dependencies/ptree
+	mkdir -p $(distdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn
+	mkdir -p $(distdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn2
+	mkdir -p $(distdir)/plugins/sidebar-plugin/dependencies/xtree/images/xp
+	mkdir -p $(distdir)/plugins/sidebar-plugin/dependencies/xtree/images/clean
+	mkdir -p $(distdir)/plugins/search-plugin/images
+	mkdir -p $(distdir)/plugins/search-plugin/fastsearch
+	mkdir -p $(distdir)/plugins/search-plugin/fullsearch
 	for f in $(web_DATA) ; do cp $(srcdir)/$$f $(distdir) ; done
-	cp $(srcdir)/images/*gif              $(distdir)/images
-	cp $(srcdir)/images/*png              $(distdir)/images
-	cp $(srcdir)/xtree/images/msdn/*gif   $(distdir)/xtree/images/msdn
-	cp $(srcdir)/xtree/images/msdn2/*gif  $(distdir)/xtree/images/msdn2
-	cp $(srcdir)/xtree/images/xp/*png     $(distdir)/xtree/images/xp
-	cp $(srcdir)/xtree/images/*png        $(distdir)/xtree/images
-	cp $(srcdir)/xtree/*js                $(distdir)/xtree
-	cp $(srcdir)/xtree/*css               $(distdir)/xtree
-	cp $(srcdir)/ptree/*css               $(distdir)/ptree
-	cp $(srcdir)/ptree/*js                $(distdir)/ptree
+	cp $(srcdir)/App_Code/Plugins/*cs          				  $(distdir)/App_Code/Plugins
+	cp $(srcdir)/views/*css                                                   $(distdir)/views
+	cp $(srcdir)/views/*js                                                    $(distdir)/views
+	cp $(srcdir)/views/images/*png                                            $(distdir)/views/images	
+	cp $(srcdir)/views/images/*ico                                            $(distdir)/views/images
+	cp $(srcdir)/skins/mono-external/header*                                  $(distdir)/skins/mono-external
+	cp $(srcdir)/skins/mono-external/footer*                                  $(distdir)/skins/mono-external
+	cp $(srcdir)/skins/mono-external/*css                                     $(distdir)/skins/mono-external
+	cp $(srcdir)/skins/mono-external/images/*png                              $(distdir)/skins/mono-external/images
+	cp $(srcdir)/skins/mono-external/images/*gif                              $(distdir)/skins/mono-external/images	
+	cp $(srcdir)/plugins/iframe-plugin/*js                                    $(distdir)/plugins/iframe-plugin
+	cp $(srcdir)/plugins/tooltip-plugin/*js                                    $(distdir)/plugins/tooltip-plugin
+	cp $(srcdir)/plugins/sidebar-plugin/*css                                  $(distdir)/plugins/sidebar-plugin
+	cp $(srcdir)/plugins/sidebar-plugin/*js                                   $(distdir)/plugins/sidebar-plugin	
+	cp $(srcdir)/plugins/sidebar-plugin/dependencies/ptree/*css               $(distdir)/plugins/sidebar-plugin/dependencies/ptree	
+	cp $(srcdir)/plugins/sidebar-plugin/dependencies/ptree/*js                $(distdir)/plugins/sidebar-plugin/dependencies/ptree
+	cp $(srcdir)/plugins/sidebar-plugin/dependencies/ptree/*gif               $(distdir)/plugins/sidebar-plugin/dependencies/ptree	
+	cp $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/*css               $(distdir)/plugins/sidebar-plugin/dependencies/xtree	
+	cp $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/*js   	          $(distdir)/plugins/sidebar-plugin/dependencies/xtree 
+	cp $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/images/*png        $(distdir)/plugins/sidebar-plugin/dependencies/xtree/images
+	cp $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/images/clean/*gif  $(distdir)/plugins/sidebar-plugin/dependencies/xtree/images/clean
+	cp $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn/*gif   $(distdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn
+	cp $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/*gif  $(distdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn2
+	cp $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/images/xp/*png     $(distdir)/plugins/sidebar-plugin/dependencies/xtree/images/xp
+	cp $(srcdir)/plugins/search-plugin/images/*gif                            $(distdir)/plugins/search-plugin/images
+	cp $(srcdir)/plugins/search-plugin/fullsearch/*css                        $(distdir)/plugins/search-plugin/fullsearch
+	cp $(srcdir)/plugins/search-plugin/fullsearch/*js                         $(distdir)/plugins/search-plugin/fullsearch
+	cp $(srcdir)/plugins/search-plugin/fullsearch/*html                       $(distdir)/plugins/search-plugin/fullsearch
+	cp $(srcdir)/plugins/search-plugin/fastsearch/*css                        $(distdir)/plugins/search-plugin/fastsearch
+	cp $(srcdir)/plugins/search-plugin/fastsearch/*js                         $(distdir)/plugins/search-plugin/fastsearch
 
 install-data-hook:
-	-$(mkinstalldirs) $(DESTDIR)$(webdir)/images
-	-$(mkinstalldirs) $(DESTDIR)$(webdir)/ptree
-	-$(mkinstalldirs) $(DESTDIR)$(webdir)/xtree
-	-$(mkinstalldirs) $(DESTDIR)$(webdir)/xtree/images
-	-$(mkinstalldirs) $(DESTDIR)$(webdir)/xtree/images/msdn
-	-$(mkinstalldirs) $(DESTDIR)$(webdir)/xtree/images/msdn2
-	-$(mkinstalldirs) $(DESTDIR)$(webdir)/xtree/images/xp
-	$(INSTALL_DATA) $(srcdir)/images/*gif             $(DESTDIR)$(webdir)/images
-	$(INSTALL_DATA) $(srcdir)/images/*png             $(DESTDIR)$(webdir)/images
-	$(INSTALL_DATA) $(srcdir)/xtree/images/msdn/*gif  $(DESTDIR)$(webdir)/xtree/images/msdn
-	$(INSTALL_DATA) $(srcdir)/xtree/images/msdn2/*gif $(DESTDIR)$(webdir)/xtree/images/msdn2
-	$(INSTALL_DATA) $(srcdir)/xtree/images/xp/*png    $(DESTDIR)$(webdir)/xtree/images/xp
-	$(INSTALL_DATA) $(srcdir)/xtree/images/*png       $(DESTDIR)$(webdir)/xtree/images/xp
-	$(INSTALL_DATA) $(srcdir)/xtree/*js               $(DESTDIR)$(webdir)/xtree
-	$(INSTALL_DATA) $(srcdir)/xtree/*css              $(DESTDIR)$(webdir)/xtree
-	$(INSTALL_DATA) $(srcdir)/ptree/*css              $(DESTDIR)$(webdir)/ptree
-	$(INSTALL_DATA) $(srcdir)/ptree/*js               $(DESTDIR)$(webdir)/ptree
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/App_Code/Plugins
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/views/images
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/skins/mono-external/images
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/plugins/iframe-plugin
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/plugins/tooltip-plugin
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/ptree
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn2
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree/images/xp
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree/images/clean
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/plugins/search-plugin/images
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/plugins/search-plugin/fastsearch
+	-$(mkinstalldirs) $(DESTDIR)$(webdir)/plugins/search-plugin/fullsearch
+	 $(INSTALL_DATA) $(srcdir)/App_Code/Plugins/*cs                                         $(DESTDIR)$(webdir)/App_Code/Plugins
+	 $(INSTALL_DATA) $(srcdir)/views/*css                                                   $(DESTDIR)$(webdir)/views
+	 $(INSTALL_DATA) $(srcdir)/views/*js                                                    $(DESTDIR)$(webdir)/views
+	 $(INSTALL_DATA) $(srcdir)/views/*html                                                  $(DESTDIR)$(webdir)/views
+	 $(INSTALL_DATA) $(srcdir)/views/images/*png                                            $(DESTDIR)$(webdir)/views/images
+	 $(INSTALL_DATA) $(srcdir)/views/images/*gif                                            $(DESTDIR)$(webdir)/views/images
+	 $(INSTALL_DATA) $(srcdir)/skins/mono-external/header*                                  $(DESTDIR)$(webdir)/skins/mono-external
+	 $(INSTALL_DATA) $(srcdir)/skins/mono-external/footer*                                  $(DESTDIR)$(webdir)/skins/mono-external
+	 $(INSTALL_DATA) $(srcdir)/skins/mono-external/*css                                     $(DESTDIR)$(webdir)/skins/mono-external
+	 $(INSTALL_DATA) $(srcdir)/skins/mono-external/*js                                      $(DESTDIR)$(webdir)/skins/mono-external
+	 $(INSTALL_DATA) $(srcdir)/skins/mono-external/images/*png                              $(DESTDIR)$(webdir)/skins/mono-external/images
+	 $(INSTALL_DATA) $(srcdir)/skins/mono-external/images/*gif                              $(DESTDIR)$(webdir)/skins/mono-external/images
+	 $(INSTALL_DATA) $(srcdir)/plugins/iframe-plugins/*css                                  $(DESTDIR)$(webdir)/plugins/iframe-plugin
+	 $(INSTALL_DATA) $(srcdir)/plugins/iframe-plugin/*js                                    $(DESTDIR)$(webdir)/plugins/iframe-plugin
+	 $(INSTALL_DATA) $(srcdir)/plugins/iframe-plugin/*html                                  $(DESTDIR)$(webdir)/plugins/iframe-plugin
+	 $(INSTALL_DATA) $(srcdir)/plugins/tooltip-plugin/*js                                    $(DESTDIR)$(webdir)/plugins/tooltip-plugin
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/*css                                  $(DESTDIR)$(webdir)/plugins/sidebar-plugin
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/*js                                   $(DESTDIR)$(webdir)/plugins/sidebar-plugin
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/dependencies/ptree/*css               $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/ptree
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/dependencies/ptree/*js                $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/ptree
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/dependencies/ptree/*gif               $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/ptree
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/*css               $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/*js                $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/images/*png        $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree/images
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/images/clean/*gif  $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree/images/clean
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn/*gif   $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/*gif  $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree/images/msdn2
+	 $(INSTALL_DATA) $(srcdir)/plugins/sidebar-plugin/dependencies/xtree/images/xp/*png     $(DESTDIR)$(webdir)/plugins/sidebar-plugin/dependencies/xtree/images/xp
+	 $(INSTALL_DATA) $(srcdir)/plugins/search-plugin/images/*gif                            $(DESTDIR)$(webdir)/plugins/search-plugin/images
+	 $(INSTALL_DATA) $(srcdir)/plugins/search-plugin/fullsearch/*css                        $(DESTDIR)$(webdir)/plugins/search-plugin/fullsearch
+	 $(INSTALL_DATA) $(srcdir)/plugins/search-plugin/fullsearch/*js                         $(DESTDIR)$(webdir)/plugins/search-plugin/fullsearch
+	 $(INSTALL_DATA) $(srcdir)/plugins/search-plugin/fullsearch/*html                       $(DESTDIR)$(webdir)/plugins/search-plugin/fullsearch
+	 $(INSTALL_DATA) $(srcdir)/plugins/search-plugin/fastsearch/*css                        $(DESTDIR)$(webdir)/plugins/search-plugin/fastsearch
+	 $(INSTALL_DATA) $(srcdir)/plugins/search-plugin/fastsearch/*js                         $(DESTDIR)$(webdir)/plugins/search-plugin/fastsearch
 
 Monodoc.Contributions.dll: server.cs Makefile.am
 	mcs -debug+ $< -target:library -out:$@ -r:System.Web -r:System.Web.Services -pkg:monodoc -r:System.Data -r:ByteFX.Data
@@ -471,14 +615,9 @@ Monodoc.Contributions.dll: server.cs Makefile.am
 web: Monodoc.Contributions.dll
 	xsp
 
-db:
-	mysql -u admin -p 
-
-cleandb:
-	mysql -u admin -p < tables.sql
-
 up:
-	scp tables.sql server.cs server.asmx monodoc.dll root at www.go-mono.com:
+	scp monodoc.dll root at www.go-mono.com:
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/webdoc/README.md b/webdoc/README.md
new file mode 100644
index 0000000..c518213
--- /dev/null
+++ b/webdoc/README.md
@@ -0,0 +1,41 @@
+Webdoc
+======
+
+Webdoc is the web container for monodoc. It normally includes:
+
+ - a header
+ - a footer
+ - a navigation tree
+ - the monodoc iframe
+
+Structure
+---------
+
+Each webdoc instance consists of a skin (theme, chrome) and several plugins. 
+
+Plugins are located in the plugins directory. The plugins currently available are:
+
+ - iframe: helps size the iframe correctly in your webdoc instance. Recommended unless you want to 
+use your own code for that
+ - sidebar: left navigation tree. Again, recommended unless you feel like writign and wiring up your own (good luck!)
+ - fast search: searches while you type
+ - full search: returns a page of search results (`search.html`). Can be styled however you like.
+
+Skins are located in the skins directory. Each skin consists of:
+
+ - `header.html` (required)
+ - `footer.html` (required)
+ - additional css and js (usually placed in the `common-extension.css`/`common-extension.js` file)
+ - images folder (optional)
+
+How to Use
+----------
+
+Making a new instance of webdoc is easy. First, you need to edit web.config to point 
+to the location of your monodoc source root.
+
+`MonodocRootDir` -> monodoc source root
+
+Next, throw your skin into the skins directory (or use one that's already there).
+
+Edit the `plugins.def` file, uncommenting the plugins you want to use, and setting the location of your skin.
diff --git a/webdoc/api.master b/webdoc/api.master
new file mode 100644
index 0000000..be2750c
--- /dev/null
+++ b/webdoc/api.master
@@ -0,0 +1,39 @@
+<%@ Master Language="C#" %>
+<%@ Import Namespace="System.Web" %>
+<%@ Import Namespace="System.Collections.Specialized" %>
+<%@ Import Namespace="System.Web.Configuration" %>
+<%@ Import Namespace="Mono.Website" %>
+<%@ Assembly name="monodoc" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 
+    1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" >
+
+<head runat="server" >
+    <title><% = WebConfigurationManager.AppSettings["Title"] %></title>
+    <link href="views/images/favicon.ico" type="image/png" rel="icon">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" >
+    <link type="text/css" rel="stylesheet" href="/views/reset.css"/>
+    <link type="text/css" rel="stylesheet" href="/views/common.css"/>
+    <% = Plugin.GetPluginContent (Plugin.PluginContent.Css) %>    
+    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
+    <script type="text/javascript" src="http://new.xamarin.com/js/jquery.easing.1.3.js"></script>
+    <script type="text/javascript" src="/views/common.js"></script>
+</head>
+
+<body>
+<% = Plugin.GetPluginContent (Plugin.PluginContent.Header) %>
+<form id="application_content" runat="server">
+	<asp:contentplaceholder id="Main" runat="server" />
+	<asp:contentplaceholder id="FastSearch" runat="server" />
+	
+	<% = Plugin.GetPluginContent (Plugin.PluginContent.Footer) %>
+	<% = Plugin.GetPluginContent (Plugin.PluginContent.Javascript) %>
+
+	<!--uncomment if you want to use the sidebar plugin-->
+	<asp:contentplaceholder id="CustomTreeGenerator" runat="server" />
+</form>
+</body>
+
+</html>
+
diff --git a/webdoc/common.css b/webdoc/common.css
deleted file mode 100644
index 030d043..0000000
--- a/webdoc/common.css
+++ /dev/null
@@ -1,175 +0,0 @@
-body {
-	background-color: #ffffff;
-	margin: 0px;
-	padding: 0px;
-}
-
-.HeaderTable {
-	border: 2px solid #99aadd;
-}
-
-body, td, th {
-	font-family: Verdana, sans-serif; font-size: 12px;
-	color: black;
-}
-
-.SignatureTable, .MemberSignatureTable {
-	border: 1px solid #DDDDDD;
-}
-
-.Footer {
-	border-top: 2px solid #E5E5E5;
-	padding-left: 1em;
-}
-
-.Footer hr {
-	display: none;	
-}
-
-h1, h2, h3, h4 {
-	font-family: Verdana,sans-serif;
-	font-weight: bold;
-}
-
-h1 {
-}
-
-h3 {
-}
-
-h4 {
-}
-
-.MasterNamespaceLink a {
-	font-weight: bold;
-	text-decoration: none;
-}
-.MasterNamespaceDescription {
-	margin-left: 2em;
-}
-
-img {
-	border: 0;
-	vertical-align: top;
-}
-
-.copyright {
-	border:1px solid black;
-	padding-left:5px;
-	padding-right:5px;
-	padding-top:5px;
-	padding-bottom:5px;
-	background-color:#BEBAA8;
-	font-size:9px;
-	margin-top: 10pt;
-	margin-left: -15pt;
-	margin-right: -15pt;
-}
-
-.important {
-	padding-left:2px;
-	padding-right:2px;
-	padding-top:2px;
-	padding-bottom:2px;
-	background-color:#000000;
-	color:#ffffff;
-}
-
-.menu {
-	font-family:Arial, Verdana;
-	font-size:12px;
-	font-weight:bold;
-}
-
-.navbar{
-	color:black;
-	font-family:Arial, Verdana;
-	font-size:10px;
-	border-bottom:1px solid #000000;
-	border-left:1px solid black;
-	border-right:1px solid black;
-	background-color:#efefef;
-	padding-left:2px;
-	padding-right:2px;
-	padding-top:2px;
-	padding-bottom:2px;
-	margin-left: -15pt;
-	margin-right: -15pt;
-}
-	
-.topframe {
-	background-image:url(images/backbig.png);
-	border:1px solid #000000;
-	background-color:#BEBAA8;
-	margin-left: -15pt;
-	margin-right: -15pt;
-}
-
-.chapter {
-	font-size:14px;
-	font-weight:bold;
-	color:#444444;
-	padding-left:0px;
-	padding-right:0px;
-	padding-top:0px;
-	padding-bottom:0px;
-}
-
-.table {
-	padding-left:2px;
-	padding-right:2px;
-	padding-top:0px;
-	padding-bottom:0px;
-	background-color:#efefef;
-	border:1px solid #c0c0c0;
-}
-
-.elementOn {
-	color:#a40000;
-}
-
-.element {
-	color:#0000a4;
-}
-
-.code {
-	font-size: small;
-	font-family: "Courier New", Courier;
-	line-height:110%;
-}
-
-.box {
-	padding:15px;
-	font-size: small;
-	background:whitesmoke;
-	border: solid 1px silver;
-}
-
-.console {
-	border-style: solid; 
-	background: whitesmoke; 
-	border-width: 1px; 
-	padding: 2pt; 
-	margin:15px;
-}
-
-.headerlink {
-	vertical-align:bottom;
-}
-
-a {
-	color: blue;
-}
-a:visited {
-	color: blue; 
-}
-
-td a {
-	text-decoration: none;
-}
-
-.HeaderTable a {
-	color: black;
-	text-decoration: underline;
-}
-
diff --git a/webdoc/edit.aspx b/webdoc/edit.aspx
deleted file mode 100644
index f2ad4de..0000000
--- a/webdoc/edit.aspx
+++ /dev/null
@@ -1,62 +0,0 @@
-<%@ Assembly name="monodoc" %>
-<%@ Import Namespace="Monodoc" %>
-<%@ Import Namespace="System.Xml" %>
-<%@ Import Namespace="System.IO" %>
-<html>
-<head>
-  <script language="C#" runat=server>
-	static RootTree help_tree = RootTree.LoadTree ();
-
-        void Page_Load (object sender, EventArgs ea)
-        {
-		HttpWorkerRequest r = (HttpWorkerRequest) ((IServiceProvider)Context).GetService (typeof (HttpWorkerRequest));
-		//
-		// We need the untouched QueryString, as internally the editor uses the `@' symbol as a separator.
-		//
-		string q = Request ["link"];
-		Console.WriteLine ("QueryString: " + q);
-		try {
-			XmlNode edit_node = EditingUtils.GetNodeFromUrl ("edit:" + q, help_tree);
-			Monodoc2Wiki m2w = new Monodoc2Wiki ();
-			Console.WriteLine ("XML TO TEXT: " + edit_node.InnerText);
-			EditBuffer.Text = m2w.ProcessNode ((XmlElement) edit_node);
-		} catch (Exception e){
-			EditBuffer.Text = Request.QueryString.ToString () + e.ToString ();
-		}
-        }
-
-	void Save (object o, EventArgs a)
-	{
-		
-	}
-
-	void Preview (object o, EventArgs a)
-	{
-		WikiStyleDocConverter p = new WikiStyleDocConverter (EditBuffer.Text);
-		XmlNode result = p.ParseEntireDoc ();
-	
-		StringWriter sw = new StringWriter ();
-		sw.Write ("YOOHO:" + result.InnerText);
-		XmlTextWriter xw = new XmlTextWriter (sw);
-		xw.Formatting = Formatting.Indented;
-		result.WriteTo (xw);
-		xw.Close ();
-
-		TextPreview.Text = "Preview<BR>" + sw.ToString ();
-	}
-  </script>
-</head>
-
-<body>
-  <form runat=server>
-    <asp:Label id="TextPreview" runat=server/>
-    <asp:TextBox id="EditBuffer" Text="multiline" TextMode="MultiLine" runat="server" rows=15 cols=80 />
-    <p>
-    <asp:Button Text="Save Page" OnClick="Save" runat=server/>
-    <asp:Button Text="Show Preview" OnClick="Preview" runat=server/>
-    <asp:LinkButton Text="Markup Help" runat=server/>
-    <asp:LinkButton Text="Cancel" runat=server/>
-  </form>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/webdoc/header.aspx b/webdoc/header.aspx
deleted file mode 100644
index 0634f24..0000000
--- a/webdoc/header.aspx
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
-  <title>MonoDoc Header</title>
-  <meta name="description" content="Mono Documentation header">
-  <link rel="stylesheet" type="text/css" href="common.css" media="all"
-  title='Default Style'/>
-  <style>
-img.toolbarsep {
-        border: 0px;
-        margin-bottom: 1px;
-        margin-top: 1px;
-        padding-top: 3px;
-        padding-bottom: 3px;
-        vertical-align: middle;
-}
-
-img.toolbar {
-        border: 0px;
-        margin: 1px;
-        padding: 3px;
-        vertical-align: middle;
-}
-
-img.toolbar:hover {
-        border-left: 1px solid white;
-        border-right: 1px solid #B1A598;
-        border-top: 1px solid white;
-        border-bottom: 1px solid #B1A598;
-        margin: 0px;
-}
-
-img.toolbar:active {
-        border-right: 1px solid white;
-        border-left: 1px solid #B1A598;
-        border-bottom: 1px solid white;
-        border-top: 1px solid #B1A598;
-}
-
-
-#login {
-        position: fixed;
-        top: 0px;
-        right: 0px;
-        float: right;
-        padding: 5px;
-}
-
-#rightSide {
-        position: fixed;
-        bottom: 0px;
-        right: 0px;
-        float: right;
-        padding: 5px;
-}
-#header {
-  background: #679EF1 url(mdocimages/headerbg.png) no-repeat 100% 50%;
-  background-color: #679EF1;
-  background-position: 100% 50%;
-  background-repeat: no-repeat;
-  border-bottom: 1px dotted #3363BD;
-  color: black;
-  height: 40px;
-  margin-bottom: 0px;
-  padding: 0px 0px 0px 15px;
-  position: relative;
-}
-#header h1 {
-   color: white;
-   font-family: arial, helvetica, verdana, sans-serif;
-   font-size: 22px;
-   font-weight: bold;
-   line-height: 1.8em;
-}
-
-  </style>
-
-  <script language="C#" runat=server>
-        void Page_Load (object sender, EventArgs e)
-        {
-		if (User.Identity.IsAuthenticated){
-			login.NavigateUrl = "logout.aspx";
-			login.Text = "Logged in as " + User.Identity.Name;
-		} else {
-			login.NavigateUrl = "javascript:parent.content.login (parent.content.window.location)";
-			//login.Text = "Sign in / create account"; 
-		}
-        }
-  </script>
-
-</head>
-
-<body
-style="color: rgb(255, 255, 255); background-color: #c0dda2;"
-link="#ffffff" alink="#ffffff" vlink="#ffffff">
-<div id="header">
-   <h1>Mono Documentation</h1>
-</div>
-<div id="dlogin">
-   <asp:HyperLink id="login" runat="server" target="_top"/>
-</div>
-
-<div id="rightSide">
-   <a href="javascript:parent.content.print();">
-     <img class="toolbar" src="images/print.png" alt="Print"
-     title="Print this document"/>
-   </a>
-   <a target="_top" id="pageLink" href="/">
-     <img class="toolbar" src="images/link.png" alt="Link to this
-     document" title="Link to this document"/>
-   </a>
-</div>
-
-
-</body>
-</html>
diff --git a/webdoc/header.html b/webdoc/header.html
deleted file mode 100644
index 73f8d72..0000000
--- a/webdoc/header.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
-  <title>MonoDoc Header</title>
-  <meta name="description" content="Mono Documentation header">
-  <link rel="stylesheet" type="text/css" href="common.css" media="all"
-  title='Default Style'/>
-  <style>
-img.toolbarsep {
-        border: 0px;
-        margin-bottom: 1px;
-        margin-top: 1px;
-        padding-top: 3px;
-        padding-bottom: 3px;
-        vertical-align: middle;
-}
-
-img.toolbar {
-        border: 0px;
-        margin: 1px;
-        padding: 3px;
-        vertical-align: middle;
-}
-
-img.toolbar:hover {
-        border-left: 1px solid white;
-        border-right: 1px solid #B1A598;
-        border-top: 1px solid white;
-        border-bottom: 1px solid #B1A598;
-        margin: 0px;
-}
-
-img.toolbar:active {
-        border-right: 1px solid white;
-        border-left: 1px solid #B1A598;
-        border-bottom: 1px solid white;
-        border-top: 1px solid #B1A598;
-}
-
-
-#rightSide {
-        position: fixed;
-        bottom: 0px;
-        right: 0px;
-        float: right;
-        padding: 5px;
-}
-  </style>
-</head>
-
-<body
-style="color: rgb(255, 255, 255); background-color: #c0dda2;"
-link="#ffffff" alink="#ffffff" vlink="#ffffff">
-
-<a href="index.aspx" class="headerlink" target="_top"><img
- src="images/mono-logo.png" alt="Mono"
- style="border: 0px solid ; height:75;" /></a>
-
-<div id="rightSide">
-   <a href="javascript:parent.content.print();"><img class="toolbar" src="images/print.png" alt="Print" title="Print this document"/></a>
-   <a target="_top" id="pageLink" href="/"><img class="toolbar" src="images/link.png" alt="Link to this document" title="Link to this document"/></a>
-</div>
-</body>
-</html>
diff --git a/webdoc/images/link.png b/webdoc/images/link.png
deleted file mode 100644
index 2e83ffe..0000000
Binary files a/webdoc/images/link.png and /dev/null differ
diff --git a/webdoc/images/print.png b/webdoc/images/print.png
deleted file mode 100644
index 077e5bc..0000000
Binary files a/webdoc/images/print.png and /dev/null differ
diff --git a/webdoc/index.aspx b/webdoc/index.aspx
index 77515ce..772c6bb 100644
--- a/webdoc/index.aspx
+++ b/webdoc/index.aspx
@@ -1,40 +1,56 @@
-<%@ Page Language="C#" ClassName="Mono.Website.Index" %>
-<%@ Import Namespace="System.Web" %>
-<%@ Import Namespace="System.Collections.Specialized" %>
-<html>
-  <head>
-    <title><%=GetTitle ()%></title>
-  </head>
-        <script language="c#" runat="server">
-		public string GetTitle ()
-		{
-			return Global.help_tree.GetTitle (Request.QueryString ["link"]);
-		}
+<%@ Page Language="C#" ClassName="Mono.Website.Index" MasterPageFile="api.master" %>
+<%@ Assembly name="monodoc" %>
 
-                // Get the path to be shown in the content fram
-                string getContentFrame()
-                {
-                        // Docs get shown from monodoc.ashx
-                        string monodocUrl="monodoc.ashx";
-                        string defaultParams="?link=root:";
-                        NameValueCollection qStringParams=Request.QueryString;
+<asp:Content ID="Main" ContentPlaceHolderID="Main" Runat="Server">
+<script language="c#" runat="server">
+public string GetTitle ()
+{
+return Global.help_tree.GetTitle (Request.QueryString ["link"]);
+}
+// Get the path to be shown in the content frame
+string getContentFrame()
+{
+// Docs get shown from monodoc.ashx
+string monodocUrl="monodoc.ashx";
+string defaultParams="?link=root:";
+NameValueCollection qStringParams=Request.QueryString;
 
-                        // If no querystring params, show root link
-                        if(!qStringParams.HasKeys())
-                                return(monodocUrl+defaultParams);
-                        // else, build query for the content frame
-                        string nQueryString=monodocUrl+"?";
-                        foreach(string key in qStringParams)
-                                nQueryString+=(HttpUtility.UrlEncode(key)+"="+HttpUtility.UrlEncode(qStringParams[key]));
-                        return nQueryString;
-                }
-        </script>
+// If no querystring params, show root link
+if(!qStringParams.HasKeys())
+return(monodocUrl+defaultParams);
+// else, build query for the content frame
+string nQueryString=monodocUrl+"?";
+	foreach(string key in qStringParams)
+	nQueryString+=(HttpUtility.UrlEncode(key)+"="+HttpUtility.UrlEncode(qStringParams[key]));
+	return nQueryString;
+}
+</script>
+
+<div id="content_frame_wrapper"><iframe id="content_frame" src="<% =getContentFrame() %>"></iframe></div>        
+</asp:Content>
+
+<asp:Content ID="fsearch" ContentPlaceHolderID="FastSearch" Runat="Server">
+<div id="fsearch_companion"></div>
+<div id="fsearch_window"></div>
+</asp:Content>
+    
+<asp:Content ID="CustomTree" ContentPlaceHolderID="CustomTreeGenerator" Runat="Server">
+<script type="text/javascript">
+		//create a container for the sidebar to sit in
+        	var container = $("#sidebar_container");
+        	container.append("<div id=\"side\"><div id=\"contents\" class=\"activeTab\"><div id=\"contentList\"></div></div></div>");
+
+        	//populate the sidebar with our data
+        	var tree = new PTree ();
+        	tree.strSrcBase = 'monodoc.ashx?tree=';
+        	tree.strActionBase = '?link=';
+        	tree.strImagesBase = 'plugins/sidebar-plugin/dependencies/xtree/images/msdn2/';
+        	tree.strImageExt = '.gif';
+        	tree.onClickCallback = function (url) { change_page (url); };
+        	var content = document.getElementById ('contentList');
+        	var root = tree.CreateItem (null, '', 'root:', '', true);
+        	content.appendChild (root);
+		<% = Global.CreateTreeBootFragment () %>
+</script>
+</asp:Content>
 
-<frameset rows="40,*" frameborder="0" border="1">
- <frame src="header.aspx" name="Header" id='header' scrolling="no" noresize="true" />
-  <frameset cols="20%,80%" frameborder="1" border="1">
-    <frame src="monodoc.ashx?tree=boot" name="Tree" />
-    <frame src="<% =getContentFrame() %>" name="content" />
-  </frameset>
-</frameset>
-</html>
diff --git a/webdoc/index.html b/webdoc/index.html
deleted file mode 100644
index ea7d7ef..0000000
--- a/webdoc/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-  <head>
-    <title>Mono Documentation</title>
-  </head>
-
-  <frameset cols="20%,80%">
-    <frame src="monodoc.ashx?tree=boot">
-    <frame src="monodoc.ashx?link=root:" name="content">
-  </frameset>
-</html>
\ No newline at end of file
diff --git a/webdoc/login.aspx b/webdoc/login.aspx
deleted file mode 100644
index c676221..0000000
--- a/webdoc/login.aspx
+++ /dev/null
@@ -1,68 +0,0 @@
-<%@ Import Namespace="System.Web.Security" %>
-<html>
-<script language="C#" runat=server>
-
-	void Allow ()
-	{
-		FormsAuthentication.RedirectFromLoginPage (UserEmail.Value, false);
-		// PersistCookie.Checked);
-	}
-
-        void Login_Click (object sender, EventArgs e)
-        {
-		FormsAuthenticationTicket trust = null;
-		HttpCookie c;
-
-		switch (UserEmail.Value){
-		case "miguel":
-		        trust = new FormsAuthenticationTicket ("high", false, 1);
-			c =  new HttpCookie ("level", FormsAuthentication.Encrypt (trust));
-			Response.AppendCookie (c);
-		        Allow ();
-			break;
-		case "guest":
-		        trust = new FormsAuthenticationTicket ("low", false, 1);
-			c =  new HttpCookie ("level", FormsAuthentication.Encrypt (trust));
-			Response.AppendCookie (c);
-			Allow ();
-			break;
-		default:
-                        Msg.Text = "Invalid Credentials: Please try again";
-			break;
-		}
-        }
-
-	void Page_Load ()
-	{
-		Msg.Text = ">>> " + Request.QueryString ["ReturnUrl"] + "<<<";
-	}
-</script>
-<body>
-<form runat=server>
-
-        <h3><font face="Verdana">Login Page</font></h3>
-        <table>
-                <tr>
-                <td>Email:</td>
-                <td><input id="UserEmail" type="text" runat=server/></td>
-                <td><ASP:RequiredFieldValidator ControlToValidate="UserEmail"
-                         Display="Static" ErrorMessage="*" runat=server/></td>
-                </tr>
-                <tr>
-                <td>Password:</td>
-                <td><input id="UserPass" type=password runat=server/></td>
-                <td><ASP:RequiredFieldValidator ControlToValidate="UserPass"
-                         Display="Static" ErrorMessage="*" runat=server/></td>
-                </tr>
-                <tr>
-                <td>Persistent Cookie:</td>
-                <td><ASP:CheckBox id=PersistCookie runat="server" /> </td>
-                <td></td>
-                </tr>
-        </table>
-        <asp:button text="Login" OnClick="Login_Click" runat=server/>
-        <p>
-        <asp:Label id="Msg" ForeColor="red" Font-Name="Verdana" Font-Size="10" runat=server />
-</form>
-</body>
-</html>
diff --git a/webdoc/logout.aspx b/webdoc/logout.aspx
deleted file mode 100644
index af3621b..0000000
--- a/webdoc/logout.aspx
+++ /dev/null
@@ -1,12 +0,0 @@
-<%@ Import Namespace="System.Web.Security" %>
-<html>
-<script language="C#" runat=server>
-        void Page_Load (object sender, EventArgs e)
-        {
-		FormsAuthentication.SignOut ();
-		Response.Redirect ("index.aspx");
-        }
-</script>
-<body>
-</body>
-</html>
diff --git a/webdoc/mono_logo_g.gif b/webdoc/mono_logo_g.gif
deleted file mode 100644
index c6fbaf6..0000000
Binary files a/webdoc/mono_logo_g.gif and /dev/null differ
diff --git a/webdoc/monodoc.ashx b/webdoc/monodoc.ashx
index 7a54e88..3cc3346 100644
--- a/webdoc/monodoc.ashx
+++ b/webdoc/monodoc.ashx
@@ -22,6 +22,7 @@ using System.Web;
 using System.Web.UI;
 using System.Xml;
 using System.Xml.Xsl;
+using System.Linq;
 using Monodoc;
 using System.Text.RegularExpressions;
 
@@ -66,28 +67,43 @@ namespace Mono.Website.Handlers
 		}
 
 		void IHttpHandler.ProcessRequest (HttpContext context)
-		{
-			string s;
-
-			s = (string) context.Request.Params["link"];
-			if (s != null){
-				HandleMonodocUrl (context, s);
-				return;
-			}
-
-			s = (string) context.Request.Params["tree"];
-			if (s != null){
-				if (s == "boot")
-					HandleBoot (context);
-				else {
-					HandleTree (context, s);
-				}
-				return;
-			}
-			context.Response.Write ("<html><body>Unknown request</body></html>");
-			context.Response.ContentType = "text/html";
-		}
-		
+                {
+                        string s;
+			string callback;
+
+                        s = (string) context.Request.Params["link"];
+                        if (s != null){
+                                HandleMonodocUrl (context, s);
+                                return;
+                        }
+
+                        s = (string) context.Request.Params["tree"];
+                        Console.WriteLine ("tree request:  '{0}'", s);
+                        if (s != null){
+                                HandleTree (context, s);
+                                return;
+                        }
+
+                        s = (string) context.Request.Params["fsearch"];
+						callback = (string) context.Request.Params["callback"];
+						Console.WriteLine ("Fast search requested for query {0}", s);
+                        if (s != null) {
+                                HandleFastSearchRequest (context, s, callback);
+                                return;
+                        }
+
+                        s = (string) context.Request.Params["search"];
+                        	callback = (string) context.Request.Params["callback"];
+				Console.WriteLine ("Full search requested for query {0}", s);
+                        if (s != null) {
+                                HandleFullSearchRequest (context, s, callback);
+                                return;
+                        }
+
+                        context.Response.Write ("<html><body>Unknown request</body></html>");
+                        context.Response.ContentType = "text/html";
+                }
+  
 		void HandleTree (HttpContext context, string tree)
 		{
 		    context.Response.ContentType = "text/xml";
@@ -102,7 +118,7 @@ namespace Mono.Website.Handlers
 				try {
 				current_node = (Node)current_node.Nodes [int.Parse (nodes [i])];
 				} catch (Exception e){
-					Console.WriteLine ("Failure with: {0} {i}", tree, i);
+					Console.WriteLine ("Failure with: {0} {1}", tree, i);
 				}
 			}
 
@@ -194,7 +210,10 @@ namespace Mono.Website.Handlers
 				if (context.Response.StatusCode == 304)
 					return;
 
-				Copy (s, context.Response.OutputStream);
+				s.CopyTo (context.Response.OutputStream);
+				return;
+			} else if (link.Equals ("root:", StringComparison.Ordinal) && File.Exists ("home.html")) {
+				context.Response.WriteFile ("home.html");
 				return;
 			}
 
@@ -213,57 +232,134 @@ namespace Mono.Website.Handlers
 			PrintDocs (content, n, context, GetHelpSource (n));
 		}
 
+		void HandleFastSearchRequest (HttpContext context, string request, string callback)
+                {
+                        if (string.IsNullOrWhiteSpace (request) || request.Length < 3) {
+                                // Unprocessable entity
+                                context.Response.StatusCode = 422;
+                                return;
+                        }
+
+
+                        var searchIndex = Global.GetSearchIndex ();
+                        var result = searchIndex.FastSearch (request, 15);
+                        // return Json corresponding to the results
+                        var answer = result == null || result.Count == 0 ? "[]" : "[" + 
+                                Enumerable.Range (0, result.Count)
+                      .Select (i => string.Format ("{{ \"name\" : \"{0}\", \"url\" : \"{1}\", \"fulltitle\" : \"{2}\" }}",
+                                                   result.GetTitle (i), result.GetUrl (i), result.GetFullTitle (i)))
+                      .Aggregate ((e1, e2) => e1 + ", " + e2) + "]";
+
+						if (!string.IsNullOrWhiteSpace (callback))
+							answer = callback + "(" + answer + ")";
+
+                        Console.WriteLine ("answer is {0}", answer);
+
+                        context.Response.ContentType = "application/json";
+                        context.Response.Write (answer);
+                }
+
+                void HandleFullSearchRequest (HttpContext context, string request, string callback)
+                {
+                        if (string.IsNullOrWhiteSpace (request)) {
+                                // Unprocessable entity
+                                context.Response.StatusCode = 422;
+                                return;
+                        }
+                        int start = 0, count = 0;
+                        var searchIndex = Global.GetSearchIndex ();
+                        Result result = null;
+                        if (int.TryParse (context.Request.Params["count"], out count)) {
+                                if (int.TryParse (context.Request.Params["start"], out start))
+                                        result = searchIndex.Search (request, count, start);
+                                else
+                                        result = searchIndex.Search (request, count);
+                        } else {
+                                count = 20;
+                                result = searchIndex.Search (request, count);
+                        }
+                        // return Json corresponding to the results
+                        var answer = result == null || result.Count == 0 ? "[]" : "[" +
+                                Enumerable.Range (0, result.Count)
+                      .Select (i => string.Format ("{{ \"name\" : \"{0}\", \"url\" : \"{1}\", \"fulltitle\" : \"{2}\" }}",
+                                                   result.GetTitle (i), result.GetUrl (i), result.GetFullTitle (i)))
+                      .Aggregate ((e1, e2) => e1 + ", " + e2) + "]";
+
+			if(!string.IsNullOrWhiteSpace (callback)) {
+                        	answer = string.Format ("{0}({{ \"count\": {1}, \"start\": {2}, \"result\": {3} }})", callback, count, start, answer);
+			}
+                        
+			Console.WriteLine ("answer is {0}", answer);
+
+                        context.Response.ContentType = "application/json";
+                        context.Response.Write (answer);
+                }
+		
 		HelpSource GetHelpSource (Node n)
 		{
 			if (n != null)
 				return n.tree.HelpSource;
 			return null;
 		}
-		
-		void HandleTreeLink (HttpContext context, string link)
-		{
-			string [] lnk = link.Split (new char [] {'@'});
-			
-			if (lnk.Length == 1) {
-				HandleMonodocUrl (context, link);
-				return;
-			}
-				
-			int hsId = int.Parse (lnk [0]);
-			
-			Node n;
-			HelpSource hs = Global.help_tree.GetHelpSourceFromId (hsId);
-			string content = hs.GetText (lnk [1], out n);
-			if (content == null) {
-				content = Global.help_tree.RenderUrl (lnk [1], out n);
-				hs = GetHelpSource (n);
-			}
-			PrintDocs (content, n, context, hs);
-		}
-
-		void Copy (Stream input, Stream output)
-		{
-			const int BUFFER_SIZE=8192; // 8k buf
-			byte [] buffer = new byte [BUFFER_SIZE];
-
-			int len;
-			while ( (len = input.Read (buffer, 0, BUFFER_SIZE)) > 0)
-				output.Write (buffer, 0, len);
-
-			output.Flush();
-		}
 
 		string requestPath;
 		void PrintDocs (string content, Node node, HttpContext ctx, HelpSource hs)
 		{
+			string tree_path = string.Empty;
+			Node current = node;
+			while (current != null && current.Parent != null) {
+				int index = current.Parent.Nodes.IndexOf (current);
+				tree_path = '@' + (index + tree_path);
+				current = current.Parent;
+			}
+			tree_path = tree_path.Length > 0 ? tree_path.Substring (1) : tree_path;
+			Console.WriteLine ("Tree path is:" + tree_path);
+
 			string title = (node == null || node.Caption == null) ? "Mono XDocumentation" : node.Caption;
 
 			ctx.Response.Write (@"
 <html>
 <head>
-		<link type='text/css' rel='stylesheet' href='common.css' media='all' title='Default style' />
-<script>
-<!--
+	<link type='text/css' rel='stylesheet' href='views/monodoc.css' media='all' title='Default style' />
+	<meta name='TreePath' value='");
+		ctx.Response.Write (tree_path);
+		ctx.Response.Write (@"' />
+	<style type='text/css'>
+  		body, h1, h2, h3, h4, h5, h6, .named-header {
+    			word-wrap: break-word !important;
+			font-family: 'Myriad Pro', 'myriad pro', Helvetica, Verdana, Arial !important; 
+  		}
+  		p, li, span, table, pre, .Content {
+   			font-family: Helvetica, Verdana, Arial !important;
+  		}
+  		.named-header { height: auto !important; padding: 8px 0 20px 10px !important; font-weight: 600 !important; font-size: 2.3em !important; margin: 0.3em 0 0.6em 0 !important; margin-top: 0 !important; font-size: 2.3em !important; }
+  		h2 { padding-top: 1em !important; margin-top: 0 !important;  font-weight: 600 !important; font-size: 1.8em !important; color: #333 !important; }
+  		p { margin: 0 0 1.3em !important; color: #555753 !important; line-height: 1.8 !important; }
+  		body, table, pre { line-height: 1.8 !important; color: #55753 !important; } 
+ 		.breadcrumb { font-size: 12px !important; }
+	</style>
+	
+	<script src='//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js'></script>
+
+	<script type='text/javascript'>
+
+	function printFrame() {
+		window.print();
+		return false;
+	}
+	
+	//pass the function object to parent
+	parent.printFrame = printFrame;
+
+	function try_change_page (link, e)
+	{
+		if (!e)
+			e = window.event;
+		if (e.ctrlKey || e.shiftKey || e.altKey || e.metaKey || e.modifiers > 0)
+			return;
+		window.parent.change_page (link)
+	}
+
 function login (rurl)
 {
 	document.location.href = 'login.aspx?ReturnUrl=' + rurl;
@@ -276,8 +372,6 @@ function load ()
 	{
 		top.location.href = 'index.aspx'+document.location.search;
 	}
-
-	parent.Header.document.getElementById ('pageLink').href = parent.content.window.location;
 	objs = document.getElementsByTagName('img');
 	for (i = 0; i < objs.length; i++)
 	{
@@ -301,21 +395,32 @@ function makeLink (link)
 		case 'ftp':
 		case 'mailto':
 		case 'javascript':
+		case 'https':
 			return link;
 			
 		default:
 			if(document.all) {
-				return '");
-			ctx.Response.Write (ctx.Request.Path);
-			ctx.Response.Write (@"?link=' + link.replace(/\+/g, '%2B').replace(/file:\/\/\//, '');
+				return 'monodoc.ashx?link=' + link.replace(/\+/g, '%2B').replace(/file:\/\/\//, '');
 			}
-			return '");
-
-			ctx.Response.Write (ctx.Request.Path);
-			ctx.Response.Write (@"?link=' + link.replace(/\+/g, '%2B');
+			return 'monodoc.ashx?link=' + link.replace(/\+/g, '%2B');
 		}
-}
--->");
+}");
+			if (!string.IsNullOrEmpty (Global.ua)) {
+				ctx.Response.Write (@"var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', '");
+				ctx.Response.Write (Global.ua);
+				ctx.Response.Write (@"']);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+   var ga = document.createElement('script'); ga.type =
+'text/javascript'; ga.async = true;
+   ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
+'http://www') + '.google-analytics.com/ga.js';
+   var s = document.getElementsByTagName('script')[0];
+s.parentNode.insertBefore(ga, s);
+ })();");
+			}
 			ctx.Response.Write ("</script><title>");
 			ctx.Response.Write (title);
 			ctx.Response.Write ("</title>\n");
@@ -330,7 +435,8 @@ function makeLink (link)
 				ctx.Response.Write (hs.InlineJavaScript);
 				ctx.Response.Write ("</script>\n");
 			}
-			ctx.Response.Write (@"</head><body onLoad='load()'>");
+			ctx.Response.Write (@"</head><body onload='load()'>");
+			ctx.Response.Write (@"<iframe id='helpframe' src='' height='0' width='0' frameborder='0'></iframe>");
 
 			// Set up object variable, as it's required by the MakeLink delegate
 			requestPath=ctx.Request.Path;
@@ -382,7 +488,7 @@ function makeLink (link)
  						theMatch.Groups[4].ToString());
 			
 			} else {
-				updated_link = String.Format ("{0}{1}?link={2}{3} target=\"content\"{4}",
+				updated_link = String.Format ("{0}{1}?link={2}{3} onclick=\"try_change_page('{2}')\" {4}",
 					theMatch.Groups[1].ToString(),
                                         requestPath,
                                         HttpUtility.UrlEncode (link.Replace ("file://","")),
@@ -399,72 +505,5 @@ function makeLink (link)
 				return true;
 			}
 		}
-
-		void HandleBoot (HttpContext context)
-		{
-			context.Response.Write (@"
-<html>
-	<head>
-		<link type='text/css' rel='stylesheet' href='ptree/tree.css'/>
-		<link type='text/css' rel='stylesheet' href='sidebar.css'/>
-		<script src='xtree/xmlextras.js'></script>
-		<script src='ptree/tree.js'></script>
-		<script src='sidebar.js'></script>
-		<script>
-		var tree = new PTree ();
-		function onBodyLoad ()
-		{
-			tree.strTargetDefault = 'content';
-			tree.strSrcBase = 'monodoc.ashx?tree=';
-			tree.strActionBase = 'monodoc.ashx?link=';
-			tree.strImagesBase = 'xtree/images/msdn2/';
-			tree.strImageExt = '.gif';
-			var content = document.getElementById ('contentList');
-			var root = tree.CreateItem (null, 'Mono Documentation', 'intro.html', '', true);
-			content.appendChild (root);
-		");
-
-		for (int i = 0; i < Global.help_tree.Nodes.Count; i++){
-			Node n = (Node)Global.help_tree.Nodes [i];
-			context.Response.Write (
-				"tree.CreateItem (root, '" + n.Caption + "', '" +
-				n.PublicUrl + "', ");
-	
-			if (n.Nodes.Count != 0)
-				context.Response.Write ("'" + i + "'");
-			else	
-				context.Response.Write ("null");
-	
-			if (i == Global.help_tree.Nodes.Count-1)
-				context.Response.Write (", true");
-
-			context.Response.Write (@");
-			");
-		}
-		context.Response.Write (@"
-		}</script>
-	</head>
-	<body onLoad='javascript:onBodyLoad();' onkeydown='javascript:return tree.onKeyDown (event);'>
-	  <div id='tabs'>
-	    <ul>
-	      <li id='contentsTab' class='selected'><a href='javascript:ShowContents();'>Contents</a></li>
-	      <li id='indexTab' style='display:none;'><a href='javascript:ShowIndex();'>Index</a></li>
-	    </ul>
-	  </div>
-	  <div id='contents' class='activeTab'>
-	    <div id='contentList'>
-	    </div>
-	  </div>
-	  <div id='index' class='tab'>
-	    <p>
-	    <label for='indexInput'>Lookup:</label> <input type='text' id='indexInput'/>
-	    <img alt='Spinner-blue' id='search_spinner' src='images/searching.gif' style='display:none;' align='middle' />
-	    <p id='errorText'></p>
-	    <ul id='indexList'></ul>
-	  </div>
-	</body>
-</html>
-");
-		}
 	}
 }
diff --git a/webdoc/monodoc.asmx b/webdoc/monodoc.asmx
deleted file mode 100755
index d8e5fd6..0000000
--- a/webdoc/monodoc.asmx
+++ /dev/null
@@ -1,210 +0,0 @@
-<%@ WebService language="C#" class="Editing" %>
-
-// MonoDoc Editing WebService
-//
-// (C) 2003 by Johannes Roith
-// Author: Johannes Roith
-
-// Client API:
-//
-// Editing edit = new Editing();
-// Response response = edit.Submit("Johannes Roith", "johannes at jroith.de",
-//                      "This is a change through monodoc editing.", xml);
-
-// response contains:
-// a server status message (response.Message)
-// a statuscode (response.Status)
-
-// Statuscodes:
-//
-// 1 - everything went right
-// 2 - the xml is not well-formed.
-// 3 - some data is missing (email, name, etc.).
-// 4 - the data was already posted
-// 5 - Some internal Server error
-
-
-using System;
-using System.Web.Services;
-using System.Xml.Serialization;
-using System.Xml;
-using System.Text;
-using System.Security.Cryptography;
-
-[WebService(Namespace="http://www.go-mono.org/monodoc")]
-public class Editing {
-
-    [WebMethod]
-    public Response Submit(string author, string email, string personalmessage, string xmldata) {
-
-        Response response;
-        string newsum = GetMd5Sum(xmldata);
-        XmlElement dataroot;
-        XmlDocument oldposts;
-        string today = Convert.ToString(DateTime.Now.DayOfYear);
-
-        try {
-
-
-        oldposts = new XmlDocument();
-        oldposts.Load("oldposts.xml");
-
-        dataroot = oldposts.DocumentElement;
-
-        // Eventually only block in certain time frame?
-        // XmlNodeList datanodes = dataroot.SelectNodes("/oldposts/post[@date='" + today + "']");
-
-        XmlNodeList datanodes = dataroot.SelectNodes("/oldposts/post");
-
-        foreach(XmlNode datanode in datanodes) {
-            if (datanode.Attributes["md5"].Value == newsum) {
-
-                response = new Response();
-                response.Status = 4;
-                response.Message = "This was already posted.";
-
-                return response;
-            }
-        }
-
-        if (xmldata == "")
-        {
-
-            response = new Response();
-            response.Status = 2;
-            response.Message = "Xml not well-formed. No data was posted.";
-
-            return response;
-        }
-
-        XmlDocument doc = new XmlDocument();
-        doc.LoadXml(xmldata);
-
-        XmlElement root = doc.DocumentElement;
-        XmlNodeList nodes = root.SelectNodes("/GlobalChangeset/DocSetChangeset");
-
-        // IMO it's best to generate different Mails for
-        // different DocSets, so the correct people can get their hands on it.
-        // e.g one mail for Gtk#, one for ecma docs.
-
-        foreach (XmlNode node in nodes) {
-
-            string datastring = "";
-
-            XmlNodeList filenodes = node.SelectNodes("FileChangeset");
-
-
-           foreach (XmlNode filenode in filenodes) {
-            datastring += RenderFileSet(filenode);
-           }
-
-            string target = node.Attributes["DocSet"].Value;
-
-            string header = "---------------------\n"
-                        + "MonoDoc Change\n"
-                        + "---------------------\n\n"
-                        + "This mail was generated by monodoc.\n\n"
-                        + "--------------------------------------------------\n"
-                        + "Author: " + author + "\n"
-                        + "EMail: "  + email  + "\n"
-                        + "personal Message: " + personalmessage + "\n\n"
-                        + "--------------------------------------------------\n\n"
-                        + "Changes are listed below:\n\n"
-                        + "*************************************\n\n";
-
-            string footer = "\n\n---------------------------------------\n"
-                          + "Monodoc Editing WebService";
-
-            SendMail("Monodoc: " + target, header + datastring + footer);
-        }
-
-        }
-
-        catch {
-
-            response = new Response();
-            response.Status = 5;
-            response.Message = "An unknown error occured.";
-
-            return response;
-
-        }
-
-
-        XmlNode rootnode = dataroot.SelectSingleNode("/oldposts");
-
-        XmlElement newentry = oldposts.CreateElement("post");
-        newentry.SetAttribute("md5", newsum);
-        newentry.SetAttribute("date", today);
-        rootnode.AppendChild(newentry);
-        oldposts.Save("oldposts.xml");
-
-        response = new Response();
-        response.Status = 1;
-        response.Message = "Your changes were sent to Mono Docs List.\n"
-                        + "They will be reviewed as soon as possible.";
-
-        return response;
-
-    }
-
-    string RenderFileSet(XmlNode filenode) {
-
-    // Rendering should be improved eventually,
-    // so no xml remains.
-
-       return "FILE: " + filenode.Attributes["RealFile"] + "\n\n"
-                  + filenode.InnerXml
-                  + "\n\n*************************************\n\n";
-    }
-
-    public class Response {
-
-        public int Status;
-        public string Message;
-    }
-
-    public void SendMail(string subject, string body) {
-
-        System.Web.Mail.MailMessage mailMessage = new System.Web.Mail.MailMessage();
-
-        // NOTE: I have made this "groith at tcrz.net", 
-        //       so it won't be blocked.
-        //       Should be changed later.
-
-        mailMessage.From = "groith at tcrz.net";
-        mailMessage.To = "mono-docs-list at ximian.com";
-        mailMessage.Subject = subject;
-        mailMessage.Body = body;
-        mailMessage.BodyFormat = System.Web.Mail.MailFormat.Text;
-
-        System.Web.Mail.SmtpMail.SmtpServer = "post.tcrz.net";
-        System.Web.Mail.SmtpMail.Send(mailMessage);
-
-
-    }
-
-    // from http://weblog.stevex.org/radio/stories/2002/12/08/
-    //      cCodeSnippetCreatingAnMd5HashString.html
-
-    public string GetMd5Sum(string str)
-    {
-        Encoder enc = System.Text.Encoding.Unicode.GetEncoder();
-
-        byte[] unicodeText = new byte[str.Length * 2];
-        enc.GetBytes(str.ToCharArray(), 0, str.Length, unicodeText, 0, true);
-
-        MD5 md5 = new MD5CryptoServiceProvider();
-        byte[] result = md5.ComputeHash(unicodeText);
-
-        StringBuilder sb = new StringBuilder();
-        for (int i=0;i<result.Length;i++)
-        {
-            sb.Append(result[i].ToString("X2"));
-        }
-
-        return sb.ToString();
-}
-
-
-}
diff --git a/webdoc/monodoc.css b/webdoc/monodoc.css
new file mode 100644
index 0000000..af1c2c7
--- /dev/null
+++ b/webdoc/monodoc.css
@@ -0,0 +1 @@
+/*This file is referenced in monodoc
diff --git a/webdoc/oldposts.xml b/webdoc/oldposts.xml
deleted file mode 100755
index df6f4bb..0000000
--- a/webdoc/oldposts.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<oldposts>
-</oldposts>
\ No newline at end of file
diff --git a/webdoc/plugins.def b/webdoc/plugins.def
new file mode 100644
index 0000000..43861fd
--- /dev/null
+++ b/webdoc/plugins.def
@@ -0,0 +1,12 @@
+#####SKIN (pick ONE)#####
+#skins/xamarin-external
+#skins/mono-external
+#skins/xamarin-new
+skins/mono-external
+
+######PLUGINS######
+plugins/search-plugin/fastsearch
+plugins/search-plugin/fullsearch
+plugins/iframe-plugin
+plugins/sidebar-plugin
+#plugins/tooltip-plugin
diff --git a/webdoc/plugins/iframe-plugin/iframe.js b/webdoc/plugins/iframe-plugin/iframe.js
new file mode 100644
index 0000000..7074b03
--- /dev/null
+++ b/webdoc/plugins/iframe-plugin/iframe.js
@@ -0,0 +1,3 @@
+  $(document).ready(function () {
+    $('iframe').iframeAutoHeight({debug: true});  
+  });
diff --git a/webdoc/plugins/iframe-plugin/jquery.iframe-auto-height-plugin.1.9.0.min.js b/webdoc/plugins/iframe-plugin/jquery.iframe-auto-height-plugin.1.9.0.min.js
new file mode 100644
index 0000000..7aa2143
--- /dev/null
+++ b/webdoc/plugins/iframe-plugin/jquery.iframe-auto-height-plugin.1.9.0.min.js
@@ -0,0 +1,7 @@
+/*
+  Plugin: iframe autoheight jQuery Plugin
+  Version: 1.9.0
+  Description: when the page loads set the height of an iframe based on the height of its contents
+  see README: http://github.com/house9/jquery-iframe-auto-height 
+*/
+(function(a){a.fn.iframeAutoHeight=function(b){function d(a){c.debug&&c.debug===!0&&window.console&&console.log(a)}function e(b,c){d("Diagnostics from '"+c+"'");try{d("  "+a(b,window.top.document).contents().find("body")[0].scrollHeight+" for ...find('body')[0].scrollHeight"),d("  "+a(b.contentWindow.document).height()+" for ...contentWindow.document).height()"),d("  "+a(b.contentWindow.document.body).height()+" for ...contentWindow.document.body).height()")}catch(e){d("  unable to check [...]
diff --git a/webdoc/plugins/search-plugin/fastsearch/fsearch.css b/webdoc/plugins/search-plugin/fastsearch/fsearch.css
new file mode 100644
index 0000000..ab573bf
--- /dev/null
+++ b/webdoc/plugins/search-plugin/fastsearch/fsearch.css
@@ -0,0 +1,45 @@
+#fsearch_window {
+        display: none;
+        opacity: 0;
+        position: absolute;
+        z-index: 60;
+        text-align: left;
+        width: 25em;
+        right: 80px;
+        top: 40px;
+        border: 1px solid black;
+        background: white;
+        padding: 5px;
+        overflow: hidden;
+        -webkit-transition: opacity 200ms linear 0;
+        -moz-transition: opacity 200ms linear 0;
+        -o-transition: opacity 200ms linear 0;
+}
+
+#fsearch_window a {
+        color: blue;
+        text-decoration: none;
+        font-family: monospace;
+}
+
+#fsearch_window .threedots {
+        color: #333;
+        font-size: x-small;
+        font-family: sans-serif;
+}
+
+#fsearch_window .selected {
+        background-color: 679ef1;
+        color: white;
+}
+
+#fsearch_companion {
+        display:none;
+        position: absolute;
+        z-index: 60;
+        top: 40px;
+        right:410px;
+        color: grey;
+        background-color: white;
+}
+
diff --git a/webdoc/plugins/search-plugin/fastsearch/search.js b/webdoc/plugins/search-plugin/fastsearch/search.js
new file mode 100644
index 0000000..e246efb
--- /dev/null
+++ b/webdoc/plugins/search-plugin/fastsearch/search.js
@@ -0,0 +1,133 @@
+var search_input = $('#fsearch');
+var search_window = $('#fsearch_window');
+var lis = null;
+var page_top_offset = $('#main_part').offset().top;
+
+var is_shown = false;
+var hide = function () {
+	if (!is_shown)
+		return;
+	search_window.css ({'display' : 'none', 'opacity' : 0});
+	is_shown = false;
+};
+var show = function () {
+	if (is_shown)
+		return;
+    search_window.css ({'display' : 'block', 'height' : 'auto', 'opacity' : 1.0, 'width': search_input.width() + 'px', 'top': page_top_offset + 'px' });
+	is_shown = true;
+};
+
+var param = document.URL.split('#')[1];
+if(param) {
+    $('#content_frame').attr('src', '/plugins/search-plugin/fullsearch/search.html#' + param);
+}
+
+search_input.blur (function () {
+	window.setTimeout (hide, 200);
+	if (search_input.val ().length == 0)
+		search_input.css ('width', '19em');
+});
+search_input.focus (function () {
+	search_input.css ('width', '29em');
+	if (search_window.text().length > 0 && search_input.val().length > 0)
+		show ();
+	window.setTimeout (function () {
+		search_input[0].select ();
+	}, 10);
+});
+
+search_input.keyup (function (event) {
+	if ($(this).val () == "")
+		hide();
+
+    // Only process if we receive an alnum or backspace or del
+    if (event.which != 8 && event.which != 46
+        && (event.which < 'A'.charCodeAt(0) || event.which > 'Z'.charCodeAt(0))
+        && (event.which < '0'.charCodeAt(0) || event.which > '9'.charCodeAt(0)))
+        return;
+
+	var callback = function (data) {
+		if (data == null || data.length == 0)
+			return;
+
+		var items = [];
+
+		$.each (data, function(key, val) {
+			var item = val.name;
+			var url = val.url.replace (/[<>]/g, function (c) { return c == '<' ? '{' : '}'; });
+			items.push('<li><a href="#" onclick="change_page(\''+url+'\')" title="'+(val.fulltitle == '' ? val.name : val.fulltitle)+'">' + item + '</a></li>');
+		});
+
+		var uls = $('<ul/>', { html: items.join (''), 'style': 'list-style-type:none; margin: 0; padding:0' });
+		lis = uls.children ('li');
+		var companion = $('#fsearch_companion');
+		lis.hover (function () {
+			var childA = $(this).children('a');
+			var offset = childA.offset ();
+			companion.css ({ 'top': offset.top + 'px', 'right': $('html').outerWidth () - offset.left + 10, 'display': 'block'});
+			companion.text(childA.attr ('title'));
+		}, function () {
+			companion.css ('display', 'none');
+		});
+		search_window.empty();
+		uls.appendTo ('#fsearch_window');
+		show ();
+	};
+	$.getJSON ('monodoc.ashx?fsearch=' + $(this).val (), callback);
+});
+
+document.getElementById ('fsearch').onsearch = function () {
+	if (search_input.val () == "") {
+		hide ();
+		search_input.blur ();
+	}
+};
+
+search_input.keydown (function (event) {
+	if (lis == null)
+		return;
+	var selected = lis.filter('.selected');
+	var newSelection = null;
+	$('#fsearch_companion').css ('display', 'none');
+
+	switch (event.which)
+	{
+	case 13: // return
+		if (selected.length != 0) {
+			selected.children ('a').click ();
+		} else {
+			// Show full search page
+			$("#content_frame").attr('src', '/plugins/search-plugin/fullsearch/search.html#' + encodeURI(search_input.val ()));
+		}
+		hide ();
+		search_input.blur ();
+		return false;
+	case 38: // up
+		if (selected.length != 0) {
+			var prev = selected.prev ();
+			newSelection = prev;
+		} else {
+			newSelection = lis.last ();
+		}
+		break;
+	case 40: // down
+		if (selected.length != 0) {
+			var next = selected.next ();
+			if (next.length != 0)
+				newSelection = next;
+		} else {
+			newSelection = lis.first ();
+		}
+		break;
+	}
+
+	if (newSelection != null) {
+		newSelection.addClass ('selected');
+		if (selected != null) {
+			selected.removeClass ('selected');
+			selected.mouseleave();
+		}
+		newSelection.mouseenter();
+		selected = newSelection;
+	}
+});
diff --git a/webdoc/plugins/search-plugin/fullsearch/fullsearch.js b/webdoc/plugins/search-plugin/fullsearch/fullsearch.js
new file mode 100644
index 0000000..0722979
--- /dev/null
+++ b/webdoc/plugins/search-plugin/fullsearch/fullsearch.js
@@ -0,0 +1,40 @@
+//support for a full page of search results /monodoc.ashx?search=
+
+var spinner = $('#s_spinner');
+function process_hash () {
+	var query = window.location.hash;
+	if (query == null || query.length < 2)
+		return;
+	var ul = $('#s_results ul');
+	ul.empty ();
+	var currentNumber = 0;
+	var count = 0;
+	// Remove hash '#' symbol
+	query = query.substring(1);
+	$('#s_term').text (query);
+	var fetch_and_add_results = function (url) {
+		spinner.toggleClass ('hidden');
+			$.getJSON (url, function (data) {
+				spinner.toggleClass ('hidden');
+				count = data.count;
+				currentNumber += data.result.length;
+				if (data.result.length == 0) {
+					$('<div/>', { 'class': 's_message' }).text('No more results').replaceAll($('#s_morebtn')).fadeOut(4000, function () { $(this).remove(); });
+				} else {
+					var lis = $.map (data.result, function (element) {
+						return '<li><a href="/monodoc.ashx?link=' + element.url + '"><span class="name">'
+							+ element.name + '</span> '
+							+ (element.fulltitle.length > 0 ? '<span class="fulltitle">(' + element.fulltitle + ')</span>' : '') + '</a></li>';
+					});
+					ul.append (lis.join (''));
+				}
+			});
+	};
+ 	fetch_and_add_results ('/monodoc.ashx?search=' + query + '&callback=?');
+	$('#s_morebtn input').click (function () {
+		fetch_and_add_results ('/monodoc.ashx?search=' + query + '&start=' + currentNumber + '&count=' + count + '&callback=?');
+	});
+}
+
+process_hash ();
+window.addEventListener("hashchange", process_hash, false);
diff --git a/webdoc/plugins/search-plugin/fullsearch/search.css b/webdoc/plugins/search-plugin/fullsearch/search.css
new file mode 100644
index 0000000..6e39869
--- /dev/null
+++ b/webdoc/plugins/search-plugin/fullsearch/search.css
@@ -0,0 +1,43 @@
+#s_spinner, #s_header, #s_morebtn, .s_message {
+	text-align: center;
+}
+
+#s_header {
+	margin-bottom: 1em;
+}
+
+div.hidden {
+	display: none;
+	visibility: hidden;
+}
+
+#s_results a {
+	color: #777;
+}
+
+#s_results a:hover {
+	color: black;
+}
+
+#s_results span.fulltitle {
+	font-style: italic;
+	font-size: 80%;
+}
+
+#s_results li {
+	margin-bottom: 0.5em;
+}
+
+#s_morebtn input {
+	font-size: x-large;
+	padding: 5px 14px 6px;
+}
+
+#s_morebtn {
+	margin-bottom: 1em;
+}
+
+.s_message {
+	font-size: xx-large;
+}
+
diff --git a/webdoc/plugins/search-plugin/fullsearch/search.html b/webdoc/plugins/search-plugin/fullsearch/search.html
new file mode 100644
index 0000000..7b9424b
--- /dev/null
+++ b/webdoc/plugins/search-plugin/fullsearch/search.html
@@ -0,0 +1,24 @@
+<html>
+  <head>
+	<title></title>
+	<link rel="stylesheet" type="text/css" href="search.css" />
+  </head>
+  <script type="text/javascript">
+	function printFrame() {
+        	window.print();
+        	return false;
+	}
+	//pass the function object to parent
+	parent.printFrame = printFrame;
+  </script>
+  <body>
+	<div id="search_wrapper">
+	  <div id="s_header"><h1>Search result(s) for '<span id="s_term"></span>'</h1></div>
+	  <div id="s_results"><ul></ul></div>
+	  <div id="s_morebtn"><input type="button" value="Show more results"></div>
+	  <div id="s_spinner" class="hidden"><img src="/plugins/search-plugin/images/spinner.gif" alt="spinner" /></div>
+	</div>
+	<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
+	<script type="text/javascript" src="fullsearch.js"></script>
+  </body>
+</html>
diff --git a/webdoc/plugins/search-plugin/images/spinner.gif b/webdoc/plugins/search-plugin/images/spinner.gif
new file mode 100644
index 0000000..3288d10
Binary files /dev/null and b/webdoc/plugins/search-plugin/images/spinner.gif differ
diff --git a/webdoc/images/searching.gif b/webdoc/plugins/sidebar-plugin/dependencies/ptree/searching.gif
similarity index 100%
rename from webdoc/images/searching.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/ptree/searching.gif
diff --git a/webdoc/ptree/tree.css b/webdoc/plugins/sidebar-plugin/dependencies/ptree/tree.css
similarity index 52%
rename from webdoc/ptree/tree.css
rename to webdoc/plugins/sidebar-plugin/dependencies/ptree/tree.css
index fed1384..a115b54 100755
--- a/webdoc/ptree/tree.css
+++ b/webdoc/plugins/sidebar-plugin/dependencies/ptree/tree.css
@@ -1,14 +1,3 @@
-body {
-	font-family: verdana;
-	font-size: 70.5%;
-	font-weight: normal;
-	background-color: #fff;
-	color: Black;
-	margin: 0px 0px 0px 0px;
-	padding: 0px 0px 0px 0px;
-	vertical-align: middle;
-}
-
 .tree-node,
 .tree-node-collapsed
 {
@@ -18,13 +7,12 @@ body {
 	white-space: nowrap;
 }
 
-.tree-label
+.tree-label,
 .tree-label-selected
 {
 	margin: 0px;
 	padding: 0px;
 	border: 0px;
-	white-space: nowrap;
 }
 
 .tree-node-collapsed .tree-node,
@@ -37,26 +25,16 @@ body {
 .tree-label-selected a:hover
 {
 	text-decoration: none;
-	background: highlight;
-	color: highlighttext;
 }
 
 .tree-label a
 {
 	text-decoration: none;
-	background: #fff;
-	color: black;
 }
 
 .tree-label a:hover
 {
-	background-image: url('../images/searching.gif');
 	text-decoration: none;
-	background: #dfdfdf;
-	color: black;
-	border: 1px solid;
-	border-color: grey;
-	padding: 1px;
 }
 
 .tree-node img
diff --git a/webdoc/ptree/tree.js b/webdoc/plugins/sidebar-plugin/dependencies/ptree/tree.js
similarity index 75%
rename from webdoc/ptree/tree.js
rename to webdoc/plugins/sidebar-plugin/dependencies/ptree/tree.js
index 1131e06..6e1da0d 100755
--- a/webdoc/ptree/tree.js
+++ b/webdoc/plugins/sidebar-plugin/dependencies/ptree/tree.js
@@ -20,7 +20,18 @@ function PTree ()
 	this.strImageExt = ".png";
 	this.eltSelected = null;
 	this.nImageWidth = 18;
-	this.nImageHeight = 18;
+	this.nImageHeight = 23;
+	this.onClickCallback = null;
+
+
+	this.Tooltip = function() {
+		if($.isFunction(window.tooltip)) {
+			$('.tree-label').tooltip({
+                        	selector: 'a[rel=tooltip]',
+                        	placement: 'right'
+                	});
+		}
+        }
 
 	this.CreateItemFromXML = function (oNode, fLast, eltParent)
 	{
@@ -94,17 +105,41 @@ function PTree ()
 
 		if (strAction)
 		{
-			eltDescription = document.createElement ("a");
-			eltDescription.href = this.strActionBase + strAction;
-			eltDescription.title = strText;
+			eltDescription = document.createElement ("span");
+			eltDescription.className = "link";
+			eltD = document.createElement ("a");
+			if (strAction.indexOf ('http://') === 0)
+				eltD.href = strAction;
+			else
+				eltD.href = this.strActionBase + strAction;
+			eltD.title = strText;
+			eltD.rel = "tooltip";
+			//eltD.data-placement = "left";
 			if (strTarget)
-				eltDescription.target = strTarget;
+				eltD.target = strTarget;
 			else if (this.strTargetDefault)
-				eltDescription.target = this.strTargetDefault;
-			eltDescription.appendChild (eltText);
-			eltDescription.onclick = function () { _this.SelectNode (eltDiv); }
-			eltDescription.onmouseover = function () { this.blur (); }
-			eltDescription.onmouseup = function () { this.blur (); }
+				eltD.target = this.strTargetDefault;
+			eltD.appendChild (eltText);
+			var parent = this;
+			eltD.onclick = function (e) {
+				if (!e)
+					e = window.event;
+				if (e.ctrlKey || e.shiftKey || e.altKey || e.metaKey || e.modifiers > 0)
+					return;
+				_this.SelectNode (eltDiv);
+				if (parent.onClickCallback) {
+					e.cancelBubble = true;
+					e.returnValue = false;
+					if (e.stopPropagation) {
+						e.stopPropagation ();
+						e.preventDefault ();
+					}
+					parent.onClickCallback(strAction);
+				}
+			}
+			eltD.onmouseover = function () { this.blur (); }
+			eltD.onmouseup = function () { this.blur (); }
+			eltDescription.appendChild(eltD);
 		}
 		else
 		{
@@ -121,7 +156,8 @@ function PTree ()
 			eltParent.appendChild (eltDiv);
 		else
 			this.SelectNode (eltDiv);
-
+		
+		_this.Tooltip();
 		return eltDiv;
 	}
 
@@ -148,7 +184,7 @@ function PTree ()
 		var eltDiv = this.GetDivFromIcon (eltIcon);
 		eltIcon.onclick = null;
 
-		var eltLoading = this.CreateItem (eltDiv, "<img src=\"../images/searching.gif\"/>Loading...", null, null, true);
+		var eltLoading = this.CreateItem (eltDiv, "<img src=\"plugins/sidebar-plugin/dependencies/ptree/searching.gif\"/>Loading...", null, null, true);
 		eltLoading.className = '';
 
 		var xmlHttp = XmlHttp.create();
@@ -192,6 +228,55 @@ function PTree ()
 		eltIcon.onclick = function () { _this.onClickMinus (this); }
 	}
 
+	this.ExpandFromPath = function (path)
+	{
+		var root = $('.tree-node').first ();
+		var elements = path.split('@');
+
+		var thisSave = this;
+		var finish = function (node, i, opened) {
+			node = $(node);
+			if (!opened) {
+				node.attr('class', 'tree-node');
+				var icon = node.children('span').children('img:nth-child(' + (i + 1) + ')');
+				icon[0].onclick = function () { thisSave.onClickMinus (this); };
+				icon.attr('src', thisSave.GetIconSrc (node[0], false));
+			}
+			root = node;
+			if (i == elements.length - 1) {
+				thisSave.SelectNode (node[0]);
+				var container = $('#contents').parent().parent();
+				container.scrollTop (node[0].offsetTop - 100);
+			}
+		};
+		var recurse = function (i) {
+			if (i >= elements.length)
+				return;
+			var node = root.children ('div')[elements[i]];
+			// Tree already loaded
+			if ($(node).find ('div').first ().length == 0) {
+				var url = thisSave.strSrcBase + elements.slice(0, i + 1).join('@');
+				$.get (url, function (data) {
+					var doc = data.documentElement;
+
+					var children = doc.childNodes;
+					var cChildren = children.length;
+
+					for (var iNode = 0; iNode < cChildren; iNode ++)
+						thisSave.CreateItemFromXML (children[iNode], iNode == cChildren - 1, node)
+
+					// We finish node creation by opening up its tree like clicking would normally do
+					finish (node, i, false);
+					recurse (i + 1);
+				});
+			} else {
+				finish (node, i, true);
+				recurse (i + 1);
+			}
+		};
+		recurse (0);
+	}
+
 	this.onClickPlus = function (eltIcon)
 	{
 		var eltDiv = this.GetDivFromIcon (eltIcon);
diff --git a/webdoc/xtree/images/I.png b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/I.png
similarity index 100%
rename from webdoc/xtree/images/I.png
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/I.png
diff --git a/webdoc/xtree/images/L.png b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/L.png
similarity index 100%
rename from webdoc/xtree/images/L.png
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/L.png
diff --git a/webdoc/xtree/images/Lminus.png b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/Lminus.png
similarity index 100%
rename from webdoc/xtree/images/Lminus.png
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/Lminus.png
diff --git a/webdoc/xtree/images/Lplus.png b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/Lplus.png
similarity index 100%
rename from webdoc/xtree/images/Lplus.png
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/Lplus.png
diff --git a/webdoc/xtree/images/T.png b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/T.png
similarity index 100%
rename from webdoc/xtree/images/T.png
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/T.png
diff --git a/webdoc/xtree/images/Tminus.png b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/Tminus.png
similarity index 100%
rename from webdoc/xtree/images/Tminus.png
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/Tminus.png
diff --git a/webdoc/xtree/images/Tplus.png b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/Tplus.png
similarity index 100%
rename from webdoc/xtree/images/Tplus.png
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/Tplus.png
diff --git a/webdoc/xtree/images/blank.png b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/blank.png
similarity index 100%
rename from webdoc/xtree/images/blank.png
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/blank.png
diff --git a/webdoc/xtree/images/clean/I.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/clean/I.gif
similarity index 100%
rename from webdoc/xtree/images/clean/I.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/clean/I.gif
diff --git a/webdoc/xtree/images/clean/L.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/clean/L.gif
similarity index 100%
rename from webdoc/xtree/images/clean/L.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/clean/L.gif
diff --git a/webdoc/xtree/images/clean/Lminus.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/clean/Lminus.gif
similarity index 100%
rename from webdoc/xtree/images/clean/Lminus.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/clean/Lminus.gif
diff --git a/webdoc/xtree/images/clean/Lplus.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/clean/Lplus.gif
similarity index 100%
rename from webdoc/xtree/images/clean/Lplus.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/clean/Lplus.gif
diff --git a/webdoc/xtree/images/clean/T.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/clean/T.gif
similarity index 100%
rename from webdoc/xtree/images/clean/T.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/clean/T.gif
diff --git a/webdoc/xtree/images/clean/Tminus.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/clean/Tminus.gif
similarity index 100%
rename from webdoc/xtree/images/clean/Tminus.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/clean/Tminus.gif
diff --git a/webdoc/xtree/images/clean/Tplus.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/clean/Tplus.gif
similarity index 100%
rename from webdoc/xtree/images/clean/Tplus.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/clean/Tplus.gif
diff --git a/webdoc/xtree/images/clean/blank.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/clean/blank.gif
similarity index 100%
rename from webdoc/xtree/images/clean/blank.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/clean/blank.gif
diff --git a/webdoc/xtree/images/file.png b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/file.png
similarity index 100%
rename from webdoc/xtree/images/file.png
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/file.png
diff --git a/webdoc/xtree/images/foldericon.png b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/foldericon.png
similarity index 100%
rename from webdoc/xtree/images/foldericon.png
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/foldericon.png
diff --git a/webdoc/xtree/images/msdn/I.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/I.gif
similarity index 100%
rename from webdoc/xtree/images/msdn/I.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/I.gif
diff --git a/webdoc/xtree/images/msdn/L.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/L.gif
similarity index 100%
rename from webdoc/xtree/images/msdn/L.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/L.gif
diff --git a/webdoc/xtree/images/msdn/Lminus.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/Lminus.gif
similarity index 100%
rename from webdoc/xtree/images/msdn/Lminus.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/Lminus.gif
diff --git a/webdoc/xtree/images/msdn/Lplus.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/Lplus.gif
similarity index 100%
rename from webdoc/xtree/images/msdn/Lplus.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/Lplus.gif
diff --git a/webdoc/xtree/images/msdn/T.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/T.gif
similarity index 100%
rename from webdoc/xtree/images/msdn/T.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/T.gif
diff --git a/webdoc/xtree/images/msdn/Tminus.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/Tminus.gif
similarity index 100%
rename from webdoc/xtree/images/msdn/Tminus.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/Tminus.gif
diff --git a/webdoc/xtree/images/msdn/Tplus.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/Tplus.gif
similarity index 100%
rename from webdoc/xtree/images/msdn/Tplus.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/Tplus.gif
diff --git a/webdoc/xtree/images/msdn/blank.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/blank.gif
similarity index 100%
rename from webdoc/xtree/images/msdn/blank.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/blank.gif
diff --git a/webdoc/xtree/images/msdn/menu_bar.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/menu_bar.gif
similarity index 100%
rename from webdoc/xtree/images/msdn/menu_bar.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/menu_bar.gif
diff --git a/webdoc/xtree/images/msdn/menu_corner.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/menu_corner.gif
similarity index 100%
rename from webdoc/xtree/images/msdn/menu_corner.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/menu_corner.gif
diff --git a/webdoc/xtree/images/msdn/menu_corner_minus.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/menu_corner_minus.gif
similarity index 100%
rename from webdoc/xtree/images/msdn/menu_corner_minus.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/menu_corner_minus.gif
diff --git a/webdoc/xtree/images/msdn/menu_corner_plus.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/menu_corner_plus.gif
similarity index 100%
rename from webdoc/xtree/images/msdn/menu_corner_plus.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/menu_corner_plus.gif
diff --git a/webdoc/xtree/images/msdn/menu_tee.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/menu_tee.gif
similarity index 100%
rename from webdoc/xtree/images/msdn/menu_tee.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/menu_tee.gif
diff --git a/webdoc/xtree/images/msdn/menu_tee_minus.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/menu_tee_minus.gif
similarity index 100%
rename from webdoc/xtree/images/msdn/menu_tee_minus.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/menu_tee_minus.gif
diff --git a/webdoc/xtree/images/msdn/menu_tee_plus.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/menu_tee_plus.gif
similarity index 100%
rename from webdoc/xtree/images/msdn/menu_tee_plus.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn/menu_tee_plus.gif
diff --git a/webdoc/xtree/images/msdn2/I.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/I.gif
similarity index 100%
rename from webdoc/xtree/images/msdn2/I.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/I.gif
diff --git a/webdoc/xtree/images/msdn2/L.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/L.gif
similarity index 100%
rename from webdoc/xtree/images/msdn2/L.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/L.gif
diff --git a/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/Lminus.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/Lminus.gif
new file mode 100644
index 0000000..4f5afec
Binary files /dev/null and b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/Lminus.gif differ
diff --git a/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/Lplus.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/Lplus.gif
new file mode 100644
index 0000000..c7a12ab
Binary files /dev/null and b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/Lplus.gif differ
diff --git a/webdoc/xtree/images/msdn2/T.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/T.gif
similarity index 100%
rename from webdoc/xtree/images/msdn2/T.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/T.gif
diff --git a/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/Tminus.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/Tminus.gif
new file mode 100644
index 0000000..2c60466
Binary files /dev/null and b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/Tminus.gif differ
diff --git a/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/Tplus.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/Tplus.gif
new file mode 100644
index 0000000..e444a44
Binary files /dev/null and b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/Tplus.gif differ
diff --git a/webdoc/xtree/images/msdn2/blank.gif b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/blank.gif
similarity index 100%
rename from webdoc/xtree/images/msdn2/blank.gif
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/msdn2/blank.gif
diff --git a/webdoc/xtree/images/openfoldericon.png b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/openfoldericon.png
similarity index 100%
rename from webdoc/xtree/images/openfoldericon.png
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/openfoldericon.png
diff --git a/webdoc/xtree/images/xp/I.png b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/xp/I.png
similarity index 100%
rename from webdoc/xtree/images/xp/I.png
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/xp/I.png
diff --git a/webdoc/xtree/images/xp/L.png b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/xp/L.png
similarity index 100%
rename from webdoc/xtree/images/xp/L.png
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/xp/L.png
diff --git a/webdoc/xtree/images/xp/Lminus.png b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/xp/Lminus.png
similarity index 100%
rename from webdoc/xtree/images/xp/Lminus.png
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/xp/Lminus.png
diff --git a/webdoc/xtree/images/xp/Lplus.png b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/xp/Lplus.png
similarity index 100%
rename from webdoc/xtree/images/xp/Lplus.png
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/xp/Lplus.png
diff --git a/webdoc/xtree/images/xp/T.png b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/xp/T.png
similarity index 100%
rename from webdoc/xtree/images/xp/T.png
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/xp/T.png
diff --git a/webdoc/xtree/images/xp/Tminus.png b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/xp/Tminus.png
similarity index 100%
rename from webdoc/xtree/images/xp/Tminus.png
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/xp/Tminus.png
diff --git a/webdoc/xtree/images/xp/Tplus.png b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/xp/Tplus.png
similarity index 100%
rename from webdoc/xtree/images/xp/Tplus.png
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/xp/Tplus.png
diff --git a/webdoc/xtree/images/xp/file.png b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/xp/file.png
similarity index 100%
rename from webdoc/xtree/images/xp/file.png
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/xp/file.png
diff --git a/webdoc/xtree/images/xp/folder.png b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/xp/folder.png
similarity index 100%
rename from webdoc/xtree/images/xp/folder.png
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/xp/folder.png
diff --git a/webdoc/xtree/images/xp/openfolder.png b/webdoc/plugins/sidebar-plugin/dependencies/xtree/images/xp/openfolder.png
similarity index 100%
rename from webdoc/xtree/images/xp/openfolder.png
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/images/xp/openfolder.png
diff --git a/webdoc/xtree/xloadtree.js b/webdoc/plugins/sidebar-plugin/dependencies/xtree/xloadtree.js
similarity index 100%
rename from webdoc/xtree/xloadtree.js
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/xloadtree.js
diff --git a/webdoc/xtree/xmlextras.js b/webdoc/plugins/sidebar-plugin/dependencies/xtree/xmlextras.js
similarity index 100%
rename from webdoc/xtree/xmlextras.js
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/xmlextras.js
diff --git a/webdoc/xtree/xtree.css b/webdoc/plugins/sidebar-plugin/dependencies/xtree/xtree.css
similarity index 79%
rename from webdoc/xtree/xtree.css
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/xtree.css
index 3630da9..44d7324 100644
--- a/webdoc/xtree/xtree.css
+++ b/webdoc/plugins/sidebar-plugin/dependencies/xtree/xtree.css
@@ -1,13 +1,3 @@
-body {
-	font-family: verdana;
-	font-size: 70.5%;
-	font-weight: normal;
-	background-color: #f1f1f1;
-	color: Black;
-	margin: 0px 0px 0px 0px;
-	padding: 0px 0px 0px 0px;
-}
-
 .webfx-tree-container {
 	margin: 0px;
 	padding: 0px;
diff --git a/webdoc/xtree/xtree.js b/webdoc/plugins/sidebar-plugin/dependencies/xtree/xtree.js
similarity index 93%
rename from webdoc/xtree/xtree.js
rename to webdoc/plugins/sidebar-plugin/dependencies/xtree/xtree.js
index 19362e1..2565460 100644
--- a/webdoc/xtree/xtree.js
+++ b/webdoc/plugins/sidebar-plugin/dependencies/xtree/xtree.js
@@ -66,19 +66,19 @@
 \----------------------------------------------------------------------------*/
 
 var webFXTreeConfig = {
-	rootIcon        : 'xtree/images/foldericon.png',
-	openRootIcon    : 'xtree/images/openfoldericon.png',
-	folderIcon      : 'xtree/images/foldericon.png',
-	openFolderIcon  : 'xtree/images/openfoldericon.png',
-	fileIcon        : 'xtree/images/file.png',
-	iIcon           : 'xtree/images/I.png',
-	lIcon           : 'xtree/images/L.png',
-	lMinusIcon      : 'xtree/images/Lminus.png',
-	lPlusIcon       : 'xtree/images/Lplus.png',
-	tIcon           : 'xtree/images/T.png',
-	tMinusIcon      : 'xtree/images/Tminus.png',
-	tPlusIcon       : 'xtree/images/Tplus.png',
-	blankIcon       : 'xtree/images/blank.png',
+	rootIcon        : 'plugins/sidebar-plugin/dependencies/xtree/images/foldericon.png',
+	openRootIcon    : 'plugins/sidebar-plugin/dependencies/xtree/images/openfoldericon.png',
+	folderIcon      : 'plugins/sidebar-plugin/dependencies/xtree/images/foldericon.png',
+	openFolderIcon  : 'plugins/sidebar-plugin/dependencies/xtree/images/openfoldericon.png',
+	fileIcon        : 'plugins/sidebar-plugin/dependencies/xtree/images/file.png',
+	iIcon           : 'plugins/sidebar-plugin/dependencies/xtree/images/I.png',
+	lIcon           : 'plugins/sidebar-plugin/dependencies/xtree/images/L.png',
+	lMinusIcon      : 'plugins/sidebar-plugin/dependencies/xtree/images/Lminus.png',
+	lPlusIcon       : 'plugins/sidebar-plugin/dependencies/xtree/images/Lplus.png',
+	tIcon           : 'plugins/sidebar-plugin/dependencies/xtree/images/T.png',
+	tMinusIcon      : 'plugins/sidebar-plugin/dependencies/xtree/images/Tminus.png',
+	tPlusIcon       : 'plugins/sidebar-plugin/dependencies/xtree/images/Tplus.png',
+	blankIcon       : 'plugins/sidebar-plugin/dependencies/xtree/images/blank.png',
 	defaultText     : 'Tree Item',
 	defaultAction   : 'javascript:void(0);',
 	defaultBehavior : 'classic',
@@ -363,9 +363,9 @@ WebFXTree.prototype.keydown = function(key) {
 WebFXTree.prototype.toString = function() {
 	var str = "<div id=\"" + this.id + "\" ondblclick=\"webFXTreeHandler.toggle(this);\" class=\"webfx-tree-item\" onkeydown=\"return webFXTreeHandler.keydown(this, event)\">" +
 		"<img id=\"" + this.id + "-icon\" class=\"webfx-tree-icon\" src=\"" + ((webFXTreeHandler.behavior == 'classic' && this.open)?this.openIcon:this.icon) + "\" onclick=\"webFXTreeHandler.select(this);\">" +
-		"<a href=\"" + this.action + "\" id=\"" + this.id + "-anchor\" onfocus=\"webFXTreeHandler.focus(this);\" onblur=\"webFXTreeHandler.blur(this);\"" +
+		"<p><a href=\"" + this.action + "\" id=\"" + this.id + "-anchor\" onfocus=\"webFXTreeHandler.focus(this);\" onblur=\"webFXTreeHandler.blur(this);\"" +
 		(this.target ? " target=\"" + this.target + "\"" : "") +
-		">" + this.text + "</a></div>" +
+		">" + this.text + "</a></p></div>" +
 		"<div id=\"" + this.id + "-cont\" class=\"webfx-tree-container\" style=\"display: " + ((this.open)?'block':'none') + ";\">";
 	var sb = [];
 	for (var i = 0; i < this.childNodes.length; i++) {
@@ -527,9 +527,9 @@ WebFXTreeItem.prototype.toString = function (nItem, nItemCount) {
 		indent +
 		"<img id=\"" + this.id + "-plus\" src=\"" + ((this.folder)?((this.open)?((this.parentNode._last)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.tMinusIcon):((this.parentNode._last)?webFXTreeConfig.lPlusIcon:webFXTreeConfig.tPlusIcon)):((this.parentNode._last)?webFXTreeConfig.lIcon:webFXTreeConfig.tIcon)) + "\" onclick=\"webFXTreeHandler.toggle(this);\">" +
 		"<img id=\"" + this.id + "-icon\" class=\"webfx-tree-icon\" src=\"" + ((webFXTreeHandler.behavior == 'classic' && this.open)?this.openIcon:this.icon) + "\" onclick=\"webFXTreeHandler.select(this);\">" +
-		"<a href=\"" + this.action + "\" id=\"" + this.id + "-anchor\" onfocus=\"webFXTreeHandler.focus(this);\" onblur=\"webFXTreeHandler.blur(this);\"" +
+		"<p><a href=\"" + this.action + "\" id=\"" + this.id + "-anchor\" onfocus=\"webFXTreeHandler.focus(this);\" onblur=\"webFXTreeHandler.blur(this);\"" +
 		(this.target ? " target=\"" + this.target + "\"" : "") +
-		">" + label + "</a></div>" +
+		">" + label + "</a></p></div>" +
 		"<div id=\"" + this.id + "-cont\" class=\"webfx-tree-container\" style=\"display: " + ((this.open)?'block':'none') + ";\">";
 	var sb = [];
 	for (var i = 0; i < this.childNodes.length; i++) {
@@ -538,4 +538,4 @@ WebFXTreeItem.prototype.toString = function (nItem, nItemCount) {
 	this.plusIcon = ((this.parentNode._last)?webFXTreeConfig.lPlusIcon:webFXTreeConfig.tPlusIcon);
 	this.minusIcon = ((this.parentNode._last)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.tMinusIcon);
 	return str + sb.join("") + "</div>";
-}
\ No newline at end of file
+}
diff --git a/webdoc/plugins/sidebar-plugin/make-tree.js b/webdoc/plugins/sidebar-plugin/make-tree.js
new file mode 100644
index 0000000..47ce72a
--- /dev/null
+++ b/webdoc/plugins/sidebar-plugin/make-tree.js
@@ -0,0 +1,35 @@
+$(document).ready(function() {
+	var content_frame = $('#content_frame');
+	var page_link = $('#pageLink');
+
+	change_page = function (pagename) {
+    	content_frame.attr ('src', 'monodoc.ashx?link=' + pagename);
+  	page_link.attr ('href', '?link=' + pagename);
+    	if (window.history && window.history.pushState) {
+       		window.history.pushState (null, '', '/?link=' + pagename);
+	}  		
+	};
+
+	update_tree = function () {
+  		var tree_path = $('#content_frame').contents ().find ('meta[name=TreePath]');
+  		if (tree_path.length > 0) {
+     			var path = tree_path.attr ('value');
+     			tree.ExpandFromPath (path);
+  		}
+	};
+
+	update_tree ();
+	add_native_browser_link = function () {
+        	var contentDiv = $('#content_frame').contents ().find ('div[class=Content]').first ();
+        	if (contentDiv.length > 0 && contentDiv.attr ('id')) {
+                	var id = contentDiv.attr ('id').replace (':Summary', '');
+                	var h2 = contentDiv.children ('h2').first ();
+                	if (h2.prev ().attr ('class') != 'native-browser')
+                	h2.before ('<p><a class="native-browser" href="mdoc://' + encodeURIComponent (id) + '"><span class="native-icon"><img src="/views/images/native-browser-icon.png" /></span>Open in Native Browser</a></p>');
+        	}
+	};
+	add_native_browser_link ();
+
+	content_frame.load (update_tree);
+	content_frame.load (add_native_browser_link);
+});
diff --git a/webdoc/sidebar.css b/webdoc/plugins/sidebar-plugin/sidebar.css
similarity index 91%
rename from webdoc/sidebar.css
rename to webdoc/plugins/sidebar-plugin/sidebar.css
index 6a848b3..5cb10ba 100644
--- a/webdoc/sidebar.css
+++ b/webdoc/plugins/sidebar-plugin/sidebar.css
@@ -1,30 +1,25 @@
-body {
-	font-family: Verdana;
-	margin: 0px !important;
-	padding: 0px !important;
-	font-size: 8pt;
-	background-color: white;
-	white-space: nowrap;
+#side {
+	float: left;
 }
-
 .tab {
 	display: none !important;
 }
 
 .activeTab {
-	padding-top: 35px;
 	padding-left: 10px;
 	padding-right: 10px;
 	display: block !important;
+	overflow-x: hidden;
+	overflow-y: visible;
 }
-
+/*
 input[type=text] {
 	border: 1px solid #B1A598;
 	padding: 2px;
 }
 
 input[type=text]:focus {
-}
+}*/
 
 .error {
 	color: red;
@@ -127,3 +122,4 @@ a.selected {
 #errorText {
 	margin-top: 10px;
 }
+
diff --git a/webdoc/sidebar.js b/webdoc/plugins/sidebar-plugin/sidebar.js
similarity index 100%
rename from webdoc/sidebar.js
rename to webdoc/plugins/sidebar-plugin/sidebar.js
diff --git a/webdoc/plugins/tooltip-plugin/bootstrap.tooltip.js b/webdoc/plugins/tooltip-plugin/bootstrap.tooltip.js
new file mode 100644
index 0000000..3c2d4de
--- /dev/null
+++ b/webdoc/plugins/tooltip-plugin/bootstrap.tooltip.js
@@ -0,0 +1,276 @@
+/* ===========================================================
+ * bootstrap-tooltip.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#tooltips
+ * Inspired by the original jQuery.tipsy by Jason Frame
+ * ===========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function ($) {
+
+  "use strict"; // jshint ;_;
+
+
+ /* TOOLTIP PUBLIC CLASS DEFINITION
+  * =============================== */
+
+  var Tooltip = function (element, options) {
+  this.init('tooltip', element, options)
+  }
+
+  Tooltip.prototype = {
+
+  constructor: Tooltip
+
+  , init: function (type, element, options) {
+    var eventIn
+    , eventOut
+
+    this.type = type
+    this.$element = $(element)
+    this.options = this.getOptions(options)
+    this.enabled = true
+
+    if (this.options.trigger == 'click') {
+    this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
+    } else if (this.options.trigger != 'manual') {
+    eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
+    eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
+    this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
+    this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
+    }
+
+    this.options.selector ?
+    (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
+    this.fixTitle()
+  }
+
+  , getOptions: function (options) {
+    options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
+
+    if (options.delay && typeof options.delay == 'number') {
+    options.delay = {
+      show: options.delay
+    , hide: options.delay
+    }
+    }
+
+    return options
+  }
+
+  , enter: function (e) {
+    var self = $(e.currentTarget)[this.type](this._options).data(this.type)
+
+    if (!self.options.delay || !self.options.delay.show) return self.show()
+
+    clearTimeout(this.timeout)
+    self.hoverState = 'in'
+    this.timeout = setTimeout(function() {
+    if (self.hoverState == 'in') self.show()
+    }, self.options.delay.show)
+  }
+
+  , leave: function (e) {
+    var self = $(e.currentTarget)[this.type](this._options).data(this.type)
+
+    if (this.timeout) clearTimeout(this.timeout)
+    if (!self.options.delay || !self.options.delay.hide) return self.hide()
+
+    self.hoverState = 'out'
+    this.timeout = setTimeout(function() {
+    if (self.hoverState == 'out') self.hide()
+    }, self.options.delay.hide)
+  }
+
+  , show: function () {
+    var $tip
+    , inside
+    , pos
+    , actualWidth
+    , actualHeight
+    , placement
+    , tp
+
+    if (this.hasContent() && this.enabled) {
+    $tip = this.tip()
+    this.setContent()
+
+    if (this.options.animation) {
+      $tip.addClass('fade')
+    }
+
+    placement = typeof this.options.placement == 'function' ?
+      this.options.placement.call(this, $tip[0], this.$element[0]) :
+      this.options.placement
+
+    inside = /in/.test(placement)
+
+    $tip
+      .remove()
+      .css({ top: 0, left: 0, display: 'block' })
+      .appendTo(inside ? this.$element : document.body)
+
+    pos = this.getPosition(inside)
+
+    actualWidth = $tip[0].offsetWidth
+    actualHeight = $tip[0].offsetHeight
+
+    switch (inside ? placement.split(' ')[1] : placement) {
+      case 'bottom':
+      tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
+      break
+      case 'top':
+      tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
+      break
+      case 'left':
+      tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth - 50}
+      break
+      case 'right':
+      tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width + 50}
+      break
+    }
+
+    $tip
+      .css(tp)
+      .addClass(placement)
+      .addClass('in')
+    }
+  }
+
+  , setContent: function () {
+    var $tip = this.tip()
+    , title = this.getTitle()
+
+    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
+    $tip.removeClass('fade in top bottom left right')
+  }
+
+  , hide: function () {
+    var that = this
+    , $tip = this.tip()
+
+    $tip.removeClass('in')
+
+    function removeWithAnimation() {
+    var timeout = setTimeout(function () {
+      $tip.off($.support.transition.end).remove()
+    }, 500)
+
+    $tip.one($.support.transition.end, function () {
+      clearTimeout(timeout)
+      $tip.remove()
+    })
+    }
+
+    $.support.transition && this.$tip.hasClass('fade') ?
+    removeWithAnimation() :
+    $tip.remove()
+
+    return this
+  }
+
+  , fixTitle: function () {
+    var $e = this.$element
+    if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
+    $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
+    }
+  }
+
+  , hasContent: function () {
+    return this.getTitle()
+  }
+
+  , getPosition: function (inside) {
+    return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
+    width: this.$element[0].offsetWidth
+    , height: this.$element[0].offsetHeight
+    })
+  }
+
+  , getTitle: function () {
+    var title
+    , $e = this.$element
+    , o = this.options
+
+    title = $e.attr('data-original-title')
+    || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
+
+    return title
+  }
+
+  , tip: function () {
+    return this.$tip = this.$tip || $(this.options.template)
+  }
+
+  , validate: function () {
+    if (!this.$element[0].parentNode) {
+    this.hide()
+    this.$element = null
+    this.options = null
+    }
+  }
+
+  , enable: function () {
+    this.enabled = true
+  }
+
+  , disable: function () {
+    this.enabled = false
+  }
+
+  , toggleEnabled: function () {
+    this.enabled = !this.enabled
+  }
+
+  , toggle: function () {
+    this[this.tip().hasClass('in') ? 'hide' : 'show']()
+  }
+
+  , destroy: function () {
+    this.hide().$element.off('.' + this.type).removeData(this.type)
+  }
+
+  }
+
+
+ /* TOOLTIP PLUGIN DEFINITION
+  * ========================= */
+
+  $.fn.tooltip = function ( option ) {
+  return this.each(function () {
+    var $this = $(this)
+    , data = $this.data('tooltip')
+    , options = typeof option == 'object' && option
+    if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
+    if (typeof option == 'string') data[option]()
+  })
+  }
+
+  $.fn.tooltip.Constructor = Tooltip
+
+  $.fn.tooltip.defaults = {
+  animation: true
+  , placement: 'top'
+  , selector: false
+  , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
+  , trigger: 'hover'
+  , title: ''
+  , delay: 0
+  , html: true
+  }
+
+}(window.jQuery);
+
diff --git a/webdoc/robots.txt b/webdoc/robots.txt
new file mode 100644
index 0000000..9662fc4
--- /dev/null
+++ b/webdoc/robots.txt
@@ -0,0 +1,2 @@
+User-agent: *
+Disallow: / 
diff --git a/webdoc/server.asmx b/webdoc/server.asmx
deleted file mode 100644
index 1967a4b..0000000
--- a/webdoc/server.asmx
+++ /dev/null
@@ -1 +0,0 @@
-<%@ WebService Language="c#" Codebehind="server.cs" Class="Monodoc.Contributions" %>
diff --git a/webdoc/server.cs b/webdoc/server.cs
deleted file mode 100644
index d026cb2..0000000
--- a/webdoc/server.cs
+++ /dev/null
@@ -1,366 +0,0 @@
-//
-// Monodoc server
-//
-// Author:
-//   Miguel de Icaza (miguel at ximian.com)
-//
-
-using System;
-using System.Collections;
-using System.IO;
-using System.Web.Mail;
-using System.Web.Services;
-using System.Web.Services.Protocols;
-using System.Data;
-using ByteFX.Data.MySqlClient;
-using System.Xml;
-
-namespace Monodoc {
-	[WebServiceAttribute (Description="Web service for the MonoDoc contribution system")]
-	public class Contributions : System.Web.Services.WebService
-	{
-		const string basedir = "/home/contributions/";
-		//const string basedir = "/tmp/contributions/";
-		static string connection_string;
-		
-		static Contributions ()
-		{
-			using (StreamReader sr = new StreamReader (File.OpenRead ("connection.string"))){
-				connection_string = sr.ReadLine ();
-				Console.WriteLine ("Connection: " + connection_string);
-			}
-		}
-		
-                private IDbConnection GetConnection() 
-                {
-    			return new MySqlConnection(connection_string);
-                }
-
-                private MySqlParameter CreateParameter(string name, object value)
-                {
-                        return new MySqlParameter (name, value);
-                }
-
-		static void mail (string recipient, string body)
-		{
-			MailMessage m = new MailMessage ();
-			m.From = "mono-docs-list at ximian.com";
-			m.To = recipient;
-			m.Subject = "Your Monodoc passkey";
-			m.Body = String.Format ("\n\nWelcome to the Mono Documentation Effort,\n\n" + 
-						"This is your passkey for contributing to the Mono Documentation effort:\n " +
-						"       {0}\n\n" +
-						"The Mono Documentation Team (mono-docs-list at ximian.com)", body);
-			
-			SmtpMail.SmtpServer = "localhost";
-			SmtpMail.Send (m);
-		}
-
-		//
-		// 0  => OK to send contributions.
-		// -1 => Invalid version
-		//
-		[WebMethod(Description="Check the client/server version;  0 means that the server can consume your data")]
-		public int CheckVersion (int version)
-		{
-			if (version == 1)
-				return 0;
-			return -1;
-		}
-		
-		//
-		// Return codes:
-		//    -3 invalid characters in login
-		//    -2 Login already registered, password resent.
-		//    -1 Generic error
-		//     0 password mailed
-		//
-		[WebMethod(Description="Requests a registration for a login")]
-		public int Register (string login)
-		{
-			if (login.IndexOf ("'") != -1)
-				return -3;
-				
-                        IDbConnection conn = GetConnection();
-			conn.Open();
-                        try 
-                        {
-                                IDbCommand cmd = conn.CreateCommand();
-                                cmd.CommandText = "select password from person where name=@login";
-                                cmd.Parameters.Add( CreateParameter("@login", login));
-				IDataReader reader = cmd.ExecuteReader ();
-
-				if (reader.Read ()){
-					string password = (string) reader ["password"];
-					mail (login, password);
-					reader.Close ();
-					return -2;
-				}
-				reader.Close ();
-				Random rnd = new Random ();
-				int pass = rnd.Next ();
-				cmd.CommandText = "INSERT INTO person (name, password, last_serial) VALUES " +
-                                                  "(@name, @password, 0)";
-                                cmd.Parameters.Add( CreateParameter("@name",login));
-                                cmd.Parameters.Add( CreateParameter("@password",pass));
-
-                                cmd.ExecuteNonQuery ();
-				mail (login, pass.ToString ());
-				
-				return 0;
-			} catch (Exception e) {
-				Console.Error.WriteLine (e);
-			} finally {
-				conn.Close ();
-			}
-			return -1;
-		}
-			
-		[WebMethod (Description="Returns the latest serial number used for a change on the server")]
-		public int GetSerial (string login, string password)
-		{
-                        IDbConnection conn = GetConnection();
-			conn.Open();
-                        try 
-                        {
-                                IDbCommand cmd = conn.CreateCommand();
-                                cmd.CommandText = "select last_serial from person where name=@login and password=@password";
-                                cmd.Parameters.Add( CreateParameter("@login", login));
-                                cmd.Parameters.Add( CreateParameter("@password", password));
-                                
-                                object r = cmd.ExecuteScalar();
-				if (r != null){
-					Console.Error.WriteLine (r);
-					return (int) r;
-				}
-                                return -1;
-                        } catch (Exception e){
-				Console.Error.WriteLine ("Exception" + e);
-			} finally {
-                                conn.Close();
-                        }
-                        return -1;
-  		}
-
-		// -1 Generic error.
-		// -2 Erroneous XML
-		int a=1;
-		[WebMethod (Description="Submits a GlobalChangeSet as a contribution")]
-		public int Submit (string login, string password, XmlNode node)
-		{
-			IDbConnection conn = GetConnection();
-			conn.Open();
-			try {
-				IDbCommand cmd = conn.CreateCommand();
-                                cmd.CommandText = "select * from person where name=@login and password=@password";
-                                cmd.Parameters.Add( CreateParameter("@login", login));
-                                cmd.Parameters.Add( CreateParameter("@password", password));
-
-				IDataReader reader = cmd.ExecuteReader ();
-				
-				int ret_val = -1;
-				
-				if (reader.Read()){
-					int id = (int)reader["person_id"]; 
-					int serial = (int)reader["last_serial"]; 
-					reader.Close ();
-					
-					//
-					// Validate the XML
-					//
-					XmlDocument d = new XmlDocument ();
-					d.AppendChild (d.ImportNode (node, true));
-					XmlNodeReader r = new XmlNodeReader (d);
-					try {
-						object rr = GlobalChangeset.serializer.Deserialize (r);
-					} catch {
-						return -2;
-					}
-					
-					string dudebase = basedir + id;
-					Directory.CreateDirectory (dudebase);
-					
-					d.Save (dudebase + "/" + serial + ".xml");
-					IDbTransaction txn = conn.BeginTransaction();
-					try {
-						cmd.CommandText = "UPDATE person SET last_serial=@last_serial WHERE name=@name AND password=@pwd";
-						cmd.Parameters.Add( CreateParameter("@last_serial", serial+1));
-						cmd.Parameters.Add( CreateParameter("@name", login));
-						cmd.Parameters.Add( CreateParameter("@pwd", password));
-						cmd.ExecuteNonQuery ();
-
-						
-                                                cmd.CommandText = "INSERT INTO status (person_id, serial, status) VALUES (@id, @serial, 0)";
-                                                cmd.Parameters.Add( CreateParameter("@id",id));
-                                                cmd.Parameters.Add( CreateParameter("@serial",serial));
-						cmd.ExecuteNonQuery ();
-						
-						txn.Commit();
-					} catch (Exception e) {
-						Console.Error.WriteLine ("E: " + e);
-					}
-					
-					ret_val = serial+1;
-					return ret_val;
-				}
-				Console.Error.WriteLine ("Error, going: 4");
-				return -4;
-			} catch (Exception e) {
-				Console.Error.WriteLine ("Failure in Submit: " + e);
-				return -3;
-			} finally {
-				conn.Close ();
-			}
-		}
-
-		bool IsAdmin (IDbConnection conn, string login, string password)
-		{
-			IDbCommand cmd = conn.CreateCommand();
-                        cmd.CommandText = "select person_id,is_admin from person where name=@name and password=@pass";
-                        cmd.Parameters.Add( CreateParameter("@name",login));
-                        cmd.Parameters.Add( CreateParameter("@pass",password));
-                        
-			int person_id = -1;
-			bool is_admin = false;
-			using (IDataReader reader = cmd.ExecuteReader ()){
-				if (reader.Read ()){
-					person_id = (int) reader ["person_id"];
-					is_admin = ((int) reader ["is_admin"]) == 1;
-				} else
-					return false;
-			}
-			if (person_id == -1 || is_admin == false)
-				return false;
-
-			return true;
-		}
-		
-		[WebMethod (Description="Obtains the list of pending contributions")]
-		public PendingChange [] GetPendingChanges (string login, string password)
-		{
-			IDbConnection conn = GetConnection();
-			conn.Open ();
-			
-			try {
-				if (!IsAdmin (conn, login, password)){
-					return new PendingChange [0];
-				}
-				
-				IDbCommand cmd = conn.CreateCommand();
-				ArrayList results = new ArrayList ();
-				cmd.CommandText = "select status.person_id, serial, person.name from status, person where status=0 and person.person_id = status.person_id";
-				using (IDataReader reader = cmd.ExecuteReader ()){
-					while (reader.Read ()){
-						results.Add (new PendingChange ((string) reader ["name"], (int) reader ["person_id"], (int) reader ["serial"]));
-					}
-				}
-
-				PendingChange [] ret = new PendingChange [results.Count];
-				results.CopyTo (ret);
-				return ret;
-			} catch (Exception e){
-				Console.Error.WriteLine (e);
-				return null;
-			} finally {
-				conn.Close ();
-			}
-		}
-
-		[WebMethod (Description="Obtains a change set for a user")]
-		public XmlNode FetchContribution (string login, string password, int person_id, int serial)
-		{
-			IDbConnection conn = GetConnection ();
-			conn.Open ();
-			try {
-				if (!IsAdmin (conn, login, password))
-					return null;
-
-				XmlDocument d = new XmlDocument ();
-				string fname = basedir + person_id + "/" + serial + ".xml";
-				d.Load (fname);
-				return d.FirstChild;
-			} finally {
-				conn.Close ();
-			}
-		}
-
-		[WebMethod (Description="ADMIN: Obtains the number of pending commits")]
-		public Status GetStatus (string login, string password)
-		{
-			IDbConnection conn = GetConnection ();
-			conn.Open ();
-			try {
-				IDbCommand cmd = conn.CreateCommand();
-                                cmd.CommandText = "select * from person where name=@name and password=@pass";
-                                cmd.Parameters.Add( CreateParameter("@name",login));
-                                cmd.Parameters.Add( CreateParameter("@pass",password));
-                                
-				IDataReader reader = cmd.ExecuteReader ();
-				int id = -1;
-				
-				if (reader.Read())
-					id = (int)reader["person_id"]; 
-				reader.Close ();
-				if (id == -1)
-					return null;
-
-				Status s = new Status ();
-				
-				cmd.CommandText = String.Format ("select count(*) from status where person_id='{0}'", id);
-				s.Contributions =  (int) cmd.ExecuteScalar ();
-				cmd.CommandText = String.Format ("select count(*) from status where person_id='{0}' and status='0'", id);
-				s.Pending = (int) cmd.ExecuteScalar ();
-				cmd.CommandText = String.Format ("select count(*) from status where person_id='{0}' and status='1'", id);
-				s.Commited = (int) cmd.ExecuteScalar ();
-
-				return s;
-			} finally {
-				conn.Close ();
-			}
-		}
-
-		[WebMethod (Description="ADMIN: Updates the status of a contribution")]
-		public void UpdateStatus (string login, string password, int person_id, int contrib_id, int status)
-		{
-			IDbConnection conn = GetConnection();
-			conn.Open ();
-			
-			try {
-				if (!IsAdmin (conn, login, password))
-					return;
-				
-				IDbCommand cmd = conn.CreateCommand();
-				cmd.CommandText = "update status set status=@status WHERE person_id=@PID AND serial=@ser";
-				cmd.Parameters.Add (CreateParameter ("@status", status));
-				cmd.Parameters.Add (CreateParameter ("@PID", person_id));
-				cmd.Parameters.Add (CreateParameter ("@ser", contrib_id));
-				cmd.ExecuteNonQuery ();
-			} finally {
-				conn.Close ();
-			}
-		}
-	}
-
-	public class Status {
-		public int Contributions;
-		public int Commited;
-		public int Pending;
-	}
-	
-	public class PendingChange {
-		public string Login;
-		public int ID;
-		public int Serial;
-		
-		public PendingChange (string login, int person_id, int serial)
-		{
-			Login = login;
-			ID = person_id;
-			Serial = serial;
-		}
-
-		public PendingChange ()
-		{
-		}
-	}
-}
diff --git a/webdoc/skins/mono-external/common-extension.css b/webdoc/skins/mono-external/common-extension.css
new file mode 100644
index 0000000..00f8b94
--- /dev/null
+++ b/webdoc/skins/mono-external/common-extension.css
@@ -0,0 +1,333 @@
+body {
+	background-color: #ffffff;
+	margin: 0px;
+	padding: 0px;
+	font-family: Verdana, sans-serif !important;
+	overflow-x: hidden;
+}
+
+.HeaderTable {
+	border: 2px solid #99aadd;
+}
+
+body, td, th {
+	font-family: Verdana, sans-serif; font-size: 12px;
+	color: black;
+}
+
+.SignatureTable, .MemberSignatureTable {
+	border: 1px solid #DDDDDD;
+}
+
+.Footer {
+	border-top: 2px solid #E5E5E5;
+	padding-left: 1em;
+}
+
+.Footer hr {
+	display: none;	
+}
+
+h1, h2, h3, h4 {
+	font-family: Verdana,sans-serif;
+	font-weight: bold;
+}
+
+h1 {
+}
+
+h3 {
+}
+
+h4 {
+}
+
+.MasterNamespaceLink a {
+	font-weight: bold;
+	text-decoration: none;
+}
+.MasterNamespaceDescription {
+	margin-left: 2em;
+}
+
+img {
+	border: 0;
+	vertical-align: top;
+}
+
+.copyright {
+	border:1px solid black;
+	padding-left:5px;
+	padding-right:5px;
+	padding-top:5px;
+	padding-bottom:5px;
+	background-color:#BEBAA8;
+	font-size:9px;
+	margin-top: 10pt;
+	margin-left: -15pt;
+	margin-right: -15pt;
+}
+
+.important {
+	padding-left:2px;
+	padding-right:2px;
+	padding-top:2px;
+	padding-bottom:2px;
+	background-color:#000000;
+	color:#ffffff;
+}
+
+.menu {
+	font-family:Arial, Verdana;
+	font-size:12px;
+	font-weight:bold;
+}
+
+.navbar{
+	color:black;
+	font-family:Arial, Verdana;
+	font-size:10px;
+	border-bottom:1px solid #000000;
+	border-left:1px solid black;
+	border-right:1px solid black;
+	background-color:#efefef;
+	padding-left:2px;
+	padding-right:2px;
+	padding-top:2px;
+	padding-bottom:2px;
+	margin-left: -15pt;
+	margin-right: -15pt;
+}
+	
+.topframe {
+	background-image:url(images/backbig.png);
+	border:1px solid #000000;
+	background-color:#BEBAA8;
+	margin-left: -15pt;
+	margin-right: -15pt;
+}
+
+.chapter {
+	font-size:14px;
+	font-weight:bold;
+	color:#444444;
+	padding-left:0px;
+	padding-right:0px;
+	padding-top:0px;
+	padding-bottom:0px;
+}
+
+.table {
+	padding-left:2px;
+	padding-right:2px;
+	padding-top:0px;
+	padding-bottom:0px;
+	background-color:#efefef;
+	border:1px solid #c0c0c0;
+}
+
+.elementOn {
+	color:#a40000;
+}
+
+.element {
+	color:#0000a4;
+}
+
+.code {
+	font-size: small;
+	font-family: "Courier New", Courier;
+	line-height:110%;
+}
+
+.box {
+	padding:15px;
+	font-size: small;
+	background:whitesmoke;
+	border: solid 1px silver;
+}
+
+.console {
+	border-style: solid; 
+	background: whitesmoke; 
+	border-width: 1px; 
+	padding: 2pt; 
+	margin:15px;
+}
+
+.headerlink {
+	vertical-align:bottom;
+}
+
+a {
+	color: blue;
+}
+a:visited {
+	color: blue; 
+}
+
+td a {
+	text-decoration: none;
+}
+
+.HeaderTable a {
+	color: black;
+	text-decoration: underline;
+}
+
+div.Content {
+	margin-right: 1em;
+}
+
+div.related ul {
+	list-type: none;
+	padding-left: 1em;
+}
+
+.native-browser {
+	font-family: "Lucida Grande", Geneva, Helvetica, Arial, Verdana, Sans-Serif;
+	display: inline-block;
+	color: #333 !important;
+	text-decoration:none !important;
+	font-size: 88%;
+	padding: 4px 10px 4px 10px;
+	border: 1px solid silver;
+	border-bottom-color: #bcbcbc;
+	border-radius: 3px;
+	background: #f2f2f2;
+}
+
+.native-browser:hover {
+	background: #ddd;
+	color: black;
+}
+
+.native-browser img {
+	vertical-align: center;
+	margin-right: 3px;
+}
+
+body, div {
+    margin: 0;
+    padding: 0;
+}
+img.toolbarsep {
+    border: 0 none;
+    margin-bottom: 1px;
+    margin-top: 1px;
+    padding-bottom: 3px;
+    padding-top: 3px;
+    vertical-align: middle;
+}
+img.toolbar {
+    border: 0 none;
+    margin: 1px;
+    padding: 3px;
+    vertical-align: middle;
+}
+img.toolbar:hover {
+    border-color: white #B1A598 #B1A598 white;
+    border-left: 1px solid white;
+    border-right: 1px solid #B1A598;
+    border-style: solid;
+    border-width: 1px;
+    margin: 0;
+}
+img.toolbar:active {
+    border-color: #B1A598 white white #B1A598;
+    border-left: 1px solid #B1A598;
+    border-right: 1px solid white;
+    border-style: solid;
+    border-width: 1px;
+}
+#login {
+    float: right;
+    padding: 5px;
+    position: fixed;
+    right: 0;
+    top: 0;
+}
+#rightSide {
+    float: right;
+    padding: 5px;
+    position: relative;
+    right: 0;
+}
+#banner {
+    background: url("/mdocimages/headerbg.png") no-repeat scroll 100% 50% #679EF1;
+    border-bottom: 1px dotted #3363BD;
+    height: 40px;
+}
+#header {
+    color: black;
+    height: 40px;
+    margin-bottom: 0;
+    padding: 0 0 0 15px;
+    position: relative;
+    width: 50%;
+}
+#header h1 {
+    color: white;
+    font-family: arial,helvetica,verdana,sans-serif;
+    font-size: 22px;
+    font-weight: bold;
+    line-height: 1.8em;
+    margin: 0;
+}
+body, div {
+    border: 0 none;
+    font: inherit;
+    margin: 0;
+    padding: 0;
+    vertical-align: baseline;
+}
+html, body {
+    height: 100%;
+}
+#side {
+    border-right: 1px solid black;
+    float: left;
+    height: 93%;
+    overflow: auto;
+    width: 20%;
+}
+#main_part {
+    height: 100%;
+}
+#content_frame {
+    height: 94%;
+    width: 99.8%;
+}
+#content_frame_wrapper {
+    float: right;
+    height: 100%;
+    margin-right: 5px;
+    margin-top: 10px;
+    width: 79%;
+}
+#sidebar_container {
+    margin-top: 10px;
+    font-size: 8pt !important;
+}
+.tree-label a {
+    color: black !important;
+}
+.tree-label a:hover {
+    background: none repeat scroll 0 0 #DFDFDF !important;
+    border: 1px solid grey !important;
+    color: black !important;
+    padding: 1px !important;
+}
+.tree-label-selected a, .tree-label-selected a:hover {
+    background: none repeat scroll 0 0 highlight !important;
+    color: highlighttext !important;
+}
+#rightSide {
+    font-size: 8pt;
+}
+#fsearch_companion {
+    font-size: 8pt;
+}
+#fsearch_window {
+    font-size: 8pt;
+}
diff --git a/webdoc/skins/mono-external/footer.html b/webdoc/skins/mono-external/footer.html
new file mode 100644
index 0000000..04f5b84
--- /dev/null
+++ b/webdoc/skins/mono-external/footer.html
@@ -0,0 +1 @@
+</div>
diff --git a/webdoc/skins/mono-external/header.html b/webdoc/skins/mono-external/header.html
new file mode 100644
index 0000000..018532a
--- /dev/null
+++ b/webdoc/skins/mono-external/header.html
@@ -0,0 +1,13 @@
+<div id="banner" style="color: rgb(255, 255, 255);">
+<div id="rightSide">
+	<label for="search">Search: </label>
+	<input id="fsearch" type="search" style="width: 19em; margin-right: 10px;" placeholder="Enter search request">
+	<a onclick="document.getElementById ('content_frame').contentWindow.print ()" href="#">
+		<img class="toolbar" width="24" height="24" title="Print this document" alt="Print" src="/skins/mono-external/images/print.png">
+	</a>
+</div>
+	<div id="header">
+		<h1>Mono Documentation</h1>
+	</div>
+<div id="main_part">
+	<div id ="sidebar_container"></div>
diff --git a/webdoc/skins/mono-external/images/link.png b/webdoc/skins/mono-external/images/link.png
new file mode 100644
index 0000000..a5beda8
Binary files /dev/null and b/webdoc/skins/mono-external/images/link.png differ
diff --git a/webdoc/images/mono-logo.png b/webdoc/skins/mono-external/images/mono-logo.png
similarity index 100%
rename from webdoc/images/mono-logo.png
rename to webdoc/skins/mono-external/images/mono-logo.png
diff --git a/webdoc/images/mono_logo_g.gif b/webdoc/skins/mono-external/images/mono_logo_g.gif
similarity index 100%
rename from webdoc/images/mono_logo_g.gif
rename to webdoc/skins/mono-external/images/mono_logo_g.gif
diff --git a/webdoc/skins/mono-external/images/native-browser-icon.png b/webdoc/skins/mono-external/images/native-browser-icon.png
new file mode 100644
index 0000000..e037505
Binary files /dev/null and b/webdoc/skins/mono-external/images/native-browser-icon.png differ
diff --git a/webdoc/skins/mono-external/images/print.png b/webdoc/skins/mono-external/images/print.png
new file mode 100644
index 0000000..08aecc8
Binary files /dev/null and b/webdoc/skins/mono-external/images/print.png differ
diff --git a/webdoc/skins/mono-external/images/slide-toggle.png b/webdoc/skins/mono-external/images/slide-toggle.png
new file mode 100644
index 0000000..2fc9d0f
Binary files /dev/null and b/webdoc/skins/mono-external/images/slide-toggle.png differ
diff --git a/webdoc/skins/mono-external/images/spinner.gif b/webdoc/skins/mono-external/images/spinner.gif
new file mode 100644
index 0000000..3288d10
Binary files /dev/null and b/webdoc/skins/mono-external/images/spinner.gif differ
diff --git a/webdoc/tables.sql b/webdoc/tables.sql
deleted file mode 100644
index 2e95194..0000000
--- a/webdoc/tables.sql
+++ /dev/null
@@ -1,21 +0,0 @@
-use monodoc;
-drop table person;
-drop table status;
-create table person (
-	name varchar (80) not null,
-	password varchar (20) not null,
-	person_id int not null primary key auto_increment,
-	last_serial int not null,
-	last_update int not null,
-	is_admin int not null
-);
-
-create table status (
-	person_id int not null,
-	serial int not null,
-	status int not null
-);
-
-insert into person (name, password, last_serial, is_admin) values ('miguel at ximian.com', 'login1', 0, 1);
-insert into person (name, password, last_serial) values ('nat at nat.org', 'login2', 0);
-
diff --git a/webdoc/views/common.css b/webdoc/views/common.css
new file mode 100644
index 0000000..d7abcff
--- /dev/null
+++ b/webdoc/views/common.css
@@ -0,0 +1,38 @@
+/*****Common.css*****/
+/*bare-bones css for most layouts*/
+body {
+  padding: 0;
+  height: 100%;
+}
+html {
+  padding: 0;
+  margin: 0 auto;
+  height: 100%;
+}
+.code {
+  font-family: "Courier New", Courier;
+}
+.table {
+        padding-left:2px;
+        padding-right:2px;
+        padding-top:0px;
+        padding-bottom:0px;
+}
+div.Content {
+        margin-right: 1em;
+}
+iframe {
+        margin: 0;
+        padding: 0;
+        border: 0;
+        font-size: 100%;
+        font: inherit;
+        vertical-align: baseline;
+}
+#content_frame {
+    width: 100%;
+    height: 100%;
+}
+#main_part {
+    height: 100%;
+}
diff --git a/webdoc/views/common.js b/webdoc/views/common.js
new file mode 100644
index 0000000..887b731
--- /dev/null
+++ b/webdoc/views/common.js
@@ -0,0 +1,46 @@
+$(function () {
+//a hack for sizing our iframe correctly
+/*	var getHeight = function () {
+	<!--
+	var viewportwidth;
+	var viewportheight;
+	// the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
+	if (typeof window.innerWidth != 'undefined')
+	{
+		viewportwidth = window.innerWidth,
+		viewportheight = window.innerHeight
+	}
+	// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
+	else if (typeof document.documentElement != 'undefined'
+		&& typeof document.documentElement.clientWidth !=
+		'undefined' && document.documentElement.clientWidth != 0)
+	{
+		viewportwidth = document.documentElement.clientWidth,
+		viewportheight = document.documentElement.clientHeight
+	}
+	// older versions of IE
+	else
+	{
+		viewportwidth = document.getElementsByTagName('body')[0].clientWidth,
+		viewportheight = document.getElementsByTagName('body')[0].clientHeight
+	}
+	return viewportheight;
+	//-->
+	}
+
+	var main_part = $('#main_part');
+	var content_frame = main_part.find('#content_frame');
+	var resize_mainpart = function () {
+//		main_part.height (getHeight() - 75);
+//		main_part.children('#side').css ('height', '100%');
+		content_frame.css ('height', '97.5%');
+	}
+	
+	var resizeTimer;
+	$(window).resize(function() {
+		clearTimeout(resizeTimer);
+		resizeTimer = setTimeout(resize_mainpart, 100);
+	});
+	
+	resize_mainpart ();*/
+});
diff --git a/webdoc/views/images/favicon.ico b/webdoc/views/images/favicon.ico
new file mode 100644
index 0000000..d18044a
Binary files /dev/null and b/webdoc/views/images/favicon.ico differ
diff --git a/webdoc/views/images/native-browser-icon.png b/webdoc/views/images/native-browser-icon.png
new file mode 100644
index 0000000..e037505
Binary files /dev/null and b/webdoc/views/images/native-browser-icon.png differ
diff --git a/webdoc/views/reset.css b/webdoc/views/reset.css
new file mode 100644
index 0000000..f160318
--- /dev/null
+++ b/webdoc/views/reset.css
@@ -0,0 +1,49 @@
+
+
+    /**
+    * Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/)
+    * http://cssreset.com
+    */
+    html, body, div, span, applet, object, iframe,
+    h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+    a, abbr, acronym, address, big, cite, code,
+    del, dfn, em, img, ins, kbd, q, s, samp,
+    small, strike, strong, sub, sup, tt, var,
+    b, u, i, center,
+    dl, dt, dd, ol, ul, li,
+    fieldset, form, label, legend,
+    table, caption, tbody, tfoot, thead, tr, th, td,
+    article, aside, canvas, details, embed,
+    figure, figcaption, footer, header, hgroup,
+    menu, nav, output, ruby, section, summary,
+    time, mark, audio, video {
+    margin: 0;
+    padding: 0;
+    border: 0;
+    font-size: 100%;
+    font: inherit;
+    vertical-align: baseline;
+    }
+    /* HTML5 display-role reset for older browsers */
+    article, aside, details, figcaption, figure,
+    footer, header, hgroup, menu, nav, section {
+    display: block;
+    }
+    body {
+    line-height: 1;
+    }
+    ol, ul {
+    list-style: none;
+    }
+    blockquote, q {
+    quotes: none;
+    }
+    blockquote:before, blockquote:after,
+    q:before, q:after {
+    content: '';
+    content: none;
+    }
+    table {
+    border-collapse: collapse;
+    border-spacing: 0;
+    }
diff --git a/webdoc/web.config b/webdoc/web.config
index 1cef88e..0951f11 100644
--- a/webdoc/web.config
+++ b/webdoc/web.config
@@ -8,6 +8,8 @@
     </configSections>
     <system.web>
         <customErrors mode="Off"/>
+		<httpRuntime requestValidationMode="2.0" />
+		<pages validateRequest="false" />
 	<authentication mode= "Forms">
 	</authentication>
 	<!-- Avoid compilation errors when the Mono.Contributions.dll assembly is not found. The assembly is only on the go-mono.com server -->
@@ -22,18 +24,11 @@
     </mono.aspnet>
 
     <appSettings>
-	<add key="MonoServerDefaultIndexFiles"
-	     value="index.aspx, Default.aspx, default.aspx, index.html, index.htm" />
+	<add key="Title" value="Xamarin API Documentation" />
+	<add key="MonoServerDefaultIndexFiles" value="index.aspx, Default.aspx, default.aspx, index.html, index.htm" />
+	<add key="MonodocRootDir" value="/mono/lib/monodoc-ios/" />
+        <add key="Plugins" value="plugins.def" />
     </appSettings>
-    <location path="edit.aspx">
-        <system.web>
-	    <authentication mode="Forms">
-		<forms name=".MONOAUTH" loginUrl="login.aspx"/>
-	    </authentication>
-	    <authorization>
-		<deny users="?" />
-	    </authorization>
-        </system.web>
-    </location>
+    
 </configuration>
 
diff --git a/webdoc/wiki2ecmahelper.xsl b/webdoc/wiki2ecmahelper.xsl
deleted file mode 100644
index 4039cd9..0000000
--- a/webdoc/wiki2ecmahelper.xsl
+++ /dev/null
@@ -1,70 +0,0 @@
-<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-	<!-- default rule -->
-	<xsl:template match="*">
-		<xsl:copy>
-			<xsl:copy-of select="@*" />
-			<xsl:apply-templates />
-		</xsl:copy>
-	</xsl:template>
-
-	<xsl:template match="code">
-		<xsl:element name="c"><xsl:apply-templates /></xsl:element>
-	</xsl:template>
-
-	<xsl:template match="div">
-		<xsl:choose>
-			<xsl:when test="@class = 'example'">
-				<example><xsl:apply-templates /></example>
-			</xsl:when>
-			<xsl:when test="@class = 'behavior'">
-				<block type="behavior"><xsl:apply-templates /></block>
-			</xsl:when>
-			<xsl:when test="@class = 'default'">
-				<block type="default"><xsl:apply-templates /></block>
-			</xsl:when>
-			<xsl:when test="@class = 'example-block'">
-				<block type="example"><xsl:apply-templates /></block>
-			</xsl:when>
-			<xsl:when test="@class = 'overrides'">
-				<block type="overrides"><xsl:apply-templates /></block>
-			</xsl:when>
-			<xsl:when test="@class = 'usage'">
-				<block type="usage"><xsl:apply-templates /></block>
-			</xsl:when>
-			<xsl:otherwise>
-				<xsl:copy-of select="." />
-			</xsl:otherwise>
-		</xsl:choose>
-	</xsl:template>
-
-	<xsl:template match="table">
-		<list type="table">
-			<xsl:if test="tr[1]/th">
-				<listheader><item>
-				<term>
-					<xsl:apply-templates select="tr[1]/th[1]" />
-				</term>
-				<xsl:for-each select="tr[1]/th[position() > 1]">
-					<description>
-						<xsl:apply-templates />
-					</description>
-				</xsl:for-each>
-				</item></listheader>
-			</xsl:if>
-			<xsl:for-each select="tr">
-				<item>
-				<term>
-					<xsl:apply-templates select="td[1]" />
-				</term>
-				<xsl:for-each select="td[position() > 1]">
-					<description>
-						<xsl:apply-templates />
-					</description>
-				</xsl:for-each>
-				</item>
-			</xsl:for-each>
-		</list>
-	</xsl:template>
-
-</xsl:transform>
diff --git a/webdoc/xtree/images/msdn2/Lminus.gif b/webdoc/xtree/images/msdn2/Lminus.gif
deleted file mode 100644
index 0fae6ac..0000000
Binary files a/webdoc/xtree/images/msdn2/Lminus.gif and /dev/null differ
diff --git a/webdoc/xtree/images/msdn2/Lplus.gif b/webdoc/xtree/images/msdn2/Lplus.gif
deleted file mode 100644
index 092e97e..0000000
Binary files a/webdoc/xtree/images/msdn2/Lplus.gif and /dev/null differ
diff --git a/webdoc/xtree/images/msdn2/Tminus.gif b/webdoc/xtree/images/msdn2/Tminus.gif
deleted file mode 100644
index 3f19194..0000000
Binary files a/webdoc/xtree/images/msdn2/Tminus.gif and /dev/null differ
diff --git a/webdoc/xtree/images/msdn2/Tplus.gif b/webdoc/xtree/images/msdn2/Tplus.gif
deleted file mode 100644
index 7a7af25..0000000
Binary files a/webdoc/xtree/images/msdn2/Tplus.gif and /dev/null differ

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mono/packages/mono-tools.git



More information about the Pkg-mono-svn-commits mailing list